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,那么它就可以保持企业级应用和服务开发平台这一地位。
(责任编辑 火凤凰 sunsj@51cto.com TEL:(010)68476636-8007)
|
|||
| · 51CTO主编推荐经典专题 · RAID——磁盘阵列基础 · 充电计划之热门IT认证.. · 51CTO技术自测 挑战自.. · CISSP认证成长之路 · AMD Phenom三核处理器.. · 国际文档格式标准开战 · 2007年互联网大会 |
· 我是黑客我怕谁——讲.. · ARP攻击防范与解决方案 · Solaris 10 配置管理 · Solaris基础知识入门 · RIP路由协议专栏 · MPLS路由协议专栏 · OSPF路由协议专栏 · 思科路由器产品 |
||
|
|||
| · Java基础教程 · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · RAID——磁盘阵列基础 |
· 三层交换技术专题 · SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · Solaris 10 配置管理 · C#技术开发指南 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · RAID——磁盘阵列基础 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·拯救系统管理员 ·美国选民:我为什么选布什 |
·VMware公司中文命名挑战赛 ·我们真缺乏创新吗? |
| ·J0ker的CISSP之路:复习-.. ·J0ker的CISSP之路:复习-I.. |
·9月第3周安全回顾 内网安.. ·教你几招识别和防御Web网.. |
| · NGN:下一代网络 · 网络访问中断大排查 · FTTx光纤接入 |
· 教你使用Anti ARP Sniff.. · 网络嗅探教程:使用Snif.. · 常见病毒手工清除方法大.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· 费力不讨好 数据中心主.. · AMD Phenom三核处理器解.. · 51CTO主编推荐经典专题 |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. · 双机热备技术 |