2021 年 10 月 11 日起始周 Java 新闻更新:OpenJDK、JDK 18、Spring Framework、Grails 5.0、Micronaut 3.1、Helidon 2.3.4、Hibernate ORM 和 Hibernate Reactive GA 版本、与 WildFly 25、GraalVM Native Tools 0.96、Apache Camel 3.11.3、Piranha 21.10.0 相关的更新,以及 Kotlin 的 Multik 多维数组开发库。
OpenJDK
经过一周的评审,JEP 408,也就是 Simple Web Server 由 JDK 18 的 Proposed to Target 状态进入到了 Targeted。这个 JEP 提供了一个基于 HTTP 命令行的、最小化的、只提供静态文件的 Web 服务器。这个工具主要用于构建原型、临时编码和测试,特别是在培训环境中。这个 Web 服务器可以通过以下命令来启动:
$ java -m jdk.httpserver [-b bind address] [-p port] [-d directory] [-h to show help message] [-o none|default|verbose]
复制代码
JEP 419,也就是外部函数和内存 API 从 Draft 状态进入到了 Candidate。该 JEP 从 JEP 412(已在 JDK 17 中发布)演化而来,基于 Java 社区的反馈做了改进,主要变更包括:支持更多的内存访问变量句柄,如 boolean 和 MemoryAddress 接口;MemoryAddress 和 MemorySegment 接口的解除引用 API;简化持有调用方法句柄的 API,不再需要传递 MemoryType 枚举;在内存段之间拷贝数组的新 API。
JDK 18
JDK 18 尝鲜构建版Build 19可用,修复了在 Build 18 中存在的各种问题,更多细节可参看发布公告。
JDK 18 目前的特性集合如下:
-
JEP 400:默认字符集为UTF-8;
-
JEP 408:Simple Web Server;
-
JEP 413:Java API文档中加入了代码片段;
-
JEP 417:Vector API(第三个孵化器)。
开发者可以通过Java Bug Database提交 bug。
Spring Framework
Spring Framework 发布多个单点版本。
5.3.11 版本包含了 32 个问题修复和改进,5.2.18.RELEASE 版本包含 10 个问题修复和改进。这个两个版本都提供了一个增强的 DefaultResponseErrorHandler 类,可以将整个错误响应消息体记录到日志当中。5.3.11 版本的其他新特性包括:支持非公开的 Record 声明;可以直接调用实现了 Closeable 和 AutoCloseable 接口的类的 close()方法。
Grails
Grails 基金会发布了 Grails 5.0,升级了多个依赖项:Apache Groovy 3、Micronaut Framework 3、Gradle 7、Spring Boot 2.5、Spring Framework 5.3 以及 Spock 2.0。其他值得注意的变更还包括:弃用基于点号的访问模式;默认按类型装配,取代了按名字装配;Gradle 插件改动。更新细节可在发布公告和文档中找到。
Micronaut
Micronaut 基金会发布了Micronaut 3.1,带来了大量的新特性,包括:支持 JDK 17;工厂 Bean 可以创建原始类型或原始数组类型的 Bean;新的 @InjectScope 注解,用于销毁无定义作用域的 Bean;对生成类的自检进行了优化;改进了针对 Kotlin 的上下文传播;在 HTTP 过滤器中使用正则表达式。
Helidon
Helidon 2.3.4 发布,改进的特性包括:修复了 WebServer 组件存在的问题,比如 Netty 服务器在负载下会挂起,以及在检查消息体是否被完全读取时出现的静态条件;修复了 WebClient 的一个问题,如果一个主机地址出现在一个非主机列表中,将其转换成相对的请求 RUI;修复了与 Metrics 组件相关的问题,如新的 PeriodExecutor 类会错误地记录警告信息,警告信息的消息可能是错误的,以及指标性能优化导致的原生镜像构建错误。更多细节可以参看发布公告。
Hibernate
Hibernate 发布了Hibernate ORM的单点版本和Hibernate Reactive的 GA 版本。
Hibernate ORM 5.6.0.Final 修复了同时使用 @EmbeddedId 和 @MapsId 时会出现的一个错误,将依赖项 ByteBuddy 升级到 1.11.20,增加了为升级到 Hibernate ORM 6.0 而发出的弃用警告信息。
Hibernate ORM 6.0 第一个 Beta 版本的特性包括:迁移到了 Jakarta Persistence;改进的类型系统,引入了新的根据位置读取 JDBC 记录的概念;新的类型注解;改进的时间区域支持。更多细节可以在用户指南、迁移指南和发布公告页找到。
Hibernate Reactive 1.0.0.CR10 发布,支持 MySQL、DB2 和 MS SQL Server 的自动模式验证和更新。
WildFly
WildFly 团队向 Java 社区发布了很多与 WildFly 25 相关的更新。
WildFly 25 的源码到镜像(Source to Image,S2I)Docker 镜像已在 quay.io 上发布,用于构建、分析和发布容器镜像。这些镜像包含了与 WildFly 25 GA 版本相关的更新。
WildFly Bootable JAR 6.0 Maven 插件发布,特性包括:Galleon 配置示例;自动生成自签名安全证书;原生支持 OpenID Connect。更多细节可以参看这篇博文。
WildFly 25 现在支持 MicroProfile Reactive Messaging 2.0 规范,基于SmallRye Reactive Messaging实现。开发者现在可以使用 @Channel 注解和 Emitter 接口将数据推送到响应式流中。
GraalVM
在 1.0 版本之前,Oracle 实验室发布了 0.9.6 版本的Native Build Tools,提供用于操作 GraalVM 原生镜像的插件。该版本集成了 JUnit 5.8,不过也引入了一个重大变化,导致 Maven 用户需要定义插件扩展。
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
<version>${native.maven.plugin.version}</version>
<extensions>true</extensions>
</plugin>
复制代码
不再需要 junit-platform-native 依赖项,不过 Gradle 用户仍然需要这个依赖项。
Apache Camel
Apache Camel 3.11.3 发布,包含 26 个 bug 修复和改进,包括:依赖项 Apache Karaf 升级到 1.1.11、Camel Spring Boot 升级到 2.5.5。更多细节可参看发布公告。
Piranha
Piranha 21.10.0 发布。该版本号称是“第一个支持版本”,提供了一个新的支持分支,与自 JDK 17 以后的 LTS Java 版本对齐,并支持 Jakarta EE。更多细节可以在官方文档和问题追踪系统中找到。
Kotlin Multik 开发库
JetBrains 发布 Multik 0.1,一个新的多维数组开发库,可以读写.csv 文件,执行代数运算,支持复数,并改进了已有函数的性能。更多细节可以在这篇博文中找到。
原文链接:
Java News Roundup: Grails 5.0, Spring Framework, Hibernate, WildFly and the Kotlin Multik Library