Java新闻综述:OpenJDK、Spring更新和CVEs、Payara平台、Apache Tomcat更新

231 阅读8分钟

本周2022年5月16日的Java综述,主要内容包括:OpenJDK for JDK 19、Jakarta EE 10、Spring里程碑和要点发布以及CVE、2022年5月Payara平台发布、Quarkus 2.9.1。Final, Micronaut 3.4.4, WildFly 16.1.1, Hibernate ORM 5.6.9.Final, Hibernate Reactive 11.5.Final, JDKMon 17.0.25, JobRunr 5.1.2, JReleaser early-access, Apache Tomcat point releases and Apache Camel 3.17.0。

OpenJDK

尽管为期一周的审查已于2022年5月19日结束,但JEP 405《记录模式(预览版)》仍然保持为JDK 19的拟议目标状态。该JEP在Project Amber的支持下,建议用记录模式来增强语言,以解构记录值。记录模式可以与类型模式结合使用,以 "实现强大的、声明性的、可组合的数据导航和处理形式"。类型模式最近被扩展到 **switch**通过JEP 406,Pattern Matching for switch (Preview)(在JDK 17中交付)和JEP 420,Pattern Matching for switch (Second Preview)(在JDK 18中交付),类型模式最近被扩展到case标签中。

JEP 428,结构化并发(孵化器),从其JEP草案8277129晋升为候选状态。在Project Loom的支持下,这个孵化中的JEP提议通过引入一个库来简化多线程编程,将在不同线程中运行的多个任务视为一个工作单元。这可以简化错误处理和取消,提高可靠性,并增强可观察性。

JDK 19

JDK 19早期访问版本Build 23在上周发布了,其特点是对Build 22的更新,包括对各种问题的修复。更多细节可以在发布说明中找到。

随着为Rampdown第一阶段确定的目标日期接近2022年6月9日,JDK 19的功能集目前有这六个功能:

我们鼓励开发者通过Java Bug数据库报告错误。

Jakarta EE

在通往Jakarta EE 10的路上,Eclipse基金会的Jakarta EE开发者倡导者Ivar Grimstad在他的Hashtag Jakarta EE每周博客宣布Jakarta EE 10平台规范进入发布审查的新目标日期是2022年6月9日。做出这一决定是为了确保企业应用将完全兼容JDK 11和JDK 17。另外,Eclipse GlassFish最近在7.0.0-M4和即将发布的7.0.0-M5版本之间提供了一个中间预发布版本,已经顺利通过了JDK 11的TCK,但要通过JDK 17的TCK还需要努力。

Spring Framework

对于Spring团队来说,这是非常忙碌的一周,提供了许多与Spring BootSpring for GraphQL、SpringData、Spring SessionSpring Security相关的点发布、里程碑发布和CVE。

发布了Spring Boot 2.7.0,以提供:Spring for GraphQL 1.0的自动配置和指标;以及新的注释。 [@DataCouchbaseTest](https://docs.spring.io/spring-boot/docs/2.7.0-M3/api/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTest.html)**和 [@DataElasticsearchTest](https://docs.spring.io/spring-boot/docs/2.7.0-M3/api/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTest.html),分别用于Couchbase和Elasticsearch的测试。依赖关系的升级包括。Spring Data 2021.2、Spring HATEOAS 1.5、Spring LDAP 2.4、Spring Security 5.7和Spring Session 2021.2。关于这个版本的更多细节,可以在发布说明中找到。InfoQ将以更详细的新闻报道进行跟进。

Spring Boot 2.6.8已经发布,具有35个错误修复、文档改进和依赖性升级。关于这个版本的更多细节可以在发布说明中找到。

Spring Boot 2.5.14已经发布,包括29个bug修复、文档改进和依赖性升级。2.5版本的列车已经到达终点,开发者应该考虑升级到更高版本的Spring Boot。有关该版本的更多细节可在发布说明中找到。

在通往Spring Boot 3.0.0的道路上,第三个里程碑版本已经发布,其特点是:自动配置Micrometer观察、跟踪和 **[OtlpMeterRegistry](https://github.com/quarkusio/quarkus/issues/25522)**的自动配置;并恢复了对REST Assured和Pooled JMS的支持。关于这个版本的更多细节可以在发布说明中找到。

Spring for GraphQL 1.0已经发布,它的特点是:为数据获取器提供了基于注解的编程模型;QuerydslQuery by Example资源库作为数据获取器;通过HTTP、WebSocket和RSocket改进了服务器、客户端和测试;以及通过数据注解实现字段级安全。 **@Controller**方法。InfoQ将在后续推出更详细的新闻报道。

Spring Data 2021.2和2022.0的第四个里程碑版本已经推出。2022.0的发布列车将基于Spring Framework 6、JDK 17和Jakarta EE 9。代号为Raj的Spring Data 2021.2的功能包括:声明式的 **Update**方法 **data-mongodb**模块中的声明方法;改进对 **@IdClass**模块中的 **data-jpa**模块中的声明方法;改进了对 **data-elasticsearch**模块中对重新索引的支持;以及对模块的直接投射 **data-cassandra**模块的直接投影。关于这个版本的更多细节可以在发布说明中找到。

Spring Session 2021.2已经发布,特点是依赖性升级到Spring Data 2021.2。该版本也是通往下一代Spring Session的通道,该版本将建立在Spring Framework 6.0之上。

CVE-2022-22978,RegexRequestMatcher中的授权绕过,已发布,但无意中被认定为CVE-2022-22975。使用该类实例的应用程序 [RegexRequestMatcher](https://docs.spring.io/spring-security/site/docs/3.2.8.RELEASE/apidocs/org/springframework/security/web/util/RegexRequestMatcher.html)类的实例,并在正则表达式中加入'.'的类的应用,有可能受到授权绕过的影响。

CVE-2022-22976,BCrypt跳过盐轮的工作系数为31,也已发布,以解决一个整数溢出错误,导致编码器不执行任何盐轮。

Spring Security的5.7.1、5.6.5和5.5.8版本已经发布,提供了一个错误修复,其中的一个实例 **[StrictHttpFirewall](https://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/web/firewall/StrictHttpFirewall.html)类的实例不正确地拒绝有效的中国、日本、韩国和越南(CJKV)字符。

Spring Security 5.7.0, 5.6.4, 5.5.7版本也已发布,以解决上述CVE-2022-22978和CVE-2022-22976漏洞。

在通往Spring Security 6.0.0的道路上,第五个里程碑版本已经发布,提供了显著的变化,如:每个调度类型都需要授权;将默认的 **shouldFilterAllDispatchTypes**属性的默认值为 true;将默认的安全上下文过滤器从 [SecurityContextPersistenceFilter](https://docs.spring.io/spring-security/site/docs/3.2.8.RELEASE/apidocs/org/springframework/security/web/context/SecurityContextPersistenceFilter.html)类改为 [SecurityContextHolderFilter](https://docs.spring.io/spring-security/site/docs/6.0.0-M3/api/org/springframework/security/web/context/SecurityContextHolderFilter.html)**类;并删除了SAML API中定义的所有废弃内容。这个版本还包括修复了一个实例的 **[StrictHttpFirewall](https://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/web/firewall/StrictHttpFirewall.html)类的实例不正确地拒绝有效的CJKV字符。

Payara

Payara已经发布了他们的Payara平台的2022年5月版,作为一个企业版。Payara Platform Enterprise 5.39.0版提供了四个错误修复、两个组件升级和五个改进,包括:支持JDK 17;以及在调用管理控制台时能够指定超时选项。关于这个版本的更多细节可以在发布说明中找到。

Quarkus

在Quarkus 2.9.0发布一周后,Red Hat提供了Quarkus 2.9.1.Final的维护版本,其中包括错误修复和文档改进,以及依赖性升级,包括。GraalVM 22.1、Hibernate Reactive 1.1.5.Final、Hibernate ORM 5.6.9.Final、Micrometer BOM 1.8.6和Infinispan 13.0.10.Final。关于这个版本的更多细节可以在更新日志中找到。

Micronaut

Micronaut基金会发布了Micronaut 3.4.4,对Micronaut模块进行了更新。Micronaut Maven Plugin 3.2.4, Micronaut SQL 4.2.3, Micronaut JAX-RS 3.2.1, Micronaut Oracle Cloud 2.1.3, Micronaut MQTT 2.1.1和Micronaut OpenAPI 4.0.1。关于这个版本的更多细节可以在发布说明中找到。

WildFly

在WildFly 26.1发布五周后,Red Hat提供了一个维护版本,即26.1.1版本,具有许多组件的升级,包括。WildFly Core 18.1.1.Final、Smallrye Config 2.10.0、Smallrye Health 3.2.1、Netty 4.1.76,以及RESTEasy 6.0.1.Final。有关该版本的更多细节可在发布说明中找到。

Hibernate

JBoss在过去一周提供了 Hibernate ORMHibernate Reactive的更新。

Hibernate ORM 5.6.9.Final是5.6版本中的一个维护版本,提供了补丁和关键错误修复。

Hibernate Reactive 1.1.5.Final为使用Hibernate Reactive的开发者提供了一个关键的错误修复。 **[Stage.SessionFactory](https://hibernate.org/reactive/documentation/1.0/javadocs/org/hibernate/reactive/stage/Stage.SessionFactory.html)**和 **[Stage.Session](https://hibernate.org/reactive/documentation/1.0/javadocs/org/hibernate/reactive/stage/Stage.Session.html)接口的开发者提供了一个重要的错误修复。如果他们的应用程序偶尔产生"No Vert.x context active"错误信息,开发者也应该升级到这个最新版本。

JDKMon

最新版本JDKMon是一个监控和更新已安装的JDK的新工具,已经提供给Java社区。由Azul公司的首席工程师Gerrit Grunwald创建,17.0.25版包括:与Linux版本有关的修复;CVEs的指示器已被新的指示器取代。

职务运行器(JobRunr

JobRunr的创始人和主要开发者Ronald Dehuysser 发布了5.1.2版本,该版本的特点是:支持用注解提供一个时间间隔而不是cron表达式。 **[@Recurring](https://github.com/jobrunr/jobrunr/blob/master/framework-support/jobrunr-micronaut-feature/src/main/java/org/jobrunr/micronaut/annotations/Recurring.java)**注解提供一个时间间隔,而不是cron表达式;并允许在 "类 "的一个实例中设置一个 **[JobContext](https://www.javadoc.io/doc/org.jobrunr/jobrunr/latest/org/jobrunr/jobs/context/JobContext.html)**类的实例被设置在 **[MockJobContext](https://www.javadoc.io/doc/org.jobrunr/jobrunr/latest/org/jobrunr/server/runner/MockJobContext.html)**测试。

JR释放器

上周,JReleaser的一个更新的早期访问版本已经发布,其特点是:依赖性升级至 **aws-java-sdk**1.12.220, **jsonschema**4.24.3, **sshj**0.33.0, **tika**2.4.0和 **mockito**4.5.1.

Apache Tomcat

对于Apache Tomcat团队来说,这也是忙碌的一周,他们为9.0、10.0和10.1版本的火车提供了点发布。

9.0.6310.0.2110.1.0-M5版本都具有以下特点:从Kubernetes服务绑定中获取数值的属性源;识别Linux内核重复接受错误的根本原因;对Tomcat Native Library 1.2.3的依赖性升级,以支持用OpenSSL 1.1.1o构建的Windows二进制文件;以及在配置内部、内存密钥存储时支持加密的PKCS#1格式的私钥

Apache Tomcat 10.1.0-M15是一个alpha里程碑版本,为开发者提供了早期访问Apache Tomcat 10.1版本培训中的新功能。

Apache Camel

阿帕奇软件基金会发布了Apache Camel 3.17.0,其中有220个错误修复、改进和依赖性升级,包括。Spring Boot 2.6.7;Kamelets 0.8.1 for the **camel-jbang**模块;Google Cloud Libraries BOM 25.2.0;Jakarta Mail 1.6(Jakarta EE 8);和 **maven-bundle-plugin**模块来修复OSGi的可重现性问题。该版本的更多细节可以在发布说明中找到。