上周末在杭州网侠大会做演讲的时候,我说: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社区其实有很多事情可以做,而且难度也未必很大,但很奇怪的是,为什么社区显得如此沉寂呢?没有创新性的产品出来呢?我也想不明白。
分享到:
相关推荐
【公元2020年-2130年】这段...这些遐想揭示了科技进步对人类生活方式、社会结构、环境互动以及伦理道德的深刻影响,同时也提出了许多挑战和机遇。随着科技不断发展,人类文明将持续演进,探索未知,创造新的可能性。
【技术发展概述】 随着时间的推移,科技在人类文明发展中起着越来越重要的作用。从公元2020年开始,三维全息电视的引入改变了人们的娱乐方式,而氢燃料电池技术则引领了交通运输领域的革命,推动了环保汽车的发展。...
总的来说,"TEAM论坛 绿色遐想"提供的模版资源为网页设计师和开发者提供了一个便捷的起点,让他们能够快速创建出具有专业外观的网站,同时也能激发他们的创新思维,推动他们在网页设计领域不断探索和发展。
JAVA运算符思维导图,便捷整理思路,算数运算符、连接运算符、赋值运算符、扩展赋值运算符、三目运算符、逻辑运算符、关系运算符
随着科技的飞速发展,CPU(中央处理器)作为计算机系统的心脏,其进化历程一直是IT领域关注的焦点。本文将深入探讨多核心CPU的发展趋势、技术原理及其对现代计算性能的影响。 多核心CPU是指在一个物理封装内集成两...
JAVA多态思维导图,便捷整理思路,多态的好处、多态的语法格式、多态中的两种类型转换:向上转型、向下转型
JAVA方法思维导图,便捷整理思路,方法的定义以及分类:、方法的基本语法格式、方法的调用、方法重载、break、continue、return区别
关于生活吞星的遐想,好的flash作品,值得下载
JAVA基础思维导图,便捷整理思路,Public与Class的区别、Classpath、JAVA关键字、字符编码、字面值、命名规范
"短视频产品竞品分析与教育短视频的一些遐想" 以下是对短视频产品竞品分析与教育短视频的一些遐想的详细...只有通过深入了解短视频产品的竞品选择和教育短视频的一些遐想,才能更好地发展短视频产品和实现教育目的。
JAVA类之间的关系思维导图,便捷整理思路,泛化、实现、依赖、关联、组合、聚合……
JAVA数据类型思维导图,便捷整理思路,变量、变量操作、变量的分类、数据类型、变量的内存分析图、类型之间转换
云计算带来无限遐想.pdf
春意盎然的季节总是不经意间触碰心灵的柔软处,引导我们沉浸在无边的遐想之中。在这春光灿烂的日子,我读到了一篇以儿童视角书写的作文——《春天的遐想》。这篇由许家瑞创作的作文,以二年级学生军军在春日公园里的...
这一环节无疑为教师提供了持续改进的空间,使他们能够在未来的教学实践中不断探索,更好地服务于学生的个性化成长与全面发展。 综上所述,《月光下的遐想》这篇教案以创新的视角和多元的教学手段,成功地将学生引领...
在现代社会的快速发展中,我们似乎总是被一种无形的力量推动着,不断向前,一刻也不得安宁。生活节奏的加快,导致我们的心灵也趋向于浮躁,渐渐失去了对内心世界的关照。在这份喧嚣之中,有这样一个声音,它温柔而...
JAVA程序流程控制三大结构思维导图,便捷整理思路,顺序结构、选择结构(if、if else if、switch case)、循环结构(for循环、while循环、do while循环)
(八)冬日的遐想.docx
这两部分的计算同样运用了黄金分割比例,目的是在不同时间框架之间找到平衡点。 最后,`(M60+0.618*M120+0.382*M240)/2` 计算了60日、120日和240日的成本平均,这代表了更长期的趋势判断。这一部分的计算同样遵循了...
JAVA思维导图,便捷整理思路,JAVA语言三大块、JAVA特点:、JAVA的加载与执行、注释、输出语句