2004年Java世界发生了巨大变化,主要方面是诞生和发展了几个新名词:IOC 、AOP、SOA、MDA,当然,除了这些都是决定Java技术未来走向的革命性发展以外,还有很多细部和微观的发展,我们先来谈谈这些重要的细节技术发展。
首先, Java的根基JDK已经跨越到了J2SE 1.5,或者称为J2SE 5.0,不过,我更喜欢称它为1.5,延续性是我们应用程序员更关心的,当然革命性是那些新技术发明者更陶醉的,所以他们曾经取名J2SE 2.0,现在,为了表示这种跨越,而且跨越是非常巨大,一下子达到了J2SE5.0,非常夸张,不过老外在技术上确实经常极端,"偏执者才能生存"我想是其行动主义文化的主要基础。
J2SE1.5 最吸引眼球的我认为主要是annotate特性,该特性可以大大降低程序员的编程量,它和Java Relfect机制结合,可以编制出相当灵活的软件系统或框架。
从J2SE1.5看出,SUN正在试图简化Java,但是也许这一简化动作来得迟了点。
同样,珊珊来迟的是J2EE Web层的一个标准JSF,JSF使得程序员在开发J2EE的Web程序时,能够如同开发SWING那样实现可视化开发,提高了开发效率,但是必须有高级开发工具支持。
由于好东西来得太迟,在一份最近调查中显示,开源项目Struts已经在J2EE实际Web层开发中占据主导地位,Struts在2004年是达到成熟顶点,它的主要特点是将Form表单对象化,同时提供简单的XML标签替代以前Jsp中的Java语言,这样在Jsp中彻底消灭了Java代码,除了Struts,Tapestry这种彻底抛弃Jsp的开源Web框架产品也值得一提,它和WebWork一起成为一颗引人注目的星星。
2004年发生了太多新的激动人心的事情,其中最引人注目的是AOP和SOA的迅速发展,Java世界的发展一直以来是分两条路线,第一条是工业路线,以SUN、IBM、BEA和Oracle等工业巨头为代表的业界标准,当工业巨头制定出EJB 2.0以后,他们认为在JavaBeans技术框架内EJB已经走到极限,基本无需太多发展,因此,他们将关注目光投向软件系统服务功能上,当一个个EJB组件提供了可重用的功能后,如何向不同客户输出这些强大的、可重用的功能呢?是反复安装拷贝这些组件功能?还是以一种服务的方式适时提供全面的租用?SOA面向服务架构因此提出来,并且得到工业界巨头的大量投入和发展,同时,他们还在关注流程的可定制化和可视化开发,通过强大的开发平台,可以很轻松地完成工作流的业务定制和修改。
当业界巨头关注重点从JavaBeans结构转移时,一种新的设计思想和编程风格AOP(面向方面编程)诞生了,面向方面编程是OOP面向对象编程的延续,AOP于2003年底已经在国外热起来,到了2004年应该算是全面开花,各种AOP产品如JBoss 4.0、Spring、Aspectwerkz等迅速诞生和发展,带给程序员全新的概念和理念冲击,AOP编程方法可以应用在软件开发的各个领域,当你发现某个功能具有普遍性和通用性以后,那么这个功能也许可以使用AOP实现,这样你的代码优雅,同时可维护性和拓展性大大增强。
Ioc反转控制应该说有着AOP类似解耦思路,通过Ioc模式或容器,可以比较彻底分离JavaBeans之间的调用和被调用关系,达到真正地面向接口编程,是Ioc使的面向接口编程变得更具有意义而且重要,Ioc的产品如纯洁的PicoContainer以及Spring等等。
开源和业界标准的分歧不仅仅体现在JavaBeans体系发展上,还体现在对象持久化方式上,在2004年有三种流行的对象持久化在被广泛使用:EJB的CMP、Hibernate和JDO,这三者之间的区别和联系也是很多程序员津津乐道的,特别是Hibernate的创始人Gavin King不断对JDO的质疑,使的Hibernate名气大升,也使的JDO一直未能够进入EJB的持久化标准,Spring+Hibernate架构以及使用基于JBoss的EJB架构成为低成本高质量J2EE流行架构。
这种"混乱"的局面下,EJB 3.0标准Preview方案被2004年Java ONE大会首次提出,EJB 3.0试图取悦那些轻量方案的追随者,同时又能兼顾过去EJB标准的系列发展,JBoss迅速地提供了对EJB3.0支持包,其中我们看到了Gavin King这位斗士的身影。
同时,Hibernate向何处去是我们应用系统程序员关心的,Struts 2.0正在向JSF标准靠拢和迁移,Hibernate是否能够一直孤军作战?目前一项旨在统一J2EE持久层技术的标准方案正在启动中,我们期望简单统一的持久层方案出台,减少程序员选择迁移之苦。
2004年又是Java世界吵闹的一年,有的程序员说:现在学java却越学越糊涂,看了很多东西,不但大脑里没有头绪,反而有种走火入魔的感觉,因为各种技术派别都在争夺话语权,话语权的争夺意味着商机的诞生,JBoss和Spring的开发团体先后转为商业公司是一个证明。对于应用者来说,没有永远的解决方案,只有合适的工具,Java世界提供给你的是工具箱,而非一种选择,需求是选择工具的唯一原因。
让我们视野从J2EE思想和技术之争转移到需求分析领域的领域,在这个领域一直也存在两种意见:面向数据表分析还是面向模型分析?也就是说,建立一个新的系统,是先分析设计数据表还是模型,前者是以前数据库系统经常采取的方式,但是这一传统的方式目前也受到OO对象的冲击,MDA(面向模型分析)在2004年成熟开花,各种Java成品也如雨后春笋一样遍地开花,MDA思想提出了极端观点:将来只有建模专家(其它程序员都变成蓝领工人了),只要建模专家通过UML设计出一个系统的模型,通过特定的Java MDA工具就可自动生成相应的代码,好像真的不需要普通程序员了。
结束语 总之,2004年的Java技术带给我们更多的是激动和压力,新技术发展以月计算,作为程序员的我们如何跟上这些新技术发展,同时能够选择正确的技术引入我们自己的应用系统,这些才是我们的真正挑战。