对于 Java 业界动态汇编,本周(2021 年 11 月 22 日版)是相对平静的一周。关注焦点是 OpenJDK JEP、JDK 18、织机项目(Project Loom)Build 18-loom+6-282、Spring HATEOAS 1.4、Micronaut 3.2、Quarkus 2.5.0、 Apache Camel Quarkus 2.5.0 和 JDKMon 17.0.14。
OpenJDK
JEP 419,即外部语言交互(Foreign Function)和Memory API(第二轮孵化),已结束审查,在 JDK 18 中的状态从“Proposed to Target”提升到“Targeted”。JEP 419 是直接从 JDK 17 中交付的 JEP 412 演化而来,即外部语言交互和Memory API(第一轮孵化),是对 Java 社区反馈的进一步改进。第二轮孵化中的改进涉及:支持更丰富的内存访问变量句柄承载器(carrier),例如boolean
和MemoryAddress接口;为MemoryAddress
和MemorySegment接口提供更通用的解引用(dereference)API;简化了获取向下调用(downcall)方法句柄的 API,无需传递MemoryType枚举类型;新提供了从内存段拷入拷出 Java 数组的 API。
此外,JDK 18 中 JEP 420(即switch中的模式匹配(第二版预览))的状态同样从“Proposed to Target”提升到“Targeted”。JEP 420 是 JDK 17 交付的 JEP 406(switch中的模式匹配(第一版预览)的第二版预览,支持switch
表达式验证多组模式,可根据数据精准地表达复杂的查询,进而采取对应的行动。JEP 420 中的改进涉及:对支配性检查(dominance checking)的改进,强制常量标签case
的出现先于同类型保护性模式(guarded pattern);使用密封(sealed)层级实现更精准的switch语句块有尽性(exhaustiveness)检查。
Oracle Java 语言架构师Brian Goetz曾在 2017 年 9 月对此接受过InfoQ专访,此时模式匹配尚处概念原型(PoC)阶段。而操作符instanceof
的模式匹配功能,实现在JDK 16交付的JEP 394中。
JDK 18
JDK 18先期访问构建版(early-access builds)针对 Build 24 中的多个问题做了关键更新,并于上周公开提供Build 25。具体细节,可参见“发行说明”。
下面列出了JDK 18当前的特性集:
JEP 400: 缺省UTF-8
JEP 408: 简化版Web服务器
JEP 413: Java API文档中的代码片段
JEP 417: Vector API(第三轮孵化)
JEP 418: 因特网地址解析SPI协议
JEP 420: switch语句的模式匹配(第二版预览)
鼓励开发人员通过Java Bug Database上报软件缺陷。
织机项目(Project Loom)
织机项目先期访问构建版已向 Java 社区公开提供了 Build 18-loom+6-282,该版本基于 JDK 18 先期访问构建版的Build 24。
Spring 框架
Spring HATEOAS 1.4 于上周发布,这是 Spring 团队过去数周持续努力中可圈可点的工作。其中的新特性包括:支持 level 4 URI 模板;支持非组合请求参数(RequestParameter)渲染;改进了对HAL-FORMS媒体类型的支持;支持更丰富的 HTML 输入类型;对 Spring Framework 5.3.13 和 Jackson 2.13.9 的依赖升级。更多细节,参见“变更日志”。
Micronaut
Micronaut基金会已发布 Micronaut 3.2,主要特性包括对 GraalVM 21.3.0、Gradle Plugin 3.0.0、Kotlin 1.6.0 和一众 HTTP 特性的支持,以及对Micronaut Data、Micronaut Security, Micronaut Kubernetes、Micronaut Elasticsearch等部分自身模块等升级。更多细节,参见官方文档。
Quarkus
Red Hat 已发布 Quarkus 2.5.0.Final,其中特性包括:对Mandrel 21.3依赖的升级;GraalVM社区版的下游衍生版;支持原生模式的 JPA EntityListeners for Hibernate ORM;使用quarkus.http.header
属性将HTTP头部添加到服务器响应中;对 Quarkus扩展、开发模式和测试框架在可用性上的改进。
Apache Camel
为与Quarkus保持一致,Camel Quarkus 2.5.0 版发布了 Quarkus 2.5.0.Final 版的 Apache Camel 3.13.0 平台,在测试覆盖和文档上做了一定改进。更多细节,参见“问题列表”。
JDKMon
JDKMon的最新版17.0.14已向 Java 社区公开提供。JDKMon 是一款对已安装 JDK 进行监控和更新的新工具,由 Azul 首席工程师Gerrit Grunwald创建。新版交付的特性包括:在搜索路径中自动添加由 SDKMAN!代理的JDK发行版以及所有相关 Java 目录;对任何可用更新给出说明发行细节的链接。
原文链接:
Java News Roundup: Micronaut 3.2, Quarkus 2.5, JDK 18, Spring HATEOAS 1.4, JKDMon 17.0.14
评论