java今年已经11岁了。在这11年里,被应用到了企业、桌面、web、移动等各个领域。其中覆盖面最广的j2ee及相关产品被广泛应用到企业中。但从1999年诞生的第一个j2ee版本一直到j2ee1.4总被人们不断地抱怨,这并不是因为它不够强大,恰恰相反,正是因为它太强大了,强大得让人难以使用。
java今年已经11岁了。在这11年里,被应用到了企业、桌面、web、移动等各个领域。其中覆盖面最广的j2ee及相关产品被广泛应用到企业中。但从1999年诞生的第一个j2ee版本一直到j2ee1.4总被人们不断地抱怨,这并不是因为它不够强大,恰恰相反,正是因为它太强大了,强大得让人难以使用。
sun这些年也一直在试图改变这一切,但一直未能如愿。在2002年j2ee1.4推出后,它的复杂程度达到了顶点。尤其是ejb2.0,开发和调试的难度非常大。也许是sun要下决心改变这一切,或者是受到市场和开发人员的压力,终于在今年5月份正式发布了j2ee5(现已经改名为java ee 5)规范,并宣称java ee 5将是java ee史上最简单的版本,它将大大降低开发难度。但业界对此却表示怀疑。java ee 5真的变简单了吗?这好像有点突然!java ee在未来是否能走上一条简单的光明之路呢?
java ee 5横空出世
java ee 5终于在千呼万唤中诞生了。在今年的javaone会议上,sun特意派去了一个宣讲团,对java ee 5进行了大吹特吹,并称java ee 5最大的改变就是简化开发。同时,还特别提到了ejb3.0可以通过java最新提供的注释(annotations)以及其它一些特性来提高开发和测试的效率。sun的鼓吹声还没有完全散尽,业界的嘘嘘声就此起彼伏。一位高级分析师,richard monson-haefel,称java ee 5虽然做了很多改进,但仍然无法克服它的庞大和复杂。这位高级分析师目前是ejb3.0规范的设计者之一,从java ee 5的设计者口中说出这样的话,我想它的分量一定不轻。
也许sun并不愿意听到这样的评论。但monson-haefel还是喋喋不休地数落着java ee 5的种种不是。monson-haefel说:“java ee中的功能高度集成,我们将无法单独使用其中的一部分。而且许多servlet、java数据库和javaserver pages开发人员一般只使用java ee的某些相关的特性。但java ee规范要求必须使用所有的特性[apis]。为了使程序可以正常运行,这些开发人员不得不建立一个复杂的工程来满足这些要求。这是因为java ee仍然保持了上世纪90年代后期的编程方法,也就是说java ee是以api为中心的”。monson-haefel甚至危言耸听地称“java ee的应用已经走到了尽头!”。
也并不是所有的人都象monson-haefel这么悲观。一位jboss公司的发言人说:“我们并不完全反对burton集团高级分析师richard monson-haefel的关于平台复杂性的观点,但是没有人同意他关于java ee的应用已经走到尽头的这个结论。”
ibm一向是java的忠实支持者,也站出来为java ee说话。jim knudson,作为ibm 的java ee架构师,曾公开表示“虽然java ee平台在使用上是有一些复杂,但这并不能成为我们放弃这个平台的理由”。
java ee 5刚一问世,就引来了这么多的议论,当然,这些议论有好的,也有对java ee 5不利的。那么java ee的主要用户群:企业,该如何做出选择呢?
企业会为java ee 5埋单吗?
java ee 5面世后,企业该如何选择呢?以前使用j2ee1.4及以前版本的企业会升级到java ee 5吗?
也许monson-haefel的一席话会吓倒很多企业。但jim knudson对此仍然很乐观。虽然他表示同意java ee平台很复杂这一观点,但是他说某些复杂性是来自于用户的需求,并且我们要使用户达到他们期望的效果。他说ibm的那些预期实现soa的用户都打算在java ee 5平台上面构建soa。
jboss产品管理部主管ram venkataraman也支持这样的观点:java ee平台增加了复杂性是有必要的,因为需要使用它来处理各种服务,不仅仅是简单的调用关系数据库的ajax风格web服务,而且还有大容量事务处理的财务服务。
也许很多企业的负责人听了这些对java ee 5赞扬的话,他们会迫不急待地尝试一下java ee 5。这对于那些已经或即将搭建soa构架的企业尤其重要。由于基于java的soa一般都是建立在j2ee服务器上,这就迫使企业必须做出是否升级到新版java ee的选择。
如果企业选择了java ee 5,那可能会增加后续的成本。这是因为java ee 5是基于sun最新的jdk的,因此,java ee 5增加了很多新的api。虽然这些api好象使java ee 5变得更简单了,但开发人员必须要学习一整套新的编程模型持久化的api。而这些企业必须为此增加培训的费用。
其实sun的初衷也是好的,只是简化java ee的做法不妥。也许sun还不明白,一味地增加功能并不能有效地简化java ee的使用难度,有时还可能适得其反。如果sun能够加一个用于开发的所见即所得(wysiwyg)的拖放系统,那才叫真正地简化开发。而象这样增加很多的api,甚至将编程的思维方式都改变了,这样做并不能使java ee平台变得更简单,而只是换汤不换药而已。
自从sun将java ee平台的设计移交给jcp后,对于java ee逐渐增加的复杂性,jcp也难辞其咎。作为jcp的成员,monson-haefel和jcp的所有成员应该为java ee 5变成今天这个样子而负责。实际上jcp的成员很早就和sun的java ee 5开发团队讨论过这个问题,但sun表现得并不积极。这样看来,jcp和sun都应该为此负一定的责任。
jcp的主管,onno kluyt却有不同的看法:“monson-haefel所看到的复杂性问题并不是jcp所负责的范围。jcp是一个制定标准的组织,并不是一个负责优化的组织,并不应该为java ee 5的复杂性负责”。同时kluyt还提到让java ee 5变得更简单最好方法就是有一个好的ide,简单是每个jsr所关注的,也是它们的中心任务。然而java ee的开发者并不知道怎么去做。毕竟,java ee是否简单,它的开发人员并没有发言权,而最有发言权的是那些使用java ee的人。”
java ee:路在何方
也许上面的喋喋不休使我们的头都大了,但我们可以不必管它。最后还得让sun来盖棺定论。终于,sun公司负责企业java平台的副总裁karen padir为java ee 5作了比较中庸的阐述:“平台当然要复杂了,因为它是应用服务器的规范。而且,应用服务器是很复杂的,因为复杂性的存在主要是为了开发人员能够在应用服务器上工作,但是应用程序的开发人员并不一定会涉及到复杂性,因为他们仅仅使用那些完成工作所必需的工具就可以了。开发人员可以忽略他们所不需要的复杂性”。
就象微软的office一样,虽然复杂,但并不是所有的人都会涉及到所有复杂的功能。因此,java ee并没有我们想象的那样复杂。反而通过jdk5的支持,在某些应用的性能上,如web services,会有很大的提高。因此,如果企业要建立新的应用(尤其是soa),还是可以考虑java ee 5的。对于那些已经使用多年的系统来说,升级时得要慎重一些。不过,从总体来说,java ee 5还是非常不错的。
虽然java ee 5在今天5月1日全票通过而得以顺利发布。在它发布的同时,也是褒贬声一片。也许会有很多企业选择java ee 5,但它在某此方面确实比那些轻量级的构架复杂。这也应该是sun下一步要改善的地方。
现在sun发布jdk的速度好象比以前快了,在明年jdk6将正式发布,而其中一项最吸引人的改进就是可以在jdk上运行非java语言。据red monk公司的分析师michael cote称,这一点非常关键,有了这项技术,java ee平台将具有更顽强的生命力。他完全没有打算签署java ee平台的死亡证明书。
当然,如果java ee现在停滞不前而且永远不改变的话,那么它就会变得陈旧,而一旦那些可供选择的平台增加了更多的企业级开发功能,java ee就可能会被更加简单、更加轻量级的平台所替代,比如ruby on rails。然而,如果java ee继续朝着简单化的目标前进,并且添加对多语言的支持,如javascript、php、ruby、python以及perl,那么它就可以保持企业级应用和服务开发平台这一地位。
阅读关于 j2ee java ejb sun 开源 的全部文章
闽公网安备 35060202000074号