OpenJDK
甲骨文(Oracle)的软件架构师Maurizio Cimadamore已经提交了 JEP Draft 8310626,外部函数和内存API。该 JEP 提议在经过两轮孵化和三次预览后最终确定该特性:JEP 412,外部函数和内存API(孵化阶段),在 JDK 17 中交付;JEP 419,外函数与内存API(第二轮孵化),在 JDK 18 中交付;JEP 424,外部函数和内存API(预览版),在 JDK 19 中发布;JEP 434,外部函数和内存API(第二次预览),在 JDK 20 中发布;以及 JEP 442,外部函数和内存API(第三次预览),将在即将发布的 JDK 21 中发布。自上一个版本发布以来的改进包括:一个新EnableNativeAccess
清单属性,允许可执行 JAR 中的代码在不使用--enableNativeAccess
标志的情况下调用受限方法;允许客户端以编程方式构建 C 函数描述符,避免使用特定于平台的常量;改进了对本地内存中可变长度数组的支持;以及支持本地字符串中的多个字符集。
Cimadamore 和甲骨文技术人员顾问成员Per-Åke-Minborg还提交了 JEP Draft 8312611,计算常量(Computed Constants)。这个 JEP 引入了计算常量的概念,其定义为最多初始化一次的不可变值的占位符。这为final
字段提供了性能和安全优势,同时在初始化时间方面提供了更大的灵活性。该特性将作为预览版API 首次亮相。
甲骨文 OpenJDK 开发团队的Julian Waters已经提交了 JEP Draft 8313278,Java虚拟机预先编译(Ahead of Time Compilation for the Java Virtual Machine)。该 JEP 提议“增强 Java 虚拟机加载 Java 应用程序和编译成本机代码库的能力,以实现更快的启动和基线执行”。
JDK 的回归测试工具jtreg已经发布了7.3 版本,并准备集成到 JDK 中。值得注意的变更包括:更新了一组用于在类 Unix 平台上进行测试的默认环境变量(DBUS_SESSION_BUS_ADDRESS
、WAYLAND_DISPLAY
和XDG-*
);修复了使用多模块设置运行测试时的竞争条件;以及修复了在AgentServer类中定义的log()
,该方法不会刷新输出。有关该版本的更多详细信息,请参阅发布说明。
JDK 21
JDK 21早期访问构建版本的第33版已于上周发布,其中包括第 32 版中各种问题的修复和更新。有关该版本的更多详细信息,请参阅发布说明。
JDK 22
JDK 22早期访问构建版本的第8版也已于上周发布,其中包括第 7 版中各种问题的修复和更新。有关该版本的更多详细信息,请参阅发布说明。
对于JDK 22和JDK 21,均鼓励开发人员通过Java缺陷数据库报告缺陷。
GraalVM
GraalVM Community Components 23.0.1已发布,由用于JDK 20 Community 20.0.2的GraalVM和用于JDK 17 Community 17.0.8的GraalVM组成,并提供了以下原生镜像(Native Image)的修复:jvm stat
性能数据初始化;JDK Flight Recorder(JFR)事件常量池 ID;用户体验问题;以及生成报告中的分析结果。对计数循环的剥离挖掘优化功能也进行了更新,其中挖掘溢出循环在 Graal 编译器中被定义为“不剥离”。这些新版本分别构建在 JDK 版本的20.0.2+9和17.0.8+7上。有关这些版本的更多详细信息,请参阅版本20.0.2和版本17.0.8的发布说明。
同样,GraalVM Community Edition 22.3.3也发布了,以与 GraalVM 社区版的 2023 年 4 月关键补丁更新(CPU)保持一致。该版本基于 JDK 的 17.0.7 和11.0.19版本构建。有关该版本的更多详细信息,请参阅发布说明。
有关 GraalVM 最新版本的更多详细信息,请参阅这篇详细的新闻报道,其中包括与 Oracle 实验室 GraalVM 的开发人员倡导者Alina Yurenko的问答。
Spring 框架
Spring Cloud 2022.0.4 已发布,代号为 Kilburn,其带来了显著的变更,例如:支持Spring Cloud Commons中ServiceInstanceListSupplier
接口的委托进行重试感知负载均衡;改进了在Spring Cloud Stream中加载共享 bean 的异常处理;Spring Cloud OpenFeign和Spring Cloud Netflix分别升级到 Feign 12.4 和 Eureka 2.0.1。该最新版本基于 Spring Boot 3.0.9 构建。需要注意的是,其子项目:Spring Cloud CLI、Spring Cloud for Cloud Foundry和Spring Cloud Sleuth已从发布序列中删除。有关该版本的更多详细信息,请参阅发布说明。
Spring Security的 6.1.2、6.0.5、5.8.5、5.7.10 和 5.6.2 版本已经发布,以解决两个通用漏洞披露(Common Vulnerabilities and Exposures,CVE):CVE-2023-34034,WebFlux安全绕过无前缀的双通配符模式,这是一个漏洞,在 Spring WebFlux 的 Spring Security 配置中使用双通配符(**
)作为模式会导致模式匹配出现不匹配,从而可能导致安全绕过;和 CVE-2023-34035,使用多个Servlet时可能会错误配置授权规则,该漏洞使用requestMatchers(String)
方法和多个 servlet(其中一个是 Spring MVC DispatcherServlet
类)可能会导致授权规则错误配置。有关这些版本的更多详细信息,请参阅版本6.1.2、版本6.0.5、版本5.8.5、版本5.7.10和版本5.6.12的发布说明。
Spring Shell的 3.1.3、3.0.7 和 2.1.12 版本已经发布,其特性包括:在CompletionProposal
类中添加了complete()
方法,以便通过多次单击选项卡(如文件路径)来完成单个参数。这些版本分别基于Spring Boot的 3.1.2 版本、3.0.9 版本和 2.7.14 版本构建。有关这些版本的更多详细信息,请参阅版本3.1.3、版本3.0.7和版本2.1.12的发布说明。
Grails
Grails 基金会发布了Grails的 6.0 版本,它提供了:最小的 JDK 11 版本;对 Spring Framework 5.3.28、Spring Boot 2.7.12 和 Gradle 7.6.1 的支持;Grails Forge UI的首次亮相,这是一个类似于 Spring Initializr 等项目的入门项目;以及增强了对 Micronaut Framework 的集成。有关该版本的更多详细信息,请参阅发布说明,InfoQ 将会跟进更详细的新闻报道。
TornadoVM
开源软件技术公司TornadoVM发布了 0.15.2 版本的虚拟机,该版本提供了缺陷修复和显著的改进,例如:对在多个设备上执行多个独立任务的最初支持,可以在多个硬件加速器上执行多任务;支持 OpenCL/PTX 和 SPIR-V 后端的三角radian
、cospi
和sinpi
函数;并与 ComputeAorta(Codeplay 针对 RISC-V 的oneAPI构建套件的一部分)进行初始集成,以便在 RISC-V 上以仿真模式运行矢量指令。有关该版本的更多详细信息,请参阅发布说明。
曼彻斯特大学高级处理器技术研究小组副研究员Juan Fumero于 2020 年 3 月在伦敦QCon上介绍了 TornadoVM,并为 InfoQ 撰写了这篇最新的技术文章。
LibericaJDK
BellSoft 为 JDK 17.0.8 和 20.0.2发布了Liberica Native Image Kit(NIK)的 23.0.1 版本,作为关键补丁更新(CPU)发布周期的一部分,其特性包括:对 Windows 操作系统上的 ParallelGC 的实验性支持;针对 JavaFX FXML 应用程序的编译修复;并修复了以下通用漏洞披露:CVE-2023-22043;CVE-2023-22041;CVE-2023-25193;CVE-2023-22044;CVE-2023-22045;CVE-2023-22049;CVE-2023-22036;和CVE-2023-22006。
PrimeFaces
PrimeFaces的 13.0.0 版本已经发布,其中包括一些缺陷修复、依赖项升级,并增加了一些新特性,例如:支持SelectCheckboxMenu
类中的列和页脚 facet;在InputNumber
类中添加selectOnFocus()
和caretPositionOnFocus()
方法;以及在OverlayPanel
类中添加了缓存属性。需要注意的是,其存在一些破坏性变更。有关该版本的更多详细信息,请参阅发布说明。
Quarkus
红帽(Red Hat)发布了Quarkus 3.2.2.Final 版本,以解决 3.2.1 版本中的两个回归问题以及文档方面的改进。值得注意的变更包括:恢复到了openjdk-17-runtime:1.16
镜像,因为开发分支的版本号已升至 1.17,预计下一个版本将于 2023 年 8 月发布;删除了有关quarkus.launch.rebuild
属性的误报警告;并且如果 OIDC 状态 cookie 不匹配,则允许重新身份验证。有关该版本的更多详细信息,请参阅变更日志。
Hibernate
Hibernate Reactive 2.0.4.Final已发布,其特性包括:对 Hibernate ORM 6.2.7.Final 的依赖升级;仅根据请求启动 Docker 容器,以确认远程数据库在执行完整构建之前已经启动;以及修复@SQLSelect
注解在主实体上不起作用的问题。有关该版本的更多详细信息,请参阅发布说明。
Micronaut
Micronaut Framework 4.0.2 是第二个维护版本,它提供了缺陷修复、文档改进、依赖项升级和改进,例如:在BuildTestVerifier
接口中添加了版本号检查;并将异步验证移动到了处理器模块,这是因为AsyncTypeElementVisitor
类被定义成了compileOnly
依赖项。有关该版本的更多详细信息,请参阅发布说明。
Micronaut 基金会已将其聊天社区从Gitter转移到Discord,并且立即生效。该基金会表示,Discord 提供了改进的桌面应用程序体验、更好的结构化对话和增强的通知。并且鼓励 Gitter 上的开发者转移到 Discord,但该基金会将继续监控 Giter 上的对话,并提供 Discord 的链接。
JBang
JBang 0.110.0 的发布将其 Maven Central ID 从mavencentral
更改为center
,用于获取依赖项,以便在基于 Maven 和基于 JBang 的构建之间更好地共享下载。还修复了包含大写字母的 Maven 构件无法下载的回归问题。
JHipster
JHipster Lite的0.39.0版本已经发布,其中包括了一些缺陷修复、依赖项升级和功能改进,例如:通过改进的配置增强了Logback依赖项,并且不再需要显式定义 shutdown 钩子;将getInstantOrDefault()
方法添加到了JHipsterModuleProperties
类中;以及在 REST 分页中将映射切换到非并行流,以确保流的顺序处理。有关该版本的更多详细信息,请参阅发布说明。
JUnit
JUnit 5.10.0 已经发布,新特性包括:ModuleSelector
、EngineDiscoveryListener
、EngineDiscoveryRequestResolver
、LauncherSession
和@Suite
等实验性 API 已经提升到稳定状态;@SelectMethod
注解中的新选择器;以及一个新的LauncherInterceptor
接口,用于拦截Launcher
和LauncherSessionListener
接口实例的创建。有关该版本的更多详细信息,请参阅发布说明。
Gradle
Gradle 8.3 的第二个候选版本提供了持续的改进,例如:对 JDK 20 的支持;使用工作进程将 Java 编译器作为编译器守护进程运行,从而更快地进行 Java 编译;使用Kotlin K2编译器进行实验的能力;以及改进了CodeNarc插件的输出。有关该版本的更多详细信息,请参阅发布说明。
原文链接:
https://www.infoq.com/news/2023/07/java-news-roundup-jul24-2023/
相关阅读:
Java 近期新闻:Jakarta EE 11 更新、Quarkus LTS、Micronaut、Foojay 顾问委员会、DevBCN、JCrete
评论