Java EE 8的工作仍处于初期阶段,预计在来年会紧跟潮流,我们将看到专家组的形成完成,围绕用例/功能的更多讨论,许多JIRA,以及各种规范的草案版本(本会很有趣!)。
在第1部分中 ,我们研究了Java EE 8中包含的新规范 。在本文中,让我们看一下为进一步增强而排队的现有规范( 非常重要 !)
更新规格清单
- CDI 2.0(JSR 365)
- JAX-RS 2.1(JSR 370)
- Servlet 4.0(JSR 369)
- JSON-P 1.1(JSR 374)
- JMS 2.1(JSR 368)
- Java EE管理2.0(JSR 373)
- JSF 2.3(JSR 372)
让我们一一看一下……。
CDI 2.0(JSR 365)
自从其在Java EE 6中诞生以来,CDI已成为Java EE平台中不可或缺的一部分。 CDI的巨大成功导致社区需求,以进一步加强其与平台中不同规范的集成。 查看Java EE 8社区调查结果的第5-7页。
目标
- 与Java SE 8对齐(当然!)–利用Java 8好东西,例如Lambda,流,可重复注释,默认方法等
- 支持Java SE –标准化Java SE的依赖注入API。 各个CDI实现(Weld等)确实支持Java SE,但是需要使用特定于供应商的方式来使用它们。 希望可以解决此问题,我们将拥有一个用于在Java SE和EE上使用CDI的标准API!
- CDI模块化 –将CDI拆分为易于管理的模块,从维护以及采用/实施的角度使事情变得更容易
- 增强的事件 –一项主要增强功能是引入了异步事件 ,该事件到目前为止还没有出现(CDI 1.2)。
- 其他功能 – AOP(拦截器和装饰器)和SPI相关的增强功能
现在还很早,到目前为止还没有什么可以确定的。 事情正在发展,并将继续如此。 可以在官方CDI规范页面上访问所有最新更新。
这是我几天前发布的博客 ,其中包含有关CDI 2.0的更多详细信息。
快速链接
- JCP页面
- 参考实施– JBoss Weld
- JavaOne 2014上的最新演讲 – 以CDI 1.2为中心
JAX-RS 2.1(JSR 370)
有了即将发布的目标和功能,令我惊讶的是该修订版被称为2.1 –可能是3.0, 但这只是我的一般意见 。
EE 8计划
- 与CDI紧密集成
- 对服务器发送事件(SSE)的支持 –社区要求的标准包括服务器发送事件的标准API,正如Java EE 8社区调查结果的第2页所示。 如果您还没有听说过SSE或不了解SSE,则可以将其视为一条中间路径,其中包括b / w HTTP(基于请求响应)和WebSockets(全双工和双向)。
注意 :* Jersey提供对SSE的支持,但它不是JAX-RS标准的一部分,因此不可移植。 您可以在这里内容 *
- 与JSON-B集成– JSON-B是我在上一篇文章中提到的另一个Java EE 8候选人。 当前,JAX-RS为JAXB提供了无缝的现成支持。 JSON-B也计划这样做。 您所需要做的就是用JSON-B注释定义模型类,并将其余的留给JAX-RS运行时!
- 对安全的明确支持–确保RESTful服务的安全一直是一个话题。 尽管仍可以应用标准的Java EE Web(servlet)和业务(EJB)层安全性,但是JAX-RS不支持用于声明性或程序性安全性的标准方法。 但是这里的目标将是标准化JAX-RS特定的安全功能或利用Java EE Security 1.0(JSR 375) (另一个Java EE 8候选者)
- 为JAX-RS提供程序启用NIO (非阻塞I / O)。 这是对自JAX-RS 2.0以来已经存在的异步(服务器和客户端)功能的补充。
- 管道中的其他功能包括支持通过JAX-RS进行反应式编程,改进JAX-RS 2.0中引入的Hypermedia API(HATEOAS)以及支持
快速链接
- JCP官方页面
- 参考实施– 泽西岛
- 让我们来谈谈JAX-RS.next!
- Java One 2014讨论了Jersey的最新功能 – Java One 2014的另一个好东西!
Servlet 4.0(JSR 369)
Servlet是Java EE中最古老,最重要的规范之一。 在它之上还建立了其他几个规范(JAX-RS,WebSockets等)。 Servlet 4.0将专用于HTTP / 2。 其主要目标是为Servlet API提供HTTP / 2功能。
目标
- 请求/响应多路复用
- 流优先级
- 服务器推送
- 从HTTP 1.1升级–使用API中的现有升级功能(从HTTP到Web套接字)来启用到HTTP / 2的升级
快速链接
- JCP官方页面
- 在Java One 2014上的演讲– Java实现HTTP 2.0:Servlet 4.0对您意味着什么
- 另一个来自Java One 2014 的带有Servlet Async IO的狂野之路 -面向Servlet 3.1
JSON-P 1.1(JSR 374)
JSON-P 1.0在Java EE 7中引入,为开发人员提供了处理JSON的标准API,而无需打包第三方实现。 这帮助Java EE 7真正符合HTML5标准(其关键主题之一)。 JSON-P 1.1更像是具有修复和改进功能的维护版本。
Java EE 8有什么计划?
- 与Java SE 8保持一致 –尽管目标显而易见,但仍然很有趣。 可以增强API以使用Java 8收集器,并提供JSON解析器事件的Stream表示。
- 结合了对JSON规范本身更新的支持-JSON指针和JSON补丁
- 支持修改(以前是不可变的)JSON对象(可能通过类似Builder的实现)
快速链接
- JCP官方页面
JMS 2.1(JSR 368)
JMS 2.0(JSR 343)带来了巨大的改进,特别是在简化API itslef方面。 结果是易用性和开发人员生产率–这是Java EE 7的中心主题之一。JMS2.1计划引入一些重要的更改/添加以及一些常规的改进–让我们来看看
- 与Java SE 8保持一致 –我认为这并不令人惊讶(可重复的批注,lambda等)
- 异步消息传递方法的变化 (寻找替代想法)–计划是将MDB的想法扩展到一般的任何CDI bean,并消除必须实现MessageListener接口的约束。 任何CDI bean都可以采取异步方式接收消息。
- 杂项改进,例如在Java EE事务中使用时的JMS提供程序行为,JMS提供程序与Java EE应用服务器的可移植性,在MDB抛出异常的情况下重新传递消息
考虑到CDI 2.0也将支持异步事件,有趣的是,看看这两个规范如何处理通常处理异步事件/消息处理的功能。 另外,还需要查看该特定功能是否最终会使MDB过时。
快速链接
- JCP官方页面
Java EE管理2.0(JSR 373)
简而言之,该JSR旨在成为J2EE管理规范(JSR 77)的现代对应物。 REST是现代化的代名词,Java EE Management JSR计划采用REST作为事实上的接口,用于与托管对象进行通信并提供诸如
- 将托管对象上的CRUD操作公开为RESTful接口
- 利用SSE分发事件以响应被管理对象状态的变化
- 使用REST接口(通过相同的接口进行部署和管理)来启用Java EE应用程序的部署-与还处理Java EE应用程序部署的JSR 88相比有很大的不同
截至目前,从工作的角度来看,事情有点安静。 但是我非常确定,我们将在新的一年中采取很多行动!
快速链接
- JCP官方页面
JSF 2.3(JSR 372)
看起来JSF 2.3将由社区的投入和反馈来驱动。 查看Java EE 8社区调查结果的第3、4、5页,以了解有关MVC以及JSF的模板引擎的反馈。
目标
- 利用Java SE 8以及Java EE 8平台本身的其他功能
- 增强了对JSF Ajax API的支持 ,以允许对CDI托管(控制器)bean的直接Ajax调用(这听起来很有希望!),这将使通过客户端和Java EE后端交换JSON消息变得简单。
- 结合了JSF用户社区急需的功能-EL性能改进,多字段验证等
- 支持MVC 1.0 – JSF为MVC的“ V”(视图)部分提供了很多功能(Facelets,faceflow,JSF CDI范围等)。 看看对MVC 1.0的JSF进行哪些更改/添加会很有趣
快速链接
- JCP官方页面
就Java EE 8优点而言,这一切吗? 当然不是。 其他规范也将进行修订和改进–它们很快就会成为众人关注的焦点。 这是其他规格的快速概述以及预期的结果
- EJB 3.2 (维护版本)
- JPA 2.1 (维护版本–支持Java 8 DateTime API和重复注释)
- WebSocket 1.0 (维护版本)
- JTA和Java Mail规范也可能需要维护版本
有关Java EE 8专家组电子邮件讨论的更多信息
Java EE 8刚刚开始热身。 我很确定这次旅程会令人兴奋! 敬请关注…。
干杯!
翻译自: https://www.javacodegeeks.com/2014/12/whats-up-with-java-ee-8-part-2.html