Oracle正在向REST 和 JSON倾斜以使Java EE 适应微服务和云的现代趋势。
作为一种提供Web服务通信的机制,似乎REST从很久以前就抢过了SOAP的风头。SOAP 因其 复杂性已经饱受非议 ,而REST结合了JSON 和 HTTP,针对Web服务的交付提供了比其更为简单的手段。
简短截说,快进到现在,Oracle在它的Java EE升级计划中正在将REST 和 JSON作为关键一环。在社区抗议Oracle忽视的企业平台之后,该公司去年 开始针对微服务和云平台更新Java EE 。在这些计划中,初步成果为 定于今年八月推出的Java EE 8 。
“大家现在构建微服务的时候,往往倾向于做成基于REST的,以便向JAX-RS(Java API for RESTful Web Services,针对RESTful Web服务的Java API)靠拢,这个关键的规范正在升级中,”Oracle的产品管理副总裁Mike Lehman说。
JAX-RS要更新为规范JAX-RS 2.1,它所关注的能力包括:Server-Sent Events (SSE)、JSON-B与上下文的集成以及依赖注入(CDI)。Java EE 8的一个亮点是JAX-RS 2.1,从而可以更容易地进行REST通信,Lehman说它是粗粒度服务之间通信的典型方法,几乎就是默认选择。
一名前 Oracle Java EE 传道者仍积极地认为REST是微服务之锚。
“REST其实是大多数微服务的关键组成部分,”Reza Rahman(他是 一个Java EE兴趣小组 Java Guardians 的领导者,在CapTech担任高级架构顾问)说,“因此,JAX-RS 2.1( Java EE 8中的REST API )做了一系列改进。”
在近期的Java开发人员调查中,大家交口称赞针对 Java EE 的REST和微服务。Oracle在去年年底调查了1700位用户,发现REST和HTTP2是 Java EE中最为需求的两项技术。Oracle在十二月份中的报告称,大多数针对这两项技术的API都已经完成了,其中包括JAX-RS 2.1。另外,为更新各种不同的Java规范提案,Glassfish应用服务器的工作也在进行中,它提供了EE的参考实现。
在一次连带进行的调查中,Java EE Guardians和DZone发现44%的受访者正在寻求标准化的特性,比如能对微服务架构有所帮助的uber-JARs(特色是Java编程和依赖)、发现、度量、断路器和舱壁。而27%的受访者认为Java已经完全适合用于构建实际的微服务了。只有4%的受访者觉得微服务“不过是个噱头”。
Java用户还把 JSON-B放到了一个非常高的优先级上,JSON-B是用于绑定JSON的Java API。这个JSON数据交换格式提供了在线上格式化数据的机制,Lehman说。为此, Java EE 8 的特色将是JSON-B 1.0(用于绑定JSON对象到Java语言),以及提供解析API的JSON-P (JSON with Padding) 1.1。
“程序员编写一个微服务去调用另一个微服务,然后以REST访问载荷数据进行处理,这些特性会成为适用于这些程序员的方式,”Lehman说。
虽然HTTP2不是专门面向微服务的,但Java EE 8也针对这个规范进行了改善,它提供标准的HTTP2 API。
对于云来说,Java EE和Java自身仅仅是云平台上的运行环境,Lehman说。“他们需要与公共云平台进行交互的能力”,比如数据库访问,他补充道。
Java提供了与这些进行交互的编程API,比如REST 和 JSON。
“我们在Java EE 8中以及任何微服务平台中所想做的,是确保它们可以轻松与云服务进行交互,存储、持久层管理和监控,如此等等,”Lehman说。
Oracle还有一个 Java EE 9的目标,定于2018年,它的定位是增加可扩展性、独立的服务和键值对存储支持的能力。不过,Rahman担心Java EE 9是否得到了正确的关注。
“就我个人而言,对Java EE 9的关注使我担心我们是不是过早地标准化了还不应被标准化的特性,”Rahman说。他援引了一些特性进行例证,比如动态配置Java EE应用的新版API、针对OAuth/OpenID 连接的支持、服务健康度检查,以及基于Java SE 9的模块化。
然而Lehman并不赞同Rahman对Java EE 9的说法,所以他重申Oracle暂时专注于Java EE 8。“我们正在倾全力推出EE 8,现在这是我们主要的关注点,”他说。
Java EE 的当前版本Java EE 7发行于2013年6月,它增加了对HTML5的支持。Java EE7支持JAX-RS 2.0,适用于RESTful应用的。
本文首发于 InfoWorld 。
原文 http://www.infoq.com/cn/articles/oracle-set-the-future-of-java-ee-on-rest-api