欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 宝鼎售后问题提交 | 后台管理


新闻资讯

MENU

软件开发知识
本文由 ImportNew - enigma 翻译自 dzone。接待插手翻译小组。转载请见文末要求。

备受等候的 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:注解驱动型的认证机制。这个全新的安详API包括了三个优秀新成果:身份储存的抽象层,新的安详上下文,以及一个注解驱动型的认证机制——这使得用 web.xml 文件声明的方法过期了。最后一个成果我们将会在本日讲到。
  2. JAX-RS 2.1: 新的响应式客户端。JAX-RX 2.1 中新的响应式客户端,融合了响应式编程气势气魄,答允组合端点功效。
  3. 新的 JSON 绑定 API。新的 JSON 绑定 API,为 JSON 的序列化和反序列化提供了一个原生的 Java EE 办理方案。
  4. CDI 2.0: 在 Java SE 中利用CDI。CDI 2.0 中的这个有趣的新成果答允在 Java SE 中引导 CDI。
  5. Servlet 4.0: 处事器推送。Servlet 4.0 中的处事器推送成果使得 servlet 类型和 HTTP/2 保持一致。

筹备好了么?我们开始吧。

1、新的安详 API

Java EE 8 添加的新安详 API 大概是最重要的新特性之一。

这个新 API 的主要念头是简化、尺度化及现代化跨容器和跨实现的安详问题处理惩罚方法。现有成效,尽如人意。

  • Web 认证的设置因为三个新的注解而实现了现代化,昆山软件开发,web.xml 以后变得冗余。详细稍后再说。
  • 新的安详上下文 API 尺度化了 servlet 和EJB 容器执行身份验证的方法。
  • 新的身份储存抽象层简化了身份储存的利用。
  • 让我们仔细看看这些新增成果中的第一个。

    注解驱动型的认证机制

    这个成果主要用于设置 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 办理方案。