在结束了评审后,JEP 459(字符串模板(第二次预览))已从 Proposed to Target进入到 Targeted(JDK 22)状态。这个 JEP 在经过第一次预览之后进行第二次预览:在 JDK 21 中交付的 JEP 430(字符串模板(预览))。该特性通过字符串模板来增强 Java 编程语言,字符串字面量中包含嵌入表达式,这些表达式将在运行时被解释和计算。有关 JEP 430 的更多细节可以在 InfoQ 的新闻报道中找到。
JEP 463(隐式声明类和实例主方法(第二次预览))已从 Candidate 进入到 Proposed to Target(JDK 22)状态。这个 JEP 也就是之前的未命名类和实例主方法(预览)、灵活的主方法和匿名主类(预览)以及隐式类和增强的主方法(预览),包含了针对前一轮预览反馈(即 JEP 445,未命名类和实例主方法(预览))的增强。这个 JEP 提议“让学生可以在不需要理解太多语言特性的前提下编写他们的第一个程序。”2022 年 9 月,Oracle 的 Java 语言架构师Brian Goetz为此撰写了“Paving the on-ramp”一文。Oracle 技术委员会成员Gavin Bierman已发布规范文档初稿,供 Java 社区评审。关于 JEP 445 的更多细节可以在 InfoQ 的其他报道中找到。
JEP 457(类文件API(预览))已从 Candidate 进入到 Proposed to Target(JDK 22)状态。该 JEP 提议提供用于解析、生成和转换 Java 类文件的 API。它将先作为ASM的内部替代(ASM 是 Java 字节码操作和分析框架),并计划在后续开放为公共 API。Oracle Java 语言架构师Brian Goetz将 ASM 描述为“一个带有大量遗留负担的老代码库”,并提供了背景信息,说明这个草案将如何演进并最终取代 ASM。评审预计于 2023 年 11 月 28 日结束。
JEP 447(super()之前的语句(预览))已从 Candidate 进入到 Proposed to Target(JDK22)状态。该 JEP 属于Amber项目,提议允许在构造函数的this()
或super()
之前出现不引用正在创建的实例的语句并保留构造函数现有的安全性和初始化保证。Oracle 技术顾问Gavin Bierman为 Java 社区提供了这个 JEP 的初始规范以供评审和反馈。评审预计于 2023 年 11 月 22 日结束。
JEP 423(G1区域固定)已从 Candidate 进入到 Proposed to Target(JDK 22)状态。该 JEP 提议为G1垃圾回收器实现区域固定(Region Pinning)来降低 GC 延迟。这是对 G1 的扩展,使得在主要和次要回收操作期间可以固定任意区域,避免在实现JNI临界区域时垃圾回收被禁用。评审预计于 2023 年 11 月 28 日结束。
JDK 22早期访问版本的Build 24已经可用,包含了自 Build 23 以来的更新,包括对各种问题的修复。有关此版本的更多详细信息,请参阅发布说明。
对于JDK 22,开发者可以通过Java Bug Database报告错误。
Spring Framework 6.1.0发布,带来了问题修复、文档改进、依赖项升级和新特性,例如:使用ClientHttpResponse接口的消息转换器将响应体转换为所需类型;改进了对容器元素错误的方法验证支持;在ControlFlowPointcut类中支持方法名模式匹配。有关此版本的更多详细信息,请参阅发布说明和What's New页面。
类似地,Spring Framework 6.0.14 和 5.3.31 也已发布,带来了问题修复、文档改进、依赖项升级和新特性,例如:在LogAdapter类中定义的LogAdapter
内部类,在反序列化时为与 Log4j 2.21 保持兼容需要对 Log4j ExtendedLogger接口进行重新解析;优化了 Hotspot 的StandardTypeLocator类,可以更好地解析相同的类;增强了ProblemDetail类中的属性设置。有关这些版本的更多详细信息,请参阅 6.0.14 的发布说明和 5.3.31 的发布说明。
Spring Data 2023.1.0发布,代号 Vaughn,带来了这些特性:与 JDK 21 兼容;通过配置 Java Executor接口来使用虚拟线程;支持 Kotlin 内联直类;优化 Checkpoint/Restore(CRaC);Spring Data JDBC的单查询加载;将文档迁移到Antora。有关此版本的更多详细信息,请参阅发布说明。
类似地,Spring Data服务版本2023.0.6、2022.0.12 和 2021.2.18 的带来了问题修复和相应的子项目依赖项升级,例如:Spring Data Commons 3.1.6、3.0.12 和 2.7.18;Spring Data MongoDB 4.1.6、4.0.12 和 3.4.18;Spring Data Elasticsearch 5.1.6、5.0.12 和 4.4.18;以及 Spring Data Neo4j 7.1.6、7.0.12 和 6.3.18。这些版本可以分别在即将发布的 Spring Boot 3.1.6、3.0.13 和 2.7.18 中使用。
Payara 发布了Payara Platform的 2023 年 11 月版本,包括 Community Edition 6.2023.11、Enterprise Edition 6.8.0 和 Enterprise Edition 5.57.0。更新内容包括:问题修复;将依赖项 Maven Bundle Plugin 升级到 5.1.9;修复了Payara Platform Payara Server、Micro和Embedded中的CVE-2023-41699安全漏洞,这是一个 URL 重定向到不受信任站点的漏洞。
新特性包括:新的命令行参数--warmup
,与asadmin
命令的start-domain
一起使用,在引导启动后停止服务器;为所有Payara Server Management asadmin命令添加了单独的超时选项。
Payara 还推出了Payara Starter,一个源代码生成器,用于创建新的 Payara Server 或 Payara Micro 项目。
有关这些版本的更多详细信息,请参阅Community Edition 6.2023.11、Enterprise Edition 6.8.0和Enterprise Edition 5.57.0的发布说明。
IBM 发布了Open Liberty 23.0.0.11,为MicroProfile Metrics 5.0、4.0 和 3.0 新增了新的供应商指标,可直接添加到各种监控工具的仪表盘中,无需进行额外的计算。这些新指标包括:Process CPU Utilization Percent、Heap Utilization Percent、GC Time per Cycle、Connection Pool in Use Time per Used Connection、Connection Pool Wait Time per Queued Request、Servlet Elapsed Time per Request 和 REST Elapsed Time per Request。
其他新特性包括:解决了 IBM WebSphere Application Server Liberty 23.0.0.9 到 23.0.0.10 中的CVE-2023-46158漏洞(由于不正确地处理资源过期而导致安全性降低);在server.xml
中使用include
元素包含所有服务器配置文件,避免像之前那样需要单独指定它们。
Micronaut 基金会发布了Micronaut Framework 4.2.0,包括Micronaut Core 4.2.0,增强了Kotlin Symbol Processing,并分别将依赖项 Kotlin 和 Netty 升级到 1.9.20 和 4.1.101。Micronaut Launch中已添加了对 JDK 21 和 Gradle Kotlin DSL 的支持。有关此版本的更多详细信息,请参阅发布说明。
Grails 基金会发布了 Grails Framework 6.1.0,包含问题修复、文档改进、依赖项升级和这些重要变更:将 SnakeYAML 升级到 2.2,解决CVE-2022-1471漏洞(通过 SnakeYAML 的Constructor()
类对类型进行反序列化可能导致攻击者发起恶意远程代码执行);解耦 Sitemesh 插件以提高灵活性。有关此版本的更多详细信息,请参阅发布说明。
Quarkus 3.5.2发布,修复了一些错误,改进了文档,并带来了这些显著变化:修复了CVE-2023-21971漏洞(允许攻击者通过多个协议进行网络访问,从而威胁到 MySQL Connectors,这可能导致未经授权的攻击挂起 MySQL Connectors 或频繁出现拒绝服务,以及未经授权的更新、插入或删除访问部分 MySQL Connectors 可访问的数据);针对 Windows 操作系统禁用了Http2RSTFloodProtectionTest和CustomManifestArgumentsTest类,因为这些测试在单个连接中创建了许多流,导致不稳定;由于 Windows 操作系统上的持续集成问题,避免在RestClientCDIDelegateBuilderTest类中使用 JUnit @TempDir注解。
此版本的更多详细信息可在变更日志中找到。
Apache Tomcat的11.0.0-M14、10.1.16、9.0.83和8.5.96版本均带来了问题修复和重要变更:确保在读取请求消息期间出现IOException
时始终触发错误处理,无论应用程序是否处理这个异常;修复了Tomcat Connector的一个问题,这个问题在使用TLSCertificateReloadListener 类重新加载 Transport Layer Security(TLS)配置时拒绝新连接或导致 JVM 崩溃;StatusManagerServlet类现在可以以 JSON 格式输出统计信息。
对于 12.11.0.0-M14,与OpenSSL的集成将使用Foreign Function & Memory API API,而不是 Tomcat Native。在使用 Java 22 或更高版本的 JDK 时,可以通过在Server元素上添加OpenSSLLifecycleListener类来启用 OpenSSL 支持。有关这些版本的更多详细信息,请参阅版本11.0.0-M14、10.1.16、9.0.83和8.5.96的变更日志。
另外,Apache Camel 4.2.0带来了问题修复、依赖项升级和新特性/改进,例如:支持 OAuth 2.0(Camel HTTP组件);支持使用@Primary注解进行 Spring bean 自动装配(Camel Spring组件);可以使用旧的 Micrometer 指标名称或遵循新的 Micrometer 命名约定(Camel Micrometer组件)。
Eclipse Vert.x 4.5.0 发布,增加了一些新特性,例如:支持 JDK 21 和虚拟线程;创建动态SQL连接;允许在运行时更新TCP客户端/服务器SSL选项,以进行证书轮换;实现了用于连接 HTTP 客户端和 SQL 连接池的 Builder 模式。这个版本的详细信息可以在发布说明和弃用和重大变更说明中找到。
Mojarra 4.0.5是Jakarta Faces规范的兼容实现,主要变更包括:将Weld的重新初始化从ConfigureListener类移回其原始的FacesInitializer类,以解决异常问题;修复了规范和实现之间在使用常量字段时的不匹配,规范中定义为"jakarta.faces.WEBAPP_CONTRACTS_DIRECTORY"
的常量字段在ResourceHandler类中被定义为WEBAPP_CONTRACTS_DIRECTORY_PARAM_NAME
;在InitFacesContext
类的getExceptionHandler()
方法中添加了一个新的ExceptionHandler类来处理UnsupportedOperationException
。该版本的详细信息可以在发布说明中找到。
Micrometer Metrics的 1.12.0、1.11.6、1.10.13 和 1.9.17 版本均带来了问题修复、文档改进、依赖项升级和新特性。其中 1.12.0 增加了这些特性:支持 Generational ZGC;JettyConnectionMetrics类支持Jetty 12;新增了JmsInstrumentation类,以增加对Jakarta Messaging规范的可观察性。这些版本的详细信息可以分别在1.12.0、1.11.6、1.10.13和1.9.17的发布说明中找到。
类似的,Micrometer Tracing的 1.2.0、1.1.7 和 1.0.12 版本均带来了依赖项升级和新特性。1.2.0 增加了这些特性:将SpanTagAnnotationHandler类变为可选的,使其可以与TimedAspect类匹配,让框架可以更容易地进行配置;在FinishedSpan接口中定义了一个新的getDuration()
方法;因为所有的 Instrumentation 项目将不提供对传输的抽象,因此对 HTTP 的抽象已被弃用并可能在将来移除。这些版本的详细信息可以在1.2.0、1.1.7和1.0.12的发布说明中找到。
Project Reactor 2023.0.0发布,包含了一些依赖项升级:reactor-core 3.6.0
、reactor-netty 1.1.13
、reactor-kafka 1.3.22
、reactor-pool 1.0.3
、reactor-addons 3.5.1
、reactor-kotlin-extensions 1.2.2
。有关该版本更详细的信息,请参阅变更日志。
类似的,Reactor 的第 13 个维护版本 2022.0.13 带来了这些依赖项升级:reactor-core 3.5.12
、reactor-netty 1.1.13
、reactor-kafka 1.3.22
。可以在变更日志中了解更多关于该版本的详细信息。
Piranha 23.11.0 发布,带来了一些重大变更:支持 JDK 21;支持 Piranha Core Profile 的协调恢复检查点(CRaC);移除了可维护性、代码行数、代码覆盖率和代码质量等徽章。可以在官方文档和问题追踪器中了解更多有关该版本的详细信息。
JDKMon (一个用于监控和更新已安装 JDK 的工具)17.0.85 和 17.0.83 提供了这项新特性:为 GraalVM 提供与 JDK 相关的国家漏洞数据库 (NVD) 扫描支持;引入了一个新的搜索字段,用于发现 OpenJDK JEP、JSR 和 Java 项目;支持 Common Vulnerability Scoring System (CVSS) 4.0 和 NVD API 2.0。
JobRunr (一个基于持久存储的 Java 后台处理库)6.3.3 发布:为 Quarkus 提供分离的构建时和运行时配置;使用 Quarkus ClientProxy
接口提供的合成类,替代了原来会导致找不到 Bean 的代理名称。有关该版本更多详细信息,请参阅发布说明。
JHipster Lite 0.48.0 发布,带来了问题修复、依赖项升级和新特性/增强,如:JHipster Lite 引擎支持的最小 JDK 版本为 21;新的许可模块,可构建 JHipsterModule 类的多个实例;在 @BusinessContext 和 @SharedKernel 注解中添加 name
和 description
属性,用于更好地记录上下文和生成实时文档。关于该版本更多的详细信息请参阅发布说明。
Testcontainers for Java 1.19.2 发布,带来了这些重要变更:在 HttpWaitStrategy
类中启用原生 HTTP 和 HTTPS;新增了一个关闭钩子,可以更快地发送 SIGTERM
到 Moby Ryuk,以便在默认的 10 秒之前关闭。
Arquillian 1.8.0.Final 发布,带来了这些重要变更:修复了RemoteExtensionLoader 类中的文件泄漏问题;依赖项升级至 Jetty 9.4.51.v20230217,解决了 Jetty 8.1.2.v20120308 的绕过漏洞问题;替换了已弃用的 JUnit 和 Arquillian 构造函数和方法。
Gradle 8.5 的 第三个候选版 和 第二个候选版 在新功能上持续改进,如:完全支持使用 JDK 21 编译、测试和运行;Kotlin DSL 的改进,包括更快的初次使用和支持预编译 Kotlin 脚本插件的版本目录;改进了对错误和警告的报告。这些版本的更多详细信息请参阅8.5-RC3 版本发布说明和8.5-RC2 版本发布说明。
原文链接:
https://www.infoq.com/news/2023/11/java-news-roundup-nov13-2023/
领取专属 10元无门槛券
私享最新 技术干货