`
robbin
  • 浏览: 4798006 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
377a9ecd-1ea1-34ac-9530-9daa53bb2a7b
robbin谈管理
浏览量:135693
社区版块
存档分类
最新评论

Java开源框架发展的遐想

    博客分类:
  • Java
阅读更多
上周末在杭州网侠大会做演讲的时候,我说:Java开源框架的革命浪潮已经结束了,未来几年,将是Java语言级别的革命。说实话,自从03年Hibernate火爆,04年spring流行之后,Java开源领域实在太缺乏亮点了。但是,Java的主流开源框架真的一点改进的余地都没有了吗?

先来说说Hibernate吧。Hibernate确实功能强悍,但是Hibernate不够易用,而且有一些明显的缺陷:one-to-one必须通过bytecode enhancement才能lazy loading;不支持多态关联;怪异的inverse配置和维护;DetachedCriteria有明显的bug;many-to-one的eager fetch设置不够灵活,让Hibernate的使用者真是又爱又恨,使用起来战战兢兢,如履薄冰阿。Gavin King同学是个很刚愎的人,他似乎从来不觉得这些问题是问题,而且他已经把自己的主要精力放到JBoss Seam产品上面去了,也许我们只好继续忍受了。那么JPA呢?JPA标准就像是Hibernate模子里面刻出来的一样。但是为什么人们总是在忍受Hibernate缺陷的同时,却没有去努力改进这些问题呢?

我想,问题的关键在于一些缺陷的改进需要对Hibernate整个源代码架构进行伤筋动骨的改动,但是对于Hiberante今天所取得的垄断地位来说,显然Hibernate的开发者们已经缺乏足够改进的勇气和魄力了。


Springframework,简直如日中天,定义了轻量级Java企业应用开发的事实标准。但是spring真的很完美吗?我们已经听到太多对于spring的xml bean配置文件的抱怨。也许配置文件不是太大的问题,spring已经开始尝试引入annotation。但是spring的致命问题是无法方便的对动态创建的bean进行依赖注入。Google Guice的出现让我们看到了其实prototype的bean和动态创建的bean其实也可以很容易的管理。spring自身的缺陷事实上造成了很难进行rich domain model架构的实现。

Rod Johnson创办的interface21公司专职从事spring的咨询,最近已经得到了1000万美元的风险投资,是没有足够的资源去改进spring吗?当然不是。是因为spring今天所取得的垄断地位使得spring的开发者们没用足够的勇气去推翻spring现在的架构,进行重大的改进。


Java的Web框架领域这两年非常令人失望:Tapestry在升级的过程中不断的迷失自己,丧失用户;webwork和struts合并了两年了,结果只搞出来一个完全webwork版本的struts2.0.6,毫无改进;JSF叫嚣的厉害,却没有前途;wicket叫好却不叫座;当年令人眼前一亮的stripes两年来一直小修小补。

web框架没有改进余地了吗?其实我们稍微想一下,就发现web框架大有改进余地。例如以struts2.0为例,完全可以仿照RoR,大量使用annotation和CoC,完全消除action的配置文件,完全消除validations配置文件,但是struts2.0叫嚣了两年的Zero Configuration,却干打雷不下雨。

是的,struts2.0有一个叫做restful的actionmapping,但只是徒有其表。我们想一下,只需要稍微修改一下struts2.0的URL Mapping机制,扩展一下FilterDispatcher,再扩展几个URL的JSP Tag,让Struts2.0完全支持REST架构风格,完全不是什么难事。为什么struts2.0两年以来毫无动静?实在让人无法理解。

所以Java社区其实有很多事情可以做,而且难度也未必很大,但很奇怪的是,为什么社区显得如此沉寂呢?没有创新性的产品出来呢?我也想不明白。



分享到:
评论
33 楼 chinawomen 2011-09-13  
众口难调。想方便使用自己拓展定制去吧 用别人的东西总是有感觉不爽的地方
32 楼 radar 2007-05-25  
不甘寂寞的人太多!
想从中获取点名利的人太多!
有思想的人太多!
无尝奉献的人就少了!


dlee是我见过最无私的人!期待java rest,但不是很看好。
框架热已经过去,
期待与行业紧密关联的技术方案多点,成熟点。
31 楼 cctvx1 2007-05-25  
其实说白了就是一句话:

   国内的普遍现象 就是说的多做得少,说起来天下无敌,做起来却有四肢无力。

   包括偶自己,不过还好,现在低调做人,高调做事的人也开始多了,毕竟

在说多了之后大家也都烦了。

   
30 楼 大愚弱智 2007-05-25  
要是都倒退回到CLI的时代多好,省掉了许多麻烦
29 楼 yingjie000 2007-05-25  
做了一年的java开发,
感觉,java应该向自动生成代码发展。
28 楼 diandidemeng 2007-05-25  
说白了,各个方面的考虑的因素太多,开源这一块,没有一个强大的社区来统领,组合几大框架的优点,很可能进一步的迷失方向,不管是那个框架,还要注意被ms吞没的市场.
27 楼 ken1984 2007-05-25  
替楼上回答一下,大家都认为那些框架不难,没什么技术含量,自己写又觉得烦琐,浪费时间,所以就不写了。
26 楼 johnnyhg 2007-05-25  
光说没用,Struts不是开源的吗?
也可以自己去修改,符合自己的使用习惯啊。既然如此简单的话。
25 楼 林秋枫 2007-05-25  
robbin 写道
上周末在杭州网侠大会做演讲的时候,我说:Java开源框架的革命浪潮已经结束了,未来几年,将是Java语言级别的革命。说实话,自从03年Hibernate火爆,04年spring流行之后,Java开源领域实在太缺乏亮点了。但是,Java的主流开源框架真的一点改进的余地都没有了吗?

先来说说Hibernate吧。Hibernate确实功能强悍,但是Hibernate不够易用,而且有一些明显的缺陷:one-to-one必须通过bytecode enhancement才能lazy loading;不支持多态关联;怪异的inverse配置和维护;DetachedCriteria有明显的bug;many-to-one的eager fetch设置不够灵活,让Hibernate的使用者真是又爱又恨,使用起来战战兢兢,如履薄冰阿。Gavin King同学是个很刚愎的人,他似乎从来不觉得这些问题是问题,而且他已经把自己的主要精力放到JBoss Seam产品上面去了,也许我们只好继续忍受了。那么JPA呢?JPA标准就像是Hibernate模子里面刻出来的一样。但是为什么人们总是在忍受Hibernate缺陷的同时,却没有去努力改进这些问题呢?

我想,问题的关键在于一些缺陷的改进需要对Hibernate整个源代码架构进行伤筋动骨的改动,但是对于Hiberante今天所取得的垄断地位来说,显然Hibernate的开发者们已经缺乏足够改进的勇气和魄力了。


Springframework,简直如日中天,定义了轻量级Java企业应用开发的事实标准。但是spring真的很完美吗?我们已经听到太多对于spring的xml bean配置文件的抱怨。也许配置文件不是太大的问题,spring已经开始尝试引入annotation。但是spring的致命问题是无法方便的对动态创建的bean进行依赖注入。Google Guice的出现让我们看到了其实prototype的bean和动态创建的bean其实也可以很容易的管理。spring自身的缺陷事实上造成了很难进行rich domain model架构的实现。

Rod Johnson创办的interface21公司专职从事spring的咨询,最近已经得到了1000万美元的风险投资,是没有足够的资源去改进spring吗?当然不是。是因为spring今天所取得的垄断地位使得spring的开发者们没用足够的勇气去推翻spring现在的架构,进行重大的改进。


Java的Web框架领域这两年非常令人失望:Tapestry在升级的过程中不断的迷失自己,丧失用户;webwork和struts合并了两年了,结果只搞出来一个完全webwork版本的struts2.0.6,毫无改进;JSF叫嚣的厉害,却没有前途;wicket叫好却不叫座;当年令人眼前一亮的stripes两年来一直小修小补。

web框架没有改进余地了吗?其实我们稍微想一下,就发现web框架大有改进余地。例如以struts2.0为例,完全可以仿照RoR,大量使用annotation和CoC,完全消除action的配置文件,完全消除validations配置文件,但是struts2.0叫嚣了两年的Zero Configuration,却干打雷不下雨。

是的,struts2.0有一个叫做restful的actionmapping,但只是徒有其表。我们想一下,只需要稍微修改一下struts2.0的URL Mapping机制,扩展一下FilterDispatcher,再扩展几个URL的JSP Tag,让Struts2.0完全支持REST架构风格,完全不是什么难事。为什么struts2.0两年以来毫无动静?实在让人无法理解。

所以Java社区其实有很多事情可以做,而且难度也未必很大,但很奇怪的是,为什么社区显得如此沉寂呢?没有创新性的产品出来呢?我也想不明白。


其实楼主最后的疑问自己已经部分回答了。
java开源框架担心在升级的过程中不断的迷失自己,丧失用户。

以Tapestry为例,实际上Tapestry并不是迷失自己。Tapestry5是个跨越性的发展,其作者想用质变的方式做一个优异的开源框架。但不幸的是因为跨越的幅度太大了,所以丧失了用户。很显然hibernate和spring很清楚这种后果,所以不敢对框架做大的改动。

用哲学的道理来看很清楚。量变的发展而导致质变。质变的结果是产生新事物。旧事务必定会对新事物的发展起阻碍作用。但新事物必定会产生,旧事物必定会被抛弃。

所以,再过一年或者两年,spring和hibernate必定会被抛弃。即使保留下来,也只是类似sturts2.0那样的品牌名字而已。

24 楼 pig345 2007-05-25  
robbin一针见血阿,指出了hibernate和spring的硬伤!

由于这两个框架的问题(hibernate的映射多态支持有限,不能够进行复杂的OO设计,spring不能管理new的对象),导致用他们实现RichDomainObject设计的确比较麻烦。

不知道有没有其他的替代框架,可以弥补他们在这方面的不足?
23 楼 ronghao 2007-05-24  
我倒是认为页面上应该出现一套完整的AJAX的框架。现在的AJAX框架也很多,但与我想象的不太一样,我更愿意称它们为组件。比如说数组件、表格组件、列表组件等等,它们是分离的、破碎的,互相之间缺乏一种强有力的通讯或联系,需要有一个总的框架把页面中所有的这些组件联系起来。就像rcp中那样。这样也就不存在页面的跳转了,one page one application
22 楼 江南白衣 2007-05-24  
ESB/SOA现在越来越多实质性的开源方案,可以结合ESB/SOA/J2EE搞一把后台业务处理服务器,里面涉及挺多东西:)

不过,的确是用户太少,使用者比SSH差了两三个数量级不止,想想还是没有信心自己做这方面的开源。
21 楼 blogbin 2007-05-24  
除了Web, Spring和Hibernate之外,不少Java开发人员致力于其它领域的开源项目的开发。比如在测试,工作流,搜索领域等等,不过目前为止没能具有前者那么广泛的影响力。可能是采用前面提到的三大件就可以解决国内大部分信息化系统的建设,因此其它领域关注的开发人员较少的缘故。

blogbin
20 楼 江南白衣 2007-05-23  
如果可以,跳开WebApp搞点别的嘛。
19 楼 Julien 2007-05-23  
轮子这个比喻是错的,前面的人已经说过了
不是重复发明轮子,而是要不断的发明橡胶轮胎,防扎轮胎,自补轮胎等等等等。
既然有了stuts,为何还要webwork?这不是重复发明轮子么?
C++好好的,干嘛要发明java?这不是重复发明轮子么?
18 楼 YuLimin 2007-05-23  
看到轮子,我想到了这个
http://blog.csdn.net/jiangtao/archive/2007/05/23/1621960.aspx

中国的公司和美国最大的不同,缺乏合作和整合, 所有产品希望全部自己做,大量人员做重复的工作。
有人把这形象比喻为麻将思维,:“各自为营”第一:“要看死上家”,第二:“要抵死对家”,第三:“要卡死下家”,最后是要洗白三家,只活自己我一家。
17 楼 ahuaxuan 2007-05-23  
robbin 写道
leisure 写道
robbin大牛,搞个国产的框架吧


我到是很有兴趣改造改造webwork,添加REST功能的,但我实在没有时间。dlee可能最近要自己搞一个开源的Java REST框架,可以关注一下。

有兴趣能否参与啊
16 楼 robbin 2007-05-23  
leisure 写道
robbin大牛,搞个国产的框架吧


我到是很有兴趣改造改造webwork,添加REST功能的,但我实在没有时间。dlee可能最近要自己搞一个开源的Java REST框架,可以关注一下。
15 楼 leisure 2007-05-23  
robbin大牛,搞个国产的框架吧
14 楼 ahuaxuan 2007-05-23  
对于hibernate,不觉得还能创新什么,要创新就不是改hibernate,而是重新做一个orm框架,思想大不一样的框架,就如有人在说bob大叔在做
而对于web框架来说目前比较需要而且有用的改动应该就是coc,coc应该是趋势了,而是否是用annotation来做配置估计并不是很重要,即使使用xml也没有问题,为什么,coc之后,需要配置的东西已经不是很多了,在class中配置还不如在xml来得简单明了,尤其是通用性的东西

相关推荐

Global site tag (gtag.js) - Google Analytics