OpenJDK
Oracle Java 语言架构师 Brian Goetz 提交了 JEP Draft 8324965(类文件 API(第二次预览))进行第二轮预览,以获取对前一轮预览的反馈:在 JDK 22 中交付的 JEP 457(类文件 API(预览))。这个 JEP 提议提供一个 API 来解析、生成和转换 Java 类文件。这最初将作为 JDK 中 ASM(Java 字节码操作和分析框架)的内部替代品,并计划将其作为公共 API 开放。Goetz 将 ASM 描述为 "一个古老的代码库,带有大量的遗留问题",并提供了 背景信息,说明这个草案将如何发展并最终取代 ASM。
JDK 23
JDK 23 早期访问版本 的 Build 8 已发布,包含了针对 Build 7 的 更新,其中包括对各种 问题 的修复。关于这个版本的更多详细信息可以在 发行说明 中找到。
JDK 22
JDK 22 早期访问版本的 Build 34 已发布,包含了针对 Build 33 的 更新,其中包括对各种 问题 的修复。关于这个版本的更多详细信息可以在 发行说明 中找到。
对于 JDK 23 和 JDK 22,开发者可以通过 Java Bug Database 报告 bug。
GlassFish
GlassFish 7.0.12(第十二个维护版本)主要集中在查找和修复以往出现的几个“奇怪”的 WebSocket 相关 bug 的根本原因上。新特性包括:对 servlet 缓存过滤器的优化,消除在高请求速率下可能多次加载相同资源;在 AdminGUI 中新增了一个新的传输层安全 (TLS) 复选框;向 start-cluster
命令添加了一个新的 --debug
选项,类似于 start-domain
和 start-instance
命令,可以在调试模式下启动所有实例。关于这个版本的更多详细信息可以在 发行说明 中找到。
GraalVM
Oracle Labs 发布了 0.10.0版本 的 Native Build Tools,这是一个 GraalVM 项目,包含了与 GraalVM 原生镜像互操作的插件。这个最新版本提供了:文档的改进;依赖项升级;支持工作流矩阵中测试数组的并发性;以及减少每次测试执行所需的时间。关于这个版本的更多详细信息可以在 变更日志 中找到。
Spring Framework
Spring Cloud 2022.0.5(代号 Kilburn)已经 发布,其中包括对子项目的更新,例如:Spring Cloud Vault 4.0.2、Spring Cloud Kubernetes 3.0.5、Spring Cloud OpenFeign 4.0.6 和 Spring Cloud Config 4.0.5。其中有一些重大变更,包括:由于在 Spring Framework 6 中移除了 AsyncRestTemplate
类,因此移除了 Spring Cloud LoadBalancer 的自动配置;移除了 spring.cloud.kubernetes.enabled
属性,采用 Spring Boot 的 @ConditionalOnCloudPlatform 注解;迁移到 Spring Security OAuth2 客户端,支持 OAuth2。关于这个版本的更多详细信息可以在 发行说明 中找到。
Payara
Payara 发布了 Payara Platform 的 2024 年 1 月份版本,其中包括社区版 6.2024.1 和企业版 6.10.0。两个版本都包含了 bug 修复、组件升级以及对 ARM 架构的 Payara Micro 和 Payara Server Docker 镜像的支持。此外,还对 Okio 3.4.0 和 OkHttp 4.9.2 进行了依赖升级,解决了 CVE-2023-3635 这个漏洞,该漏洞由 Okio 中的一个缺陷引起,GzipSource 类在解析格式错误的 gzip 缓冲区时无法处理处理异常。攻击者可以处理格式错误的文件,从而导致拒绝服务。关于这些版本的更多详细信息可以在 社区版 6.2024.1 和 企业版 6.10.0 的发行说明中找到。
Open Liberty
IBM 发布了 Open Liberty 的 24.0.0.1 版本,其中包括:扩展了对规范和实用工具的即时支持,例如 Jakarta XML Web Services、Jakarta Mail、密码实用工具、Java 数据库连接 和 应用程序安全;以及验证 Open Liberty 公钥真实性的能力,可以检查签名、验证包是否由 Open Liberty 发布并且自发布以来没有被修改过。
IBM 还发布了基于 Eclipse OpenJ9 0.42 和 OpenJDK jdk-21.0.1+12 的 IBM Semeru Runtime 的开放和认证版本 21.0.1.0,并包含了来自 Oracle 关键补丁更新 的最新 CPU 和安全补丁。
Quarkus
Red Hat 发布了 Quarkus 的 3.7 版本,该版本提供了 bug 修复、依赖项升级和新功能,例如:将 JDK 17 作为基线;支持 Micrometer 的 @MeterTag 注解;以及使用内联证书链进行令牌验证。此版本还解决了两个问题:CVE-2023-5675,在 Quarkus RestEasy Reactive 和 Classic 应用程序中使用端点的授权缺陷,由使用注解处理器自定义的 Quarkus 扩展引起; CVE-2023-6267,一个基于注解的安全漏洞,即资源可能使用 JSON 消息体在评估和应用安全约束之前被处理,即反序列化。关于此版本的更多详细信息可以在 变更日志 中找到。
BellSoft
BellSoft 发布了 Liberica JDK 21,支持 RISC-V 架构,因为该架构在嵌入式系统中的普及程度越来越高。BellSoft 列出了选择 Java 作为 RISC-V 语言的主要原因:
高性能、内存占用小,特别是在嵌入式系统使用他们的 Liberica JDK 时。
Java 具有良好的可移植性,采用 一次编写,到处运行 的模型,在生产环境中引入新架构时无需重写应用程序。
有众多标准库可以用于处理任务,开发人员不必为特定用例编写自己的实现。
方便的内存管理,避免内存分配错误。
关于 BellSoft 对 RISC-V 快速扩展和 Java 的评估的更多细节可以在这篇 文章 中找到。
Hibernate
Hibernate ORM 6.4.3.Final 发布,提供了 bug 修复和一个新特性,该特性可以支持使用 Atlas (一个管理数据库 schema 的工具)进行构建的项目中的 Oracle GraalVM。关于此版本的更多详细信息可以在 发行说明 中找到。
Infinispan
Infinispan 15.0.0.Dev08 发布,包括大量的依赖项升级和一些值得注意的变化,例如:将 Square 的 OkHttp 替换为 Java 的 HttpClient;将 TimeoutException 类移动到 org.infinispan.commons
包中,与 CacheException 类位于同一个包中;更新 JGroupsTransport 类,实现了 AddressGenerator 接口(对现有 Transport 和 ChannelListener 接口的补充)。关于此版本的更多详细信息可以在 发行说明 中找到。
类似的,Infinispan 14.0.23 也包含了大量依赖项升级和一些值得注意的变化,例如:添加了配置 JGroups bundler 的选项,可以将 transfer-queue
定义为默认的 bundler 类型,并禁用了 TCP SO_LINGER 设置;解决了一个问题,即在 SoftIndexFileStoreRestartTest 中定义的 testStatsUponRestart()
方法会意外复活被替换的值;解决了 TopologyChangeFunctionalTest 类中随机测试失败的问题,原因是更新函数不能正确处理状态传输的重试。关于此版本的更多详细信息可以在 发行说明 中找到。
Grails
Grails 6.1.2 发布,包含了依赖项升级和一些改进,例如:解耦了 Sonatype Nexus Repository 发布和发布作业的配置;与 Groovy 3.0.20 兼容;将任务分解为多个作业,改进了发布工作流程。关于此版本的更多详细信息可以在 发行说明 中找到。
TornadoVM
TornadoVM 1.0.1(第一个维护版本)包含了 bug 修复和一些改进,例如:初步支持 half-precision 数据类型;支持 Java Math 类中定义的 ceil()
方法,并在 TornadoMath 类中为所有后端添加了 ceil()
方法;在设备选择中启用多任务多设备行为作为 TaskGraph API 的一部分。关于此版本的更多详细信息可以在 发行说明 中找到。
Eclipse Vert.x
Eclipse Vert.x 4.5.2 发布,带来了一些值得注意的变化,例如:改进 HostAndPort API,特别是在处理 URI 权限方面;解决了 WebSocket 接口异常处理策略,其中 ConnectionBase 异常处理程序未在 exceptionHandler()
方法中正确设置;弃用在 DatabindCodec 类中定义的 prettyMapper()
方法,因为它不再被需要。关于此版本的更多详细信息可以在 发行说明 和 弃用和重大变更 中找到。
类似的,Eclipse Vert.x 4.4.7 版本也带来了一些值得注意的变化,例如:一个新的 Timer 接口,它扩展了 Vert.x 的 Future 接口,可以用作未来链中的起始点,也可以在未来的组合中使用;确保Task 类的实例在被 Java Executor 拒绝时不在 TaskQueue 中。关于此版本的更多详细信息可以在 发行说明 中找到。
这两个版本都解决了 CVE-2024-1023漏洞,这是 Eclipse Vert.x 工具包中的一个漏洞,由于使用 Netty FastThreadLocal 类提供的数据结构而导致内存泄漏,特别是当 Vert.x HTTP 客户端与不同主机建立连接时。
Graal Cloud Native
Graal Cloud Native (GCN) 4.2.1 (Oracle 的 Micronaut Framework 构建版本)已发布,其中包括:新的 Google Cloud 指南;支持 JDK 21 和 GraalVM Native Image;一个带有 Micronaut Framework 4.2.1 的新材料清单;对 GCN Launcher 和 GCN CLI 进行了更新;更新的 VS Code 工具。InfoQ 将跟进更详细的新闻报道。
OpenXava
OpenXava 7.2.3 发布,带来了 bug 修复、依赖项升级和改进,例如:当在 @Condition 中使用 @ManyToMany 注释时,如果 failOnAnnotationMisuse
属性设置为 true
,则记录警告消息或抛出异常;当使用旧版本的 OpenXava 时记录警告消息;可能在应用中使用的新通用标签。关于此版本的更多详细信息可以在 发行说明 中找到。
JetBrains Ktor
JetBrains 发布 Ktor 2.3.8,这是一个用于创建微服务和 Web 应用程序的异步框架,包含了一些改进和问题修复,例如:当 CacheControl 类中定义的 max-age
属性的值大于 Int.MAX_VALUE
时抛出 NumberFormatException
;在自定义 JavaScript 引擎中使用 URLBuilder 时,由于自身属性导致的 ReferenceError
;在 RequestConnectionPoint 接口中实现了 toString() 方法,改进了日志记录。关于此版本的更多详细信息可以在 变更日志 中找到。
Keycloak
Keycloak 23.0.5 发布,包含了 bug 修复和新特性/增强,例如:在文档中将 Red Hat Data Grid 的引用改为 Infinispan;解决了使用细粒度权限时角色映射选项卡不可见的问题;更新了 AWS Route 53 指南,兼容 Red Hat OpenShift Service on AWS (ROSA) 和 Openshift 4.14.x。
LangChain for Java
LangChain for Java (LangChain4j) 0.26.0 带来了许多 bug 修复、新的集成和特性:高级检索增强生成 (RAG) 基础,灵感来自于这篇文章 和这份白皮书;通过在 LangChain4j Chat API 中实现图像输入并集成 OpenAI 和 Gemini 来支持多模态;在 ConversationalRetrievalChain 类的 execute()
方法中添加了元数据,允许用户在追加检索到的文档信息时添加额外信息。关于此版本的更多详细信息可以在 发布说明 中找到。
Gradle
Gradle 8.6 发布,带来了这些特性:支持通过GRADLE_ENCRYPTION_KEY
环境变量配置缓存中的自定义加密密钥;改进了错误和警告报告;改进了Build Init Plugin,支持各种类型的项目;增强了插件作者和构建工程师开发自定义构建逻辑的功能。有关此版本的更多详细信息,请参阅发布说明。
原文链接:
https://www.infoq.com/news/2024/02/java-news-roundup-jan29-2024/
欢迎加入 InfoQ 读者技术交流群,与志同道合的朋友一起探讨知识,交流经验。
评论