`

被我抛弃的开源框架

阅读更多
1. GWT ,它是个javascript的编译器,生成的是浏览器端的HTML和js,但他和服务器端的交互让人痛苦,他有自己的调试器,但集合到服务器端代码一起发布调试,真是让人痛苦。生成垃圾文件多,执行速度慢,总之,它带来了多少快感,就带来了多少痛苦。(补充:他可以ajax,但它生成的只是静态html+js页面,是静态的,想让它接受参数是不可能的。当然我曾试过把他的html再变成jsp接受参数,将接受到的信息放到html的head meta中,然后再用GWT的DOM在meta中取信息,再用RPC到服务器上取信息填入各个元素,上帝饶恕我的SB吧。)

2. Tapestry 5,我试用了两周。帮了不少忙,把GWT的残局收拾了,把当初用GWT写的东西彻底重写了一遍。但渐渐也发现了它的不爽。还真是不太好表达,总体感觉,它太霸道了,封装了一切。事实上它对静态资源(html,js)的支持并不够好。对页面跳转,支持也不够好,ActionLink和PageLink只能跳到他自己的页面,必须自己写个组件实现动态的asdfa,。国际化的解决办法是自动根据request头分析出来源地,自动选择匹配的语言,乍看很cool,事实上又是霸道的表现,如果用户想自定义语言,无法做到。就连中国的开发者想看看自己开发出的英文版页面是什么样子都会很麻烦。他的角色不再是助手,而是Boss,我想大家都不希望助手成为Boss。

3. Struts 1.x,说她被抛弃,并不适合,因为我从未选择过她。曾N次下决心与她亲近,但她太麻烦了,磨磨唧唧,但始终无法了解她的心,最终与她的缘分还没有开始就结束了。

4.Grails,我没有完整的玩过Grails,我只是稍稍了解了一下,但我已经可以断言,它不会有太大的灵活性。基于脚本语言,我一直认为脚本语言的用处应该是热修改,而不是写源代码。所谓热修改,比如魔兽争霸3的RPG地图,不可能让玩家用C语言写地图,但也不可能让开发者用lua来开发WAR3。用户的需求中有个经常变动的公式,这时可以用脚本。用脚本语言写源代码!!!我不想多说。

5.ROR。RoR开发的javaeye,很不错啊,为什么抛弃RoR。也许是成见吧,理由同上。但RoR确是给快速开发开辟出一条新的模式。它的优点是他的开发模式,而不是Ruby或Rails。仅仅因为他模式的优秀,而选择一项建立在脚本语言上的框架,颇有委曲求全的感觉。

寻求一条优秀的开发模式,真是不简单。
接下来打算了解webwork2和velocity,希望不要让我失望。
分享到:
评论
35 楼 giscat 2007-03-22  
好有好的理由嘛
34 楼 kjhot 2007-03-22  
这样的帖子竟然也是良好帖?
33 楼 dengyin2000 2007-03-21  
关于你说的在tapestry中怎样改变Locale你可以看看 http://tapestry.apache.org/tapestry4/UsersGuide/localization.html#localization.changing

你了解在servlet中怎么做么? 说实话我没有做过国际化,但我依稀记得在HttpServletRequest HttpServletRequest中有对setLocale和getLocale的方法,然后在T4的USER GUIDE上找到了怎样改变T的locale,不知道这个是不是你说的问题。

引用
对页面跳转,支持也不够好,ActionLink和PageLink只能跳到他自己的页面,必须自己写个组件实现动态的asdfa,


我不清楚你说的是什么意思,你说的是这个意思嚒。我用any组件可以实现任意的html。
<a jwcid="@Any" herf="ognl:anyLinkURL"></a>


引用
比如你尝试让response返回一个文件下载,是不可能的,T5会抛出错误。
即便可以,也让人觉得太麻烦了,既然我需要inject response,何不直接用servlet,而要拐弯抹角使用T5呢?


从这个问题上我可以知道你应该是一个T的新手。用过T的都知道你需要使用T中的IEngineService去做的。你有看过tapestry自带的workbench 例子的Chart的例子嚒?可以看看这篇文章。http://dengyin2000.iteye.com/blog/47453

引用
但当我需要修改一个Pet的时候,怎么办,必须知道所要修改的Pet的id,GWT写的客户端代码是无法接受参数的,因为他是一个HTML而不是一个Servlet,而RemoteServiceServlet只是一个Service,只用来作RPC,他也不会返回一个GWT页面。
你会怎么解决?当页面需要接受参数时,GWT几乎是无能为力的,因为他是html,他只能在返回一个有动态效果的页面,而不会返回一个有动态内容的页面,也许我说的不是太明白。


说句实话,我真的没有听懂你说的。你有写过SWing么,你可以像写SWing一样写GWT。你也可以把ID传来传去。
32 楼 jasongreen 2007-03-21  
dengyin2000 写道:
引用
...

我不清楚你为什么这样说。TAPESTRY使用的时html模板,难道你不能直接用 么,或者用@Any。
...
我只是是可以inject httprequest的,你可以像在servlet中操作httprequest httpresponse一样,所以servlet中能实现的 T应该也一定行。
...
我现在在家里也在试着用gwt,很多人都说gwt生成的js很大,我看了下我的项目编译后,好像每个js大约在80多k左右,确实是比较大。而且项目中还没有多少东西。但是我喜欢gwt,因为我可以很方便的使用IDE中的refactor功能。太爽了。当你看见别人在javascript中收索时。现在公司的项目也是ajax项目,使用dojo,jsonrpc- java。我觉得我不会对javascript太陌生,但不强。我比较反感javascript的那种松散性,所以IDE的重构能够帮助我。当你编辑 java代码时, 我感觉对代码的控制会比写javascript强。LZ说道gwt 的rpc的交互很痛苦? 我并没有感觉到,现在我已经能够与spring整合了。请看我的这篇文章。http://www.iteye.com/topic/58084


T5,Any只生成了tag的id,context没有生成
T5确实可以inject request,response,但你只能得知request的语言,而不能决定T5所选择的语言。而且response不能象servlet的 response用,比如你尝试让response返回一个文件下载,是不可能的,T5会抛出错误。
即便可以,也让人觉得太麻烦了,既然我需要inject response,何不直接用servlet,而要拐弯抹角使用T5呢?

你可以将GWT与spring整合的确很强,但我注意到你的例子中,GWT的RemoteServiceServlet只有一个checkUser方法,也就上说这个Service还是比较简单的。

我以前用GWT正是使用这种方式做远程数据传输的,举个例子说明它的致命缺点:(不好意思,帖子中把这个缺点忘了说了,sorry)
比如有个Pet对象,通过Gwt创建Pet,very easy,写个EditPet.html,EditPet.java,PetServiceServlet,然后在EditPet.html提交的时候,将数据传给PetService,由PetService将Pet保存。
但当我需要修改一个Pet的时候,怎么办,必须知道所要修改的Pet的id,GWT写的客户端代码是无法接受参数的,因为他是一个HTML而不是一个Servlet,而RemoteServiceServlet只是一个Service,只用来作RPC,他也不会返回一个GWT页面。
你会怎么解决?当页面需要接受参数时,GWT几乎是无能为力的,因为他是html,他只能在返回一个有动态效果的页面,而不会返回一个有动态内容的页面,也许我说的不是太明白。简单的说,你每次访问MYGWT.html页面,都只能得到相同的页面,虽然他有丰富的动作,但这不是我们要的ajax。
GWT编译出的html不需要web容器,照样可以运行的,直接在本地硬盘上打开就可以运行,他可以ajax,但它只是静态页面
31 楼 ahuaxuan 2007-03-21  
说什么抛弃不抛弃的,楼主提出来的东西好多自己都不熟,只是走马观花的看了一下,比如说struts1.x,我在公司用了两年,觉得除了配置文件比较麻烦还是可以接受的,当然在用了一年半后我自己还是抛弃了它选择了webwork2,选webwork2不是因为它技术上有什么优点,只是认为它真的比较优雅,lz正好想要研究它,相信它不会让你失望
30 楼 rautinee 2007-03-21  
jvincent 写道
企业ERP应用还是Applet来的爽..


Applet?!!

你有没有遇到过客户机器配置很差的情况,applet跑起来那个慢。。。。

我们的客户上了用友的一套erp系统,前提要求是把公司的电脑硬件全部升级哈,幸亏人家是电信企业,有钱,换成我们公司肯定是不行的!
29 楼 somebody 2007-03-21  
个人还是觉得webwork不错,正在看struts2.
28 楼 cskysnew 2007-03-21  
struts2.0有空可以看看。
27 楼 giscat 2007-03-21  
towjzhou 写道
程序员的三种层次:
1.asp.net可视拖放代码.
2.java web设计模式堆代码.
3.ROR unix like轻松编程.


  大家都是混口饭吃,也没啥层次不层次的
    
26 楼 towjzhou 2007-03-21  
程序员的三种层次:
1.asp.net可视拖放代码.
2.java web设计模式堆代码.
3.ROR unix like轻松编程.
25 楼 zhlmmc 2007-03-21  
Java方面的框架真的是太多了,特别是view层的。前一段时间我做过一个比较,最后选择了wicket。可以看看我这篇文章http://www.zhlmmc.com/html/diary/showlog.vm?sid=408&log_id=6366
24 楼 giscat 2007-03-21  
xieke 写道
giscat,咱们真是不谋而合啊

  咱是为了解放生产力,用更少的时间捞更多的票票
      
23 楼 Cecily 2007-03-21  
还是根据项目规模来看用什么框架吧 规模一般的项目整那么复杂 把自己折腾够戗 还体现不出来框架的优势来
22 楼 kabbesy 2007-03-21  
我抛弃的
1、struct1.x
2、barracuda mvc + xmlc:我接触的第一个框架
3、avalon:被后来者淘汰了
4、Tapestry:搞2的时候不小心勾搭上的,真划不来
5、ibatis:老老实实走hibernate最好
21 楼 jackhlp 2007-03-21  
ROR的话,借用banq的一句话,如果系统一不小心做大了,如何去扩展?webwork2已经不再更新了吧,现在已经和struts合并并推出了struts2,而velocity已经成为apache的顶级项目。
20 楼 xieke 2007-03-21  
giscat,咱们真是不谋而合啊
19 楼 giscat 2007-03-21  
jasongreen 写道
giscat 写道
经典MVC框架
  把service,dao等统统合并到controller(action)里
      
  会发现,java版的ROR就这样不经意间浮出水面
    


  java ROR , good idea  ,but how?


  思路已经给出,坚守MVC底限,合并层
  还有一个诀窍,抛弃正统的pojo,用MAP(有得必有失,有失必有得)
   封装下数据库访问,事务处理等,转变思路,所有的一切都不会很难
   顺理成章
     鄙人不才,献丑了,以上观点仅供参考
   
 
 
   
18 楼 dennis_zane 2007-03-21  
giscat 写道
dennis_zane 写道
giscat 写道
经典MVC框架
  把service,dao等统统合并到controller(action)里
      
  会发现,java版的ROR就这样不经意间浮出水面
    


这完全是对ROR的误解,rails的Controller集合了service,dao的功能?话不能乱说


这个不是从架构层面说,而是从开发的简洁,快速,敏捷角度出发
     东西都是人造出来的,ROR没那么干,java也不能那么干吗?
         来点创新精神成不成?


快速敏捷的角度讲?好不容易把业务层、数据访问层从action中分离,现在反而越活越回去了,这恐怕不是快速敏捷,而是大跃进。我看不出这样就是所谓的“创新
17 楼 jasongreen 2007-03-21  
giscat 写道
经典MVC框架
  把service,dao等统统合并到controller(action)里
      
  会发现,java版的ROR就这样不经意间浮出水面
    


  java ROR , good idea  ,but how?
16 楼 giscat 2007-03-21  
dennis_zane 写道
giscat 写道
经典MVC框架
  把service,dao等统统合并到controller(action)里
      
  会发现,java版的ROR就这样不经意间浮出水面
    


这完全是对ROR的误解,rails的Controller集合了service,dao的功能?话不能乱说


这个不是从架构层面说,而是从开发的简洁,快速,敏捷角度出发
     东西都是人造出来的,ROR没那么干,java也不能那么干吗?
         来点创新精神成不成?

相关推荐

    AirPHP轻型开源框架 兼容SAE平台 v1.1 beta

    AirPHP是一款轻型开源框架.设计思想取于多款框架。取其精华思想。AirPHP是一款轻型开源框架,本着“简单 快速 优雅 拓展”的开发思想.使新手也能快速写入标准的MVC程式.基于AirTemplate加速渲染页面输出.简单的模板...

    Maticsoft.Framework中小企业数据库开发框架

    Maticsoft.Framework,短小精悍,超级实用,甚至可以抛弃代码生成工具(它只解决数据新增,删除,修改,分页一旦数据库字段发生改变所有方法都得重新生成,那是一件多么麻烦的事!而此框架正可以解决此问题,使用此...

    xtoon-boot:DDD开源框架-基于DDD领域模型并支持SaaS平台的开发脚手架

    抛弃MVC框架,拥抱更适合复杂业务的开发框架;网上基本讲的都是DDD的理论很少有讲怎么落地,xtoon-boot提供了完整的落地方案和实践;可以快速开发,框架提供了系统管理和组织架构等核心模块;支持多租户的SaaS平台;...

    阿里开源的EasyExcel

    无意间查询到阿里开源的EasyExcel框架,发现可以将解析的EXCEL的内存占用控制在KB级别,并且绝对不会内存溢出(内部实现待研究),还有就是速度极快, 大概100W条记录,十几个字段, 只需要70秒即可完成下载。遂抛弃...

    抛弃LCDS和FMS,在tomcat下开发Red5应用(第十一篇)-电子白板协同浏览

    Flex是一种构建富互联网应用(RIA)的开源框架,基于ActionScript和MXML,可以创建与Red5服务器交互的前端界面。 5. `flexhtml.htm`:这可能是一个包含Flex组件的HTML文件,用于在浏览器中嵌入Flex应用,使用户能够...

    MFEXECOM论坛开源

    为了造福我朝程序猿,作者将框架独立出来了,便于二次开发和整合到其他项目中,并且保留全部中文注释。 【mfexePHP 3.0】 mfexephp 3.0,采用简单结构,有利于 HHVM 编译 / opcode 缓存,提前与 PHP7 契合做好准备...

    新版ThinkPHP微信屏蔽投诉按钮域名防封源码 带搭建教程

    thinkphp框架开发屏蔽举报按钮代码,完全开源无加密,代码核心主要是屏蔽微信投诉按钮技术,全面兼容新(安卓/苹果)系统的微信app,也是市面上较新的微信域名防封技术之一 现在市面上都是一个JS和一个php文件的...

    使用Puppet框架管理基础设施

    本书适用于对系统管理和Ruby语言有一定了解的读者,帮助他们快速上手Puppet这一开源工具。 #### 二、主要内容概述 本书分为四个章节,覆盖了从入门到进阶的主要知识点: - **第一章:Baby Steps to Automation**...

    这是一个全新的表格软件,类似于Excel,但抛弃了Excel臃肿的外壳,存储方式与内核全部自制

    Qt是一个跨平台的应用程序开发框架,广泛用于创建图形用户界面(GUI)。PyQt则是Python语言对Qt库的接口,它允许开发者使用Python编写Qt应用,结合了Python的易用性和Qt的强大功能。因此,我们可以推断这个表格软件...

    一款适合中国网站的前端框架H-ui.zip

     只有抛弃陈旧的东西,才能迎合新一代人的审美和品质需求,才能建立自己的品牌基础!官网地址:http://www.h-ui.net入门地址:http://www.h-ui.net/Hui-overview.shtml 标签:前端框架

    SDSC Syslog-开源

    6. **安全性**:考虑到日志信息可能包含敏感数据,SDSC Syslog通常会提供安全功能,如加密传输、访问控制和审计日志,以保护日志不被未经授权的访问和篡改。 7. **性能优化**:由于SDSC Syslog面向的是大规模系统,...

    Lerx 开源网站内容管理系统(CMS) v5.5

    Lerx CMS V5版(以下简称V5版)采用了基于Java的SpringMVC框架,抛弃了V2-V3版本使用的Struts 2。SpringMVC框架更加安全、稳定。ORM持久化框架依旧使用Hibernate,版本为5.4。开发时采用的数据库为M

    Personal Calculator.NET-开源

    这种设计方式抛弃了传统图形用户界面(GUI),转而采用命令行交互,使得用户可以通过键盘输入指令进行计算。这种方式不仅简洁高效,也更适合程序员和高级用户,他们可以利用其快速执行复杂的计算任务,而无需通过...

    teachManager:早期个人项目(很烂的项目),开启重构及更新为springboot项目

    决定继续使用amazeUI作为前端前台框架(非常喜欢这个妹子开源框架,作为一个大老爷们,感觉自己也是个小公举啦) 采用layui作为前端后台框架(这个前端框架真心好用) 决定使用amazeUI的最新版本(2.7.2),翻新重做...

    Spring的数据源配置 DBCP、C3P0、JNDI.txt

    - **被抛弃连接超时时间** (`removeAbandonedTimeout`):被抛弃连接的超时时间(秒),默认为300秒。 - **记录被抛弃的连接** (`logAbandoned`):是否记录被抛弃的连接,默认为`false`。 #### 三、C3P0 **C3P0**...

    Webx3_Guide_Book.pdf 用户指南

    Webx 3.0抛弃了Webx 2.0中过时的、从Turbine中发展而来的 Service框架,直接采用Spring作为其基础,并对Spring作了重大改进。Webx 3.0完全兼容 Webx 2.0的代码,只需要修改配置文件就可完成升级。 • 2010年底,Webx...

    大气背景扁平化UI设计bootstrap模板4971.zip

    Bootstrap模板是一种基于HTML、CSS和JavaScript的开源框架,由Twitter开发并维护,旨在加速Web应用程序的前端开发。扁平化设计是近年来流行的界面设计风格,它抛弃了过度装饰的元素,强调简洁、清晰和易用性。"大气...

    ThinkPHP微信屏蔽投诉按钮域名防封源码 带搭建教程

    Thinkphp框架开发屏蔽举报按钮代码,完全开源无加密,代码核心主要是屏蔽微信投诉按钮技术,全面兼容新(安卓/苹果)系统的微信app,也是市面上较新的微信域名防封技术之一 现在市面上都是一个JS和一个php文件的版本...

    OneBase v1.3.4.zip

    高效: 自动缓存设计,抛弃了处处判断的尴尬,使您不知不觉中已经使用了缓存。 特色: 无限级权限控制,垃圾资源回收,系统通用回收站,SEO变量支持,性能与操作监控,等各种脑洞大开的设计思想。 OneBase截图 ...

    扁平化设计师展示bootstrap模板是一款绿色扁平化风格的设计公司宽屏模板下载 .rar

    Bootstrap模板是一种基于HTML、CSS和JavaScript的开源框架,由Twitter开发并维护,旨在加速Web应用程序的前端开发。扁平化设计是近年来非常流行的一种设计趋势,它抛弃了传统的深度感和立体元素,转而采用简洁、清晰...

Global site tag (gtag.js) - Google Analytics