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。