OpenJDK
JEP 446(作用域值预览)已经从 JEP Draft 8304357 状态提升到 Candidate 状态。该 JEP 就是之前的范围局部变量(第一轮孵化),是对 JDK 20 中发布的 JEP 429(作用域值第一轮孵化)的一个特性预览。该 JEP 建议在线程内部和线程之间共享不可变数据。这种方式比使用线程局部变量更好,特别是在大量使用虚拟线程时。
JEP 447(super()之前的语句)已经从 JEP Draft 8300786 状态提升到 Candidate 状态。在Amber项目的支持下,该 JEP 建议:如果语句不引用正在创建的实例,则可以出现在构造函数中的this()
或super()
调用之前,并为构造函数保留现有的安全性和初始化保证。Gavin Bierman 是 Oracle 的技术咨询顾问,他已经向 Java 社区提供了该 JEP 的初始规范,以供评审和收集反馈。
JEP 448(向量API第六轮孵化)已从 JEP Draft 8305868 状态提升到 Candidate 状态。在Panama项目的支持下,该 JEP 融合了针对前五轮孵化反馈所做的增强:JEP 438,向量API第五轮孵化,在 JDK 20 中交付;JEP 426,向量API第四轮孵化,在 JDK 19 中交付;JEP 417,向量API第三轮孵化,在 JDK 18 中交付;JEP 414,向量API第二轮孵化,在 JDK 17 中交付;JEP 338,向量API第一轮孵化,在 JDK 16 中作为孵化器模块交付。该 JEP 建议增强向量 API,以便从 JEP 424(外部函数和内存API预览)定义的MemorySegment
中加载向量以及向其中存储向量。
JEP 449(弃用Windows 32-bit x86平台支持)已经从 JEP Draft 8303167 状态提升到 Candidate 状态。该特性是由微软资深项目经理George Adams引入。该 JEP 建议弃用 Windows x86-32 位平台支持,并打算在未来的版本中删除这一支持。由于不打算在 32 位平台上实现 JEP 436(虚拟线程第二次预览),所以取消对该平台的支持将能够提升 OpenJDK 开发人员开发新特性的速度。
JEP Draft 8305968(完整性和强封装)和 JEP Draft 8306275(默认禁用代理动态加载)已经由 Oracle Loom 项目架构师和技术主管Ron Pressler提交。
完整性和强封装建议默认启用强封装等各种特性,确保代码和数据的完整性。该草案的目标包括:让 Java 平台可以稳健地维护可维护性、安全性和性能所需的不变性;区分打破封装更方便的用例和必须禁用封装的用例。
默认禁用代理动态加载遵循完整性和强封装的方法,建议默认禁止将代理动态加载到正在运行的 JVM 中。该草案的目标包括:重新评估适用性和完整性之间的平衡;确保大多数不需要动态加载代理的工具不受影响。
JDK 任务控制(JMC) 8.3.1发布,带来了一些值得注意的修复,如:在 macOS 和 Linux 上安装插件后无法打开 JMX 控制台;在 Linux 上安装 JMC 插件后无法编辑 Eclipse 项目运行配置;无法在 jLinked 应用程序上执行运行记录。要了解关于该版本的更多细节,请查看发布说明。
JDK 21
JDK 21早期访问构建Build 19在上周发布,其中包括Build 18的更新,主要是修复了各种问题。要了解关于这个版本的更多细节,请查看发布说明。
对于JDK 21,我们鼓励开发人员通过Java Bug数据库报告 Bug。
JDK 20
Oracle 发布 2023 年 4 月的关键补丁更新,其中包括 JDK 20 的第一个维护版本JDK 20.0.1,以及JDK 17.0.7、JDK 11.0.19和JDK 8u371的安全更新。
BellSoft
与 Oracle 发布 2023 年 4 月的关键补丁更新(CPU)同时,BellSoft发布了其 OpenJDK 下游发行版Liberica JDK 17.0.6.0.1、11.0.18.0.1 和 8u371 版本的 CPU 补丁。此外,他们还发布了 20.0.1、17.0.7、11.0.19 和 8u372 版本的补丁集更新(PSU),其中包含 CPU 和非关键修复。
Spring Framework
Spring Boot 3.1.0 的第一个候选版本提供了一些值得注意的新特性:改进 Testcontainer 支持,包括开发阶段支持;支持 Docker Compose;增强 SSL 配置;改进 Docker 镜像构建。要了解关于该版本的更多细节,请查看发布说明。
Spring Boot 3.0.6 的发布主要解决了 CVE-2023-20873 漏洞:在Cloud Foundry上利用通配符模式匹配进行安全绕过。该漏洞使得部署到Spring Cloud for Cloud Foundry的应用程序容易受到安全绕过的影响。除了文档改进和依赖项升级,该版本还提供了一些值得注意的 Bug 修复,如:Spring Cloud for Cloud Foundry 集成没有使用端点路径映射;ApplicationAvailability
bean 是自动配置的,即使已经存在自定义 bean;Apache Cassandra 中的默认配置替换不能解析来自spring.data.cassandra
属性文件的配置。要了解关于该版本的更多细节,请查看发布说明。
同样,Spring Boot 2.7.11 的发布也是为了解决了上面提到的 CVE-2023-20873 漏洞,并提供了文档方面的改进、依赖项升级和与 Spring Boot 3.0.6 相同的 Bug 修复。要了解关于该版本的更多细节,请查看发布说明。
Spring Security的 6.1.0-RC1、6.0.3、5.8.3 和 5.7.8 版本发布,主要用于解决 CVE-2023-20862 漏洞:空的SecurityContext在注销时未正确保存。该漏洞使得序列化版本的注销不能正确地清除安全上下文,并且无法显式地将空的安全上下文保存到HttpSessionSecurityContextRepository
类。这将导致用户在注销之后仍然处于身份已验证状态。要了解关于这些版本的更多细节,请查看6.1.0-RC1、6.0.3、5.8.3和5.7.8的发布说明。
Spring Session 3.1.0 的第一个候选版本提供了依赖项升级和一个新特性,即重用StringRedisSerializer
类的实例,从而消除了实例化其他序列化器实例的需要。要了解关于该版本的更多细节,请查看发布说明。
Spring Authorization Server 1.1.0 的第一个候选版本提供了依赖项升级和新特性,包括:在JdbcOAuth2AuthorizationService
类中支持设备代码和用户代码;改进OAuth 2.0 Device Authorization Grant,包括添加测试和参考文档;改进 OpenID Connect 1.0 注销端点。要了解关于该版本的更多细节,请查看发布说明。
同样,Spring Authorization Server 的 1.0.2 和 0.4.2 版本也发布了,带来了依赖项升级和一些值得注意的 Bug 修复:将不正确的INVALID_CLIENT
令牌错误代码返回给正确的INVALID_GRANT
令牌错误代码;坏掉的支持链接;认证密钥应该在客户端注册时编码保存;考虑允许在重定向 URI 中使用localhost
。要了解关于这些版本的更多细节,请查看1.0.2和0.4.2版本的发布说明。
Spring Integration的 6.1.0-RC1 和 6.0.5 版本发布,它们有一些值得注意的变化,包括:删除了IntegrationWebSocketContainer
类中的尾随空格;改进了BaseWsInboundGatewaySpec
和TailAdapterSpec
类,它们没有覆盖super
方法,并且由于target
字段未填充而抛出NullPointerException
实例。要了解关于这些版本的更多细节,请查看6.1.0-RC1和6.0.5版本的发布说明。
Spring for GraphQL 1.2.0 的第一个候选版本提供了以下新特性:更新SchemaMappingInspector
类以支持Connection
类型;利用 Querydsl 和 Query By Example 支持分页;对分页和排序的全面支持。要了解关于该版本的更多细节,请查看发布说明。
Spring Shell的 3.1.0-M2、3.0.2 和 2.1.8 版本发布,带来了一些值得注意的变化,包括:分别基于 Spring Boot 3.1.0-M2、3.0.5 和 2.7.10 构建;Bug 修复反向移植;对使用位置参数的自定义类型处理进行了重要修复。要了解关于这些版本的更多细节,请查看3.1.0-M2、3.0.2和2.1.8版本的发布说明。
WildFly
Red Hat发布了 WildFly 28,改进了对可观察性的支持,并完全支持 Jakarta EE 10。WildFly 增加了对Micrometer和MicroProfile Telemetry规范的支持,但取消了对MicroProfile Metrics的支持。Red Hat 建议在生产应用程序中使用 JDK 17,但是他们也看到,在 JDK 20 上的效果也不错。要了解关于该版本的更多细节,请查看发布说明,InfoQ 后续也会带来更详细的新闻报道。
Payara
Payara发布了 2023 年 4 月版的Payara平台,其中包括社区版 6.2023.4、企业版 6.1.0 和企业版 5.50.0。
社区版 6.2023.4 提供的新特性包括:修复了使用 JDK17 和 Records 时的 Payara 6 部署错误;改进了应用程序部署描述符和全局 HTTP 网络监听器中的SameSite cookie 属性;依赖项升级到 EclipseLink 4.0.1、EclipseLink ASM 9.4.0、Hazelcast 5.2.2 和 ASM 9.4。要了解关于该版本的更多细节,请查看发布说明。
类似地,企业版 6.1.0 的新特性也包括:修复了使用 JDK17 和 Records 时的 Payara 6 部署错误;改进了应用程序部署描述符中的SameSite cookie 属性;依赖项升级到 EclipseLink 4.0.1、 EclipseLink ASM 9.4.0、Hazelcast 5.2.2 和 ASM 9.4。要了解关于该版本的更多细节,请查看发布说明。
企业版 5.50.0 还附带了以下特性:解决CVE-2023-24998漏洞。这是Apache Commons FileUpload中的一个漏洞,由于未对已处理请求部分的数量做限制,所以攻击者可以通过恶意上传触发拒绝服务;修复 Hazelcast NoDataMemberInClusterException
;改进应用程序部署描述符中的SameSite cookie 属性;依赖项升级到 Hazelcast 5.2.2。要了解关于该版本的更多细节,请查看发布说明。
Open Liberty
IBM发布了 Open Liberty 23.0.0.4-beta 版,更新了对Jakarta Data规范的支持,开发人员现在可以组合使用多种方式指定排序和分类,定义优先级。首先应用由@OrderBy
注解或按方法查询关键字定义的排序,然后应用方法或Pageable
接口上Sort
记录中的参数。
Micronaut
Micronaut 基金会发布了 Micronaut Framework 3.9.0,带来了以下新特性:允许自定义包,使用@Introspected
注解的targetPackage
字段编写自省;通过@CrossOrigin
注解启用跨域资源共享(CORS)配置;一个破坏性更改,为了防止意外暴露用户的 API,配置属性micronaut.server.cors.*.configurations.allowed-origins
不支持正则表达式;模块更新,包括:Micronaut Kubernetes、Micronaut Security、Micronaut CRaC、Micronaut Maven和Micronaut Launch。要了解关于该版本的更多细节,请查看发布说明。
Apache 软件基金会
Apache Tomcat 团队发布了11.0.0-M5、10.1.8、9.0.74和8.5.88的点版本。四个版本都有的显著变化包括:将maxParameterCount
的默认值从 10000 减少到 1000;修正了Bug 66442修复中的回归,即没有响应体的流在完成时不会减少活动流计数,导致某些连接出现ERR_HTTP2_SERVER_REFUSED_STREAM
;实现 RFC 9239,更新ECMAScript媒体类型,其中 JavaScript 的 MIME 类型更改为text/javaScript
。要了解关于这些版本的更多细节,请查看11.0.0-M5、10.1.8、9.0.74和8.5.88版本的发布说明。
Ktor
JetBrains发布了Ktor 2.3.0,这是一个用于创建微服务和 Web 应用程序的异步框架。该版本带来了一些改进和修复,包括:支持在定义路由时使用正则表达式;放弃支持将在 Kotlin 1.9.0(即将发布)中删除的遗留 JS 编译器;支持 Apache 5 和 Jetty 11;支持套接字的结构化并发性。要了解关于该版本的更多细节,请查看发布说明。
JHipster
JHipster 团队发布了JHipster Lite 0.32.0,其中有许多依赖项升级,并带来了一些显著的变化,如:通过将spring.jpa.properties.hibernate.cache.use_second_level_cache
属性设置为true
来支持 Hibernate 二级缓存;删除执行npm run lint
命令时不必要的警告;删除运行npm t
命令时不必要的堆栈跟踪信息。要了解关于该版本的更多细节,请查看发布说明。
JBang
JBang 0.106.3发布,修复了 ChatGPT 在坏键或使用限制上出错的问题。
Gradle
Gradle 8.1.1发布,修复了一些 Bug,包括:当探测一个在配置缓存中存储了大量 lambdas 的类时,会出现MethodTooLargeException
;使用 Gradle 8.1 构建的 Kotlin DSL 预编译脚本插件不能与 Gradle 的其他版本一起使用;Gradle 8.1 在buildSrc
中为 Kotlin 配置的freeCompilerArgs
方法会破坏构建,提供无用的错误信息。要了解关于该版本的更多细节,请查看发布说明。
原文链接:
https://www.infoq.com/news/2023/04/java-news-roundup-apr17-2023/
相关阅读:
Java 近期新闻:JEP for JDK 21、MicroStream 成为 Eclipse 项目、Helidon、Piranha、Gradle 8.1
Java 近期新闻:字符串模板、Quarkus、Open Liberty、PrimeFaces、JobRunr、Devnexus 2023
评论