Java EE 5的一个主要目标就是:使编程模型简单化,尤其对于Web服务而言。虽然,在此之前的版本J2EE 1.4,它能够支持简单对象访问协议(SOAP)和基于Web服务描述语言(WSDL)的Web服务,但是,有许多开发人员认为它过于复杂。Sun微系统公司Web服务部门的技术主管Nick Kassem说,当提供用于扩大Web服务和构建SOA的强大技术时,Java EE 5所作的改进能够更好地使服务满足松散耦合。
“对于我们的许多客户而言,如果不通过使用Java EE 5作为过渡的话,他们就很难实现SOA,”Kassem说。“Java EE 5是一个关键性的构建模块。实际的情况是,SOA对于大多数人来说意味着非常丰富的内容,而且,SOA还有很多方面。后端整合部分需要成熟的技术——正如今天的EE 5 所提供的技术。 ”
Java EE 5包括一个关键规范,这是为了加强Web服务并且使其支持简单化。这些是:基于XML 的Web服务的JAVA API(JAX-WS) 2.0版、XML绑定的JAVA架构(JAXB)2.0版、JAVA平台的Web服务元数据2.0版以及包含用于JAVA API附件的 SOAP 1.3版。
特别地,JAX-WS 2.0版本支持标记,并且使编程模型简单化。它与JAXB 2.0版本整合在一起,因此,所有的数据绑定都由JAXB 2.0版完成。JAX-WS 2.0版本能够支持附加的协议、传输和编码。同时,它也能够支持SOAP 1.1版本、SOAP 1.2版本、XML/HTTP协议以及REST风格的应用程序。除此之外,根据Sun公司的介绍,高级应用程序还能够使用低层面的、基于消息的JAX-WS 2.0版本的 API,以此来直接处理消息,而不需要对支持——运行时构建的、协议层以及传输层的支持——进行任何复制,。
“SOA的核心原则是:松散耦合——Web服务之间的松散耦合,以及服务之外的松散耦合,”Kassem说。“对于Web服务,最初,我们的[J2EE 1.4]所做的尝试是以远程过程调用(RPC)为中心的。之后,该尝试以惊人的速度发展到了JAX-WS 2.0 版本,这个编程模型的转变是非常重要的。该转变使我们能够建立与Web规模相符的、更加松散耦合的Web服务。[它]是一项重要的、以SOA为中心的新方案。同时,对JAXB 2.0版本的规范,我们也进行了很重要的改善,以使得数据绑定的质量更高。数据绑定的质量确实是相当重要的。因为,如果你所做的绑定不适合的话,那么,在实施SOA的过程中,就可能引起一系列的问题,而且无法得到正确解决。虽然,我们还没有完全达到目标——完全符合SOA的核心原则,但是,这些改进已经是一个很大的进步了。”
Sun公司的应用平台部门执行主管Jeet Kaul补充说道,“从J2EE 1.4 到Java EE 5,代码总量减少的相当多。而且,通过使用标记,一个懂得如何用JAVA编程的开发人员,就能够进行Web服务编程。编程模型的简单化,使得开发人员能够从最大程度上接受Java EE 5。简化编程模型与其他改进综合起来,使得Java EE 5更适合于服务开发。”
JBoss公司总部位于亚特兰大,根据其产品管理部副总裁Shaun Connolly所说,Java EE 5有三个方面的改进:EJB3.0 版本和JAVA持久化API、JSF,以及标记。“在我们的社团中,能够激发我们兴趣的是:与Web服务创建相关的JAVA标记。标记通过采用与Web服务进行交互的方式,能够为更简单的Web服务(如REST化的Web服务)提供更多的支持。与以前的重量级的基于SOAP的调用相比,标记这一方式更加适应于Web 2.0。”
遭到质疑
但是,有另外一些人发出质疑:尽管Java EE 5做出了很多改进,但是,对于应用程序开发而言,这个平台仍然过于复杂。Burton集团高级分析师Richard Monson-Haefel,曾经在今年夏天发表过的一篇报告中表明:对于JAVA EE作为主控企业平台,这只是“结束的序幕”。 Monson-Haefel说,在他发表该报告之后的六个月内,他的观点丝毫没有发生改变。他说,对于Web服务,Java EE 5所采用的方式,太过复杂并且是以API为中心。
“它仍然是一个相当复杂的平台。他们并没有通过使平台简单化的方式,来达到提高开发人员效率的目的,”Monson-Haefel说。“我们所看到的是,在企业开发中,作为首选平台的JAVA EE开始渐渐地被代替,很明显,导致这一现象的原因是,反其道而行之的框架频频出现,如Hibernate、Spring、Tapestry以及 Struts,这些框架并没有直接融合在EE的规范之内。这一现象表明:开发人员已经开始寻找更加简单的平台。有这样的解决方案:你可以使用JAVA EE,同时引入struts。虽然,有很多人声称,这样做是为了帮助EE成为一个很好的平台,但是,实际上,他们正在把EE分离,开发人员实际使用的仅仅是EE的框架,而不是EE平台的编程模型。”
他继续说,“开发人员靠自己的努力不断前进。很明显,我们看到,IT领域正在从巨大的平台转移到更为简单的解决方式,从而使生产效率更高,应用程序发布得更快。”
谈到对SOA的意义,Monson-Haefel回答说:“Java EE 5 是一个规范,用于应用程序服务器的创建。应用程序服务器与SOA并不是一个概念。Java EE 5能够使SOA发展得更好还是更坏,这个问题毫无意义。这无疑于问,一个火花塞会不会使一辆轿车变得更好。”
ZapThink LLC 公司的高级分析师Jason Bloomberg说,“从SOA的整体发展趋势来看,人们正在慢慢脱离Java EE 5。它变得越来越无意义。对于构建规模可变的、事务处理Web站点而言,EE是非常重要的架构。但是,它并不适合SOA。更多的人们理解它的局限性,并且意识到还有很多其他的基于JAVA的方法。但是,我们看到没有人对JAX-WS或者JAXB感兴趣。相反,我们看到,开源的JAVA站点和SOA同样受到大家的关注。这取决于人们试图完成的工作,但是,我们看到,对于JAVA基础结构的各个部分,有很多利用开源的ESB和Hibernate来完成的。而我们却没有发现人们对JAVA EE的任何兴趣。”
Monson-Haefel说,作为一个平台,JAVA本身是有意义的,但并不是EE。“我们认为标准版本是非常健康的,而且将继续占据主导地位,”他说。“但是,仅仅通过选择技术,你是无法达到SOA的。如果你实现了一个很好的SOA,那么,对于你而言,它能够使表层看起来并没有什么变化。”
探索争论
BEA 系统公司位于加利福尼亚州的圣路易斯市,其Workshop业务副总裁Bill Roth说,Java EE 5仅仅是“探索”。他说,“Java EE 5的Web服务元素,使服务开发变的更加简单。尤其是,EE 5中所采用的技术已经达到了标准化的程度,这使得更好的互操作性成为可能。Java EE 5的确是一个很好的平台。”但是,他补充道,“对于那些希望构建SOA的人们,EE 5几乎没有发挥任何作用。EE 5是关于服务激活、采用一个应用程序,以及激活一个服务的。SOA是关于在各种各样企业中构建复杂的结构的。EE 5和我们的WebLogic产品线,都是关于服务激活应用程序的。一旦你激活了足够的服务,那么,你就需要利用基础结构来管理/维护,以及监视/部署这些服务,并且把它们贯穿到SOA中去。”
他补充说道,“EJB3.0版本和JPA作为持久化的模型是非常适合的,而且应用范围也很广。对于程序员而言,这个选择是很好的,但是,如果我希望构建一个企业级的应用程序,同时贯彻我的CRM、应付帐款、ERP等等,那就试试EE 5吧。”
JBoss公司的Connolly说,对于SOA领域而言,JAVA EE是非常有用的,但是,它仅仅是众多解决方法之一。“当我使用SOA方法,为那些需要创建应用程序和服务的人们提供基础结构时,我能够采用三种不同的方法,”他说。“作为组建模型、主机式Web服务终端,以及用于门户和Web接口的平台,Java EE 5还是很有意义的。”在SOA领域,另外两种方式,他说,主要集中于用户交互、Ajax风格的开发,以及通过ESB和业务流程管理进行整合。
在面向服务的世界中,能够给开发人员进行选择的余地,这当然是非常重要的,Sun公司的Kaul说,Java EE 5不仅能够为那些希望快速构建简单Web服务的开发人员提供支持,也能够为那些构建复杂后台系统的开发人员提供支持。“我们希望能够吸引到众多的基础型JAVA开发人员,并且允许他们有所扩展。认为EE 5是复杂的,这一见解并不准确。我们有500万的JAVA开发人员,做EE的人员仅仅是其中一部分。作为EE SDK的一部分,我们试图带着JAVA开发人员走进SOA的世界。EE 5只是个过渡。我们还要不断地进行完善,来帮助他们构建服务并且使服务协作。”
Kassem补充说:“我们的客户都是非常成熟精明的,因此,需要阐明一点,你是无法骑着自行车到月亮上去的,这一点非常重要。我们已经尽了最大努力来使JAVA EE尽可能的简单,但是,还没有达到它应有的简单程度。
这个系列报告的第二部分,将对Java EE 5系统进行检测,以及检验关于目前用户团体的需求,Java EE 5的使用情况所表明的。