备受等候的 Java Enterprise Edition 8 宣布了两个令人欢快的全新 API (JSON-Binding 1.0 和 Java EE Security 1.0),并改造了现有的API(JAX-RS 2.1,Bean Validation 2.0,JSF 2.3,CDI 2.0,JSON-P 1.1,JPA 2.2 以及 Servlet 4.0)。这是 Oracle 的企业级 Java 平台近四年以来第一次宣布新版本,个中包括了数百项新特性、成果进级和错误修复。
哪些新特性是最棒的?我试图在这篇文章中答复这个很是主观的问题。
摘要:五大新特性
筹备好了么?我们开始吧。
1、新的安详 API
Java EE 8 添加的新安详 API 大概是最重要的新特性之一。
这个新 API 的主要念头是简化、尺度化及现代化跨容器和跨实现的安详问题处理惩罚方法。现有成效,尽如人意。
让我们仔细看看这些新增成果中的第一个。
注解驱动型的认证机制
这个成果主要用于设置 Web 安详。旧的方法要求在 web.xml 文件中声明。
得益于 HttpAuthenticationMechanism 接口,我们不必再利用旧方法。HttpAuthenticationMechanism 接口代表了一个 HTTP 身份验证,并附带了三个内置的 CDI 支持的实现,每个实现都代表了可设置的三种 Web 安详方法之一。
利用以下的注解之一触发特定的实现。
@BasicAuthenticationMechanismDefinition @FormAuthenticationMechanismDefinition @CustomFormAuthenticationMechanismDefinition
它们复制了 servlet 容器中已有的传统 HTTP 根基认证,表单和基于表单的自界说认证成果。
举个例子来说,若要启用根基认证,所要做的仅是把 BasicAuthenticationMechanismDefinition 注解添加到你的 servlet 中。
@BasicAuthenticationMechanismDefinition(realmName="${'user-realm'}") @WebServlet("/user") @DeclareRoles({ "admin", "user", "demo" }) @ServletSecurity(@HttpConstraint(rolesAllowed = "user")) public class UserServlet extends HttpServlet { ... }
此刻你可以丢弃 XML 设置,并利用上面的注解来驱动 Web 安详了。
2、JAX-RS 2.1:新的响应式客户端
让我们来看看 JAX-RS 2.1 中新的响应式客户端,以及它是怎么融合响应式编程气势气魄的。
响应式要领的焦点观念是数据流以及一个通过流来流传变革的执行模子。一个典范的例子是 JAX-RS 的要领挪用。当挪用返回时,将在要领挪用的功效上执行下一个操纵(大概是继承,完成或错误)。
你可以将其视作:数据酿成了一个异步的历程管道,后一个历程按照前一个历程的功效执行,然后将其历程的功效通报给链中的下一个历程。组件化的流让你得以组合和转化多个流到一个功效中。
通过挪用 rx()Invocation.Builder 实例顶用于结构客户端实例的要领,以此启用响应式的成果。此要领返回一个携带 Response 范例的 CompletionStage 实例。 CompletionStage 接口在 Java 8 中引入,并提出了一些有趣的大概性。
譬喻,在这个代码片断中,两个挪用是对差异的端点举办的,然后将功效归并:
CompletionStage<Response> cs1 = ClientBuilder.newClient() .target(".../books/history") .request() .rx() .get(); CompletionStage<Response> cs2 = ClientBuilder.newClient() .target(".../books/geology") .request() .rx() .get(); cs1.thenCombine(cs2, (r1, r2) -> r1.readEntity(String.class) + r2.readEntity(String.class)) .thenAccept(System.out::println);
3、新的 JSON 绑定API
此刻让我们来看看下一个优秀的新特性。新的 JSON 绑定 API为 JSON 的序列化和反序列化提供了一个原生的 Java EE 办理方案。