本期的 Java 新闻包括 OpenJDK、JDK 20、Jakarta EE 10、Spring Cloud 2021.0.4、Quarkus 2.12.1、Micronaut 3.6.2 和 3.6.3、Helidon 2.5.3、JDK 8 维护版本的重要变更、Hibernate ORM 6.1.3、Reactive Native JHipster 4.3.0、Apache NetBeans 15、Apache Groovy 4.0.5、Apache Camel 3.18.2、Ktor 2.1.1 以及 JavaZone 会议。
OpenJDK
JDK 的回归测试工具jtreg 7 版本发布,其特性包括升级至 JUnit 5,提供了Jupiter API并支持运行现有的 JUnit 4 测试和标签语言规范(Tag Language Specification)。第三方库 JAR 文件的命名约定已经变更为使用jtreg
构建时指定的 JAR 文件的基础名称。这个名称可能依赖于库的版本。受此影响的 JDK 测试均已更新。jtreg
7 支持的最低版本是 JDK 11。
JDK 19
JDK 19依然处于发布候选阶段,预计 GA 版本会在 2022 年 9 月 20 日发布。发布说明包含了文档的链接,比如完整的API规范以及一个标注的API规范,后者对比了 JDK 18(Build 36)和 JDK 19(Build 36)的差异。关于 JDK 19 的更多细节和对 JDK 20 的预测可以参阅 InfoQ 的新闻报道。
JDK 20
JDK 20 的早期访问构建版本Build 14发布,它是对 Build 13 的更新,包括对各种问题的修复。关于该版本的更多细节,请参阅发布说明。
对于JDK 19和JDK 20,鼓励开发者通过Java Bug数据库报告缺陷。
Jakarta EE 10
在通往 Jakarta EE 10 的路上,Eclipse 基金会的 Jakarta EE 开发人员倡导者Ivar Grimstad在他的 Hashtag Jakarta EE周报上宣布,Jakarta EE 10 的Platform Profile和Web Profile审查投票已经开始,预计会在 9 月 13 日结束。Core Profile已经在 8 月份通过了审查。这似乎是一个好的信号,Jakarta EE 10 有可能会在本月正式发布。关于 Jakarta EE 规范的更多细节可以参阅 Grimstad 在JavaZone上做的题为Jakarta EE 10 - Feature-by-Feature的演讲。
Spring 框架
代号为 Jubilee 的 Spring Cloud 2021.0.4 版本发布,其特性包括对所有Spring Cloud子项目的更新,在Config, Gateway、OpenFeign和Circuit Breaker方面都有明显的变化。关于该版本的更多细节,可以参阅发布说明。
Quarkus
Red Hat发布了 Quarkus 2.12.1.Final,对RequestContext类的性能下降问题进行了修复。此外,还对Smallrye OpenAPI 2.2.1 和Dekorate 2.11.2 进行了依赖升级。关于该版本的更多细节,可以参阅发布说明。
Micronaut
Micronaut 基金会发布了3.6.2和3.6.3版本的Micronaut,对 Micronaut 的一些模块进行了缺陷修复和补丁发布,例如Security、Email、Micronaut for Spring、Tracing、Flyway、AWS、Serialization和Data。3.6.2 版本还提供了升级后的 SnakeYAML 1.31,它解决了CVE-2022-25857漏洞,在之前版本SnakeYAML中的这个漏洞缺少对集合嵌套深度的限制,很容易导致拒绝服务攻击(Denial of Service)。关于这些版本的更多细节可以在3.6.2和3.6.3版本的发布说明中找到。
Helidon
Helidon 2.5.3发布,其中有许多变化,包括在 gRPC 组件中升级了 protocol buffer 以支持osx-aarch_64
架构;在 Security 组件中实现了 access token 刷新;在 Config 组件中修复了为 watcher 服务获取父目录的问题。此外,还对 SnakeYAML 1.31 和 Oracle Cloud Integration Integration 2.41.0 进行了依赖升级。
BellSoft
BellSoft是Liberica JDK(OpenJDK 的下游发布版)的创建者,他们讨论了一些重要的变更,这会影响将于 2022 年 10 月发布的 JDK 8 Maintenance Release 4。核心变化是 JDK-8202260,也就是JDK缺陷系统中定义的引用对象不应该支持克隆(Reference Objects Should Not Support Cloning),它描述了在 Java SE 8 平台中发现的一个重要问题:
在 Java SE 规范中,并没有明确定义克隆引用对象的语义。克隆与垃圾回收密切相关,如果引用对象的可达性状态在 GC 活动中发生变化,收集器可能在代码调用
clone()
方法之前,对该对象进行入队(enqueue)。结果就是,克隆的对象不会被入队和引用。从而导致高度不可预知的引用处理。
在 JDK 9 和 JDK 11 中进行了一些后续的变更,这些变更会回传到 JDK 8 Maintenance Release 4 中。例如,在 JDK 11,Reference.clone()方法始终会抛出一个CloneNotSupportedException
异常。
Hibernate
Hibernate ORM 6.1.3.Final发布了一项优化,其中带有@JdbcTypeCode(SqlTypes.JSON)和 @JdbcTypeCode(SqlTypes.SQLXML)注解的字符串将不会被序列化为 JSON/XML。相反,它们会被解析为纯 JSON/XML,以避免序列化/反序列化的开销。
React Native JHipster
在JHipster 7.9.3发布后不久,JHipster React Native的 4.3.0 版本已交付给Java 社区。改进之处包括:通过React Native 0.69.5 和 React 18 升级到Expo SDK 46;迁移到Expo Application Services;支持基于 Auth0 的注销;为 GitHub Actions 使用 Node 16;大量的依赖升级;以及使用 Keycloak、Okta 和 Auth0 改进质量保证。关于这个版本的更多细节可以参阅发布说明。
Apache 软件基金会
Apache NetBeans 15发布,其特性包括:支持 JEP 413,即Java API文档中支持代码片段(Code Snippets in Java API Documentation)(在 JDK 18 中交付);清理代码库,删除对 Windows 95 和 Windows 98 的支持;升级到Maven-Indexer 6.2.0,包括删除避免IndexOutOfBoundsException的临时方案;以及更新到 Oracle Cloud Integration 2.27.0。关于这个版本的更多细节可以参阅发布说明。
Apache Groovy 4.0.5发布,它具有 56 个缺陷修复、改进和依赖性升级,比如,JUnit Jupiter 5.9.0、JUnit Platform 1.9.0、Gradle 7.5.1、Spock 2.2 和 slf4j 2.0.0。 唯一的新特性是对DateUtilExtensions类的增强,以便检索静态日历常量的子集。关于这个版本的更多细节可以在发布说明中找到。
Apache Camel 3.18.2发布,它包含了 50 个错误修复和改进,例如:支持Camel Freemarker组件中的邮件附件;以及处理CamelMicroProfilePropertiesSource
类中loadProperties()
方法中的NoSuchElementException
。还有一些依赖性的升级,包括 Spring Boot 2.7.3 和 gRPC 1.48.1。关于这个版本的更多细节可以在发布说明中找到。
JetBrains
JetBrains发布了 Ktor 2.1.1,其特性是改进了以下问题:Netty HTTP/2 的异常;JDK 8 和 JDK 11 在构建 Ktor 时的不匹配;以及废弃receiveOrNull()
方法,该方法被认为令人感到困惑。关于这个版本的更多细节可以在更新日志中找到。
JavaZone Conference
JavaZone会议在挪威奥斯陆的Oslo Spektrum举行,来自 Java 社区的许多演讲者发表了闪电演讲、报告和工作坊。
原文链接:
Java News Roundup: NetBeans 15, Jakarta EE 10, jtreg 7, Spring Cloud, Groovy, Helidon, Micronaut
评论