2007年对于Java而言,是平稳发展的一年(也许不是大事的大事是Sun在07年8月把它们股票的称号从SUNW改到JAVA,显示了他们对Java及其所衍生的软件体系的重视!)回归正题,Java语言领域延续了2006年的发展,商业领域以及开源领域继续着大幅度的发展,在IDE、SOA、开发框架等多种领域也给业界带来了提升和发展,而同时其他语言的快速发展对Java领域产生了不同程度的冲击。回顾整年Java技术的发展,我们将其锁定在:动态、应用服务器/中间件、SOA、开源框架、IDE、OSGi以及冲击这六个关键词上。
动态
2006年11月Sun宣布Java开源,经过漫长的几个月的代码整理后,终于在2007年5月正式对外公布了,尽管Java的开源一方面会带来兼容性的问题,但从长远来看,还是利大于弊,相信从大家期待已久的Java 7中能看出些端倪。
Java 5逐步成为主流,这也使得Java 5的各种易用的特性开始进入实际的使用阶段---泛型、Annotation等都给实际的开发带来了很大的便利,而Java 6的性能提升、Instrumentation、对脚本语言的支持以及Web服务Annotation等新的特性也使得它占有了一定的市场份额。
在Java One上Sun宣布了JSR-1(实时规范)第一个实现的发布,这也意味着Java开始进入实时领域,此消息能一定程度上削减对于Java实时应用性能低下的质疑,但由于目前这个方面消息还很少,无法对其进行全面的评估,期望能在2008年看到更多关于此方面的消息,提升Java的实时性能。
应用服务器/中间件
Java在企业级的应用(不论是应用服务器,工作流,CRM,整合软件,等)在07年还是保持举足轻重的地位。根据IDC 2007年 6月的报告,中间件平台的收入约31亿美元(比06年成长7%)。 以Java为主的应用服务器中间件(如IBM Websphere, BEA Weblogic,Oracle OC4J和JBoss)在其中占了很大的一部分。IDC也预测企业对应用服务器及中间件的投资会继续增长。
在07年,包挂Sun (Glassfish),BEA (Weblogic),Oracle (OC4J), Kingdee (Apusic, 金蝶),和 Apache (Gerinomo)都相继通过JEE5的认证;而开源的JBoss 也很早(4.0 和4.2系列)就有JEE5的相容版供用户使用。可以想见,在08年JEE5会慢慢变成主流。其中值得观察的是EJB3和Spring有相对的从叠性,如DI(Dependency Injection)和Hibernate,而欧美地区对EJB的接受程度较高,所以JEE5/EJB3 会不会挤压Spring的占有率,很值得观察。
在应用服务器里,Sun的Glassfish是开源软件也是第一个通过JEE5认证的公司(因为JEE5认证是Sun举办的,所以第一个通过是顺理成章!),在07年的评语不错,是个新起之星。但是能不能撼动JBoss在开源界的龙头地位,可能还有段路得走。
SOA
SOA在2007年再次成为了最热门的词。 各大软件公司都相继发布SOA的产品, 如IBM,BEA, JBoss (或精准的说是Red Hat的JBoss部门), 和Oracle都有相关的套件提供SOA的服务。但是基于SOA还是停留在观念的应用(而非标准的实施),SCA1.0的发布使得SOA框架有落地实现的可能性。随着应用复杂度的提升,SOA已¾¬成为了越来越急迫需要的架构体系。
Java自然不会在这么重要的领域落后,SCA虽然是面向所有语言的规范,但侧重点仍然是Java领域。在SCA V1.0推出的同时,基于Java实现的SCA的商业平台、开源平台相继冒出,商业领域知名的有IBM Business Intergration,开源领域有Apache Tuscany和Newton。我们相信在2008年SOA会更加的火热,不再停留在概念的层面,成为实际产品、项目的基础支撑平台。
在SOA另一种典型的实现方法---ESB (Enterprise Service Bus)上, Java领域的动作量也是不小,Mule ESB和JBoss ESB新版本的推出, 让服务为准的应用和整合更加有效率。这些ESB产品以后会不会向SCA靠拢,也是08年观察的重点。
开源框架
源于Java领域优秀的开源和交流的精神,2007年Java领域的框架继续保持着快速发展和快速推出的趋势。流行框架层面最引入注目的仍然是Spring、Struts和Hibernate三大框架新版本的推出。
Spring在2007年快速的推出了2.0、2.5两个版本,2.0版本提供的XML Schema和自定义命名空间的支持,大大的简化了XML配置的复杂度,同时由于其在AOP方面的增强使得2.0版本在推出后很快就成为了主流框架;2.5版本朝着配置简单化的方向继续前进,推出的annotation替代XML配置的方式再度简化了配置的复杂度。
自从Struts和Webwork合并的消息在2006公布以来,Struts 2就成为了万众期待的MVC框架了,终于在2007年发布了2.0 GA版本,经过这一年的发展状况来看,当初对于Struts和Webwork合并产生的众多担忧都可以去除了,Struts的人气和Webwork的优秀设计体系完美的结合在了一起。
Hibernate方面来说,从3.2版支持JPA(Java Persistence API)并可以在JEE里面和外面独立部署,继续成为ORM软件的唯一选择。最为值得关注的就是Shards,Shards是由Google贡献,用于实现基于Hibernate Core的数据库水平分区方案,这也就意味着Hibernate可用于大型分布式场景,其他的像Hibernate Search、Hibernate Validator的发布也是非常值得关注的。
一些新的框架也开始在Java领域中崭露头角,其中有Google Gears和JBoss Seam。Google在2007年开源领域的动作非常多,Gears实现了对在线服务的离线功能,这一方面解决了Google本身依赖在线的问题,另一方面也为需要提供离线功能的web应用提供了解决方案;JBoss Seam整合了EJB 3和JSF,是个新的“一站式”解决方案的框架。 JBoss Seam被认为大大的简化了Java Web应用的开发,引起了极高的关注。
其他的引人关注的还有像Android、Grails、Eclipse RAP的推出。Android一推出就受到了大众的关注,其在手机操作系统领域的突出表现吸引了众多的开发人员成为Android Fans;Grails源于Rails对Java的强大冲击而诞生,它基于Java实现了类似Rails的功能,从而使得基于Java开发Web应用系统的速度得以大大提升;Eclipse RAP则给大家带来一种新的web应用开发的体验,以传统的RCP方式开发,但却可发布为web应用,这也就意味着熟悉RCP的人可以快速的基于RAP开发出具备类似Eclipse复杂交互的web应用。
IDE
在IDE方面,最值得关注的就是NetBeans的推出了,NetBeans作为一个完整的Java IDE,提供了Java应用开发中需要的各类功能的支持,因此也得到了不少的关注。
OSGi
OSGi延续了2006年强势的发展,OSGi DevCon2007的召开使得OSGi成为了业界焦点的话题,同时Spring、Struts两大流行框架宣布对OSGi的支持,在最新的SCA 1.0规范中也将OSGi列入了组件模型实现的参考;BEA、SpringSource、Eclipse以及IONA也于同年加入了OSGi联盟。
随着商业公司和开源领域对OSGi的大力支持,OSGi逐步的成为了企业应用领域的可选组件化平台之一。
冲击
2007年Rails继续着快速的发展,对Java在Web应用开发的领域产生了较大的冲击。中小型网站越来越多用Rails来建构挑战着Java的地位。
Erlang虽然是一门成熟的语言,但直到2007年,才随着多核CPU以及软件不能再依赖硬件来快速提高性能等因素横空出世,成了2007年中业界最热门的关键词之一。将来Erlang和Java会成为什么样的关系,相信也是08年很值得期待的看点。
展望
Java 7 和JEE6现在还在讨论酝酿中。从Java7的提议来看,Java的语言是已相对的成熟。网络上也出现了很多的讨论:1. Java是不是应该增加更多的新功能(像是C#的LINQ)让它继续演进,或2. Java是不是已经过重”(或像C,COBOL一样变成了legacy的语言)?我们相信08年会有清晰的答案。
至于,JEE6则显然还有段路要走:Profiling及Pruning,WEB跟EJB的进一步结合(JSR-299 WebBeans),及RESTful WebServices (JSR311)等都是重要的议题。
作者简介:
林昊,沉迷于多种技术之间如CMS、Workflow、AJAX等领域,现专注于OSGi、SCA以及分布式服务框架,致力于OSGi在中国的推广并担任OSGi China User Group Director。他现任职于淘宝网从事基础技术的开发。
王文彬(Ben Wang)博士现任职淘宝网担任资深技术总监兼首席架构师。曾担任Red Hat的亚太区资经理推动JBoss的业务。他是开源PojoCache的创始人物。在2003年初开始投入到JBoss,曾领导开发JBoss Clustering及Cache。之前他在硅谷致力于多项领域的开发及管理。
(本文来自《程序员》杂志0802期)