Java 近期新闻:JobRunr 7.0、Commonhaus 基金会介绍、Payara 平台、Devnexus

Java 近期新闻:JobRunr 7.0、Commonhaus 基金会介绍、Payara 平台、Devnexus
2024年04月21日 10:15 InfoQ

作者 | Michael Redlich

译者 | 刘雅梦

策划 | 丁晓昀

OpenJDK

在宣布成为 Candidate 后不到一周的时间里,JEP 473,流聚合器(Stream Gatherers,第二次预览),已经从 JDK 23 的 Candidate 状态提升为 Proposed to Target 状态。该 JEP 是对上一次预览,即 JEP 461,流聚合器(Stream Gatherers,预览版),在 JDK 22 中交付,进行的第二次预览。这将允许有更多的时间来进行反馈,并使用该功能获得更多的体验,而不会对 JEP 461 进行面向用户的更改。该特性旨在增强 Stream API,以支持自定义的中间操作,这些操作将“允许流管道以现有内置中间操作无法轻松实现的方式转换数据”。有关该 JEP 的更多详细信息,请参阅原始设计文档和 InfoQ 新闻报道。审查预计将于 2024 年 4 月 16 日结束。

同样,JEP 469,向量 API(Vector API,第八轮孵化),已从 JDK 23 的 Candidate 状态提升为 Proposed to Target 状态。该 JEP 整合了对前七轮孵化反馈的增强功能:JEP 460,向量 API(第七轮孵化),在 JDK 22 中交付;JEP 448,向量 API(第六轮孵化),在 JDK 21 中交付;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 中的孵化器模块交付。最初计划通过重复使用原始 Incubator 状态进行重新孵化,但最终决定继续枚举。向量 API 将继续孵化,直到 Valhalla 项目的必要功能可作为预览功能提供。届时,向量 API 团队将对向量 API 及其实现进行调整以使用它们,并将向量 API 从 Incubator 推进到 Preview。审查预计将于 2024 年 4 月 16 日结束。

JEP 475,G1 的后期屏障扩展(Late Barrier Expansion for G1),已从其 JEP Draft 提升为 Candidate 状态。该 JEP 建议通过将 G1 垃圾收集器的扩展从 C2 JIT 编译管道的早期转移到后期,来简化 G1 垃圾收集器屏障的实现,这些屏障记录有关应用程序内存访问的信息。目标是在使用 G1 收集器时减少 C2 的执行时间。

JDK 23

JDK 23 早期访问构建版本的 Build 18 于上周发布,该版本是对 Build 17 的更新,其中包括对各种问题的修复。有关该版本的更多详细信息,请参阅发布说明。

Spring 框架

Spring Framework 6.2.0 的第一个里程碑版本提供了缺陷修复、文档改进、依赖项升级和众多新特性,例如:用 JspPropertyAccessor 中的 Jakarta Pages VariableResolver接口替换已弃用的 Jakarta Expression Language ELContext类;提供了改进的 DefaultMessageListenerContainer 类,以支持一级虚拟线程;以及向 LocalEntityManagerFactoryBean 类中添加了了 Java  DataSource 接口的配置和公开。有关该版本的更多详细信息,请参阅发布说明。

同样地,Spring Framework 的 6.1.6、6.0.19 和 5.3.34 版本也已发布,主要是为了解决 CVE-2024-22262,带有主机验证的 Spring Framework URL 解析(第三次报告) 这一漏洞,该漏洞存在于使用UriComponentsBuilder类解析外部提供的 URL 并在解析 URL 的主机上执行验证检查的应用程序上,如果在验证检查通过后使用 URL,则可能容易受到开放重定向攻击或服务端请求伪造攻击。该 CVE 与 CVE-2024-22259 和 CVE-2024-22243 相同,但具有不同的输入。新特性包括:数据库驱动程序在JdbcUtils类中定义的getResultSetValue()方法中不支持日志列类型;避免在TypeDescriptor类中克隆Annotation接口实例的空数组;以及在使用 DefaultListableBeanFactory 类中定义的getBeanProvider()方法时,对泛化 FactoryBean类型匹配的一致性支持。有关这些版本的更多详细信息,请参阅版本 6.1.6、版本 6.0.19 和版本 5.3.34 的发布说明。

Spring Data 2024.0.0 的第一个候选版本提供的新特性包括:支持值表达式,以改进实体和属性相关注解中的表达式,使其与 Spring Framework @value 注解保持一致;以及与新的 MongoDB 5.0 驱动程序的兼容性,该驱动程序包含了一个已弃用的 API,现已被删除。还升级了一些子项目,如:Spring Data Commons 3.3.0-RC1;Spring Data MongoDB 4.3.0-RC1;Spring Data Elasticsearch 5.3.0-RC1;和 Spring Data Neo4j 7.3.0-RC1。有关该版本的更多详细信息,请参阅发布说明。

同样,Spring Data 的 2023.1.5 和 2023.0.11 版本也已发布,为子项目提供了缺陷修复和相应的依赖项升级,如:Spring Data Commons 3.2.5 和 3.1.11;Spring Data MongoDB 4.2.5 和 4.1.11;Spring Data Elasticsearch 5.2.5 和 5.1.11;以及 Spring Data Neo4j 7.2.5 和 7.1.11。这些版本也可能会分别被即将发布的 Spring Boot 3.2.5 和 3.1.11 所使用。

Spring HATEOAS 的 2.3.0-RC1、2.2.2 和 2.1.5 版本已经发布,主要是升级到了 Spring Framework 的最新版本,该版本解决了上述的 CVE-2024-22262 漏洞,并对 Project Reactor 2023.0.5 和 Lombok 1.18.32 进行了依赖项项升级。有关这些版本的更多详细信息,请参阅版本 2.3.0-RC1、版本 2.2.2 和版本 2.1.5 的发布说明。

Java 及 Spring 软件工程师、Spring I/O 组织者 Sergi Almar介绍了 Spring Builders 计划,这是一个供 Spring 框架开发人员学习、展示其 Spring 相关工作以及与其他 Spring 开发人员联系的环境。

Payara

Payara 于 2024 年 4 月发布了 Payara Platform,其中包括社区版 6.2024.4 和企业版 6.13.0。这两个版本都对 CVE-2023-4043 进行了安全修复,在这一漏洞中,从不受信任的来源解析 JSON 将允许攻击者利用对大规模解析数字的内置支持,以利用边界情况的数字,在这种场景下,数字的输入文本可能导致比预期更长的处理时间。

另外,还进行了一些组件的升级,并使用 MicroProfile Config 的配置文件设置解决了 NullPointerException 问题。有关这些版本的更多详细信息,请参阅社区版 6.2024.4 和企业版 6.13.0. 的发布说明。

Open Liberty

IBM 发布了 Open Liberty 的 24.0.0.4-beta 版本,其特性包括:支持 JDK 22,并更新了 Jakarta Data 的预览版本,其中包括最近发布 1.0.0-M3 版本,在该版本中引入了静态元模型。这允许更安全的类型使用,并能够使用 @find 注解来定义存储库查找方法。

Micronaut

Micronaut 基金会发布了 Micronaut Framework 的 4.3.8 版本,其中包括 Micronaut Core 4.3.14、缺陷修复、文档改进以及模块更新:Micronaut Security 和 Micronaut SQL Libraries。有关该版本的更多详细信息,请参阅发布说明。

Quarkus

Quarkus 3.9.3 是第二个维护版本(跳过了版本 3.9.0),它提供了一些值得注意的修复,例如:如果应用程序中的 REST 和 servlet 带有 Jakarta RESTful Web Services  ExceptionMapper 接口的自定义实现,则无法使用它们来访问应用程序中定义的任何静态资源;并且 index.html 文件的路由失败,目录的 HTTP 状态码为 404。有关该版本的更多详细信息,请参阅变更日志。

HelidonHelidon 4.0.7 的发布提供了一些值得注意的更改,例如:OidcFeature 类的禁用实例不再抛出 NullPointerException ;如果没有当前的的 OpenTelemetry span,则正确返回 Optional.empty() ;并且当从相应的构建器模式或实例创建列表时,避免使用复制的默认值。有关该版本的更多详细信息,请参阅发布说明。

WildFly

WildFly 32 的第一个 Beta 版提供了缺陷修复、组件升级和改进,例如:将开放全球应用程序安全项目(Open Worldwide Application Security Project,OWASP)的依赖项检查插件集成到了 WildFly 的构建中;对已弃用的 Jakarta Annotations  @ManagedBean 注解的引用标记为可选或删除;以及删除了一些过时的快速入门(Quickstart)示例。有关该版本的更多详细信息,请参阅发布说明。

阿帕奇软件基金会

Apache TomEE 10.0.0 的第一个里程碑版本提供了缺陷修复、依赖项升级和新特性:一个 MicroProfile OpenAPI Reader 示例;并改进了在加载类失败时的日志记录。还有一个针对 CVE-2023-35116 漏洞的解决方案,这是在 Jackson Databind 2.15.2 及更低版本中存在的一个漏洞,攻击者可以利用循环依赖关系创建一个对象,从而可能导致拒绝服务。有关该版本的更多详细信息,请参阅发布说明。

Micrometer

Micrometer Metrics 的 1.13.0-RC1 版本提供了依赖项升级和新特性,例如:允许通过 PrometheusConfig 界面自定义 Prometheus 属性;在启动时宣布已经找到 OtlpMeterRegistry 类的实例配置;以及一个新的构造函数,该构造函数包含用于元数据差异日志记录的 WarnThenDebugLogger 类的记录器名称。有关该版本的更多详细信息,请参阅发布说明。

同样,Micrometer Metrics 的 1.12.5 和 1.11.11 版本也提供了依赖项升级和新特性,例如:在 Log4j2Metrics 类中对相同的仪表名称使用相同的描述;并弃用 httpcomponents 包中的 DefaultUriMapperPoolingHttpClientConnectionManagerMetricsBinder 类,因为在弃用同一包中的其他类时似乎遗漏了它们。有关这些版本的更多详细信息,请参阅版本 1.12.5 和版本 1.11.11 的发布布说明。

Micrometer Tracing 的 1.3.0-RC1、1.2.5 和 1.1.12 版本提供了对 Micrometer Metrics 1.13.0-RC1、1.12.5 和 1.11.11 版本的依赖项升级。有关这些版本的更多详细信息,请参阅版本 1.3.0-RC1、版本 1.2.5 和版本 1.1.12 的发布布说明。

Reactor 项目

Project Reactor 2024.0.0 的第一个里程碑版本提供了对 reactor-core 3.7.0-M1reactor-netty 1.2.0-M1 的依赖项升级。此外,还对版本 2024.0.0-M1 进行了重新调整,其中 reactor-kafka 1.4.0-M1reactor-pool 1.1.0-M1reactor-addons 3.6.0-M1reactor-kotlin-extensions 1.3.0-M1 等构件保持不变。有关该版本的更多详细信息,请参阅变更日志。

接下来,Project Reactor 2023.0.5,第五个维护版本,提供了对 reactor-core 3.6.5reactor-netty 1.1.18 的依赖项升级。此外,也对版本 2023.0.5 进行了重新调整,其中 reactor-kafka 1.3.23reactor-pool 1.0.5reactor-addons 3.5.1reactor-kotlin-extensions 1.2.2 等构件保持不变。有关该版本的更多详细信息,请参阅变更日志。

接着,Project Reactor 2022.0.18,第十八个维护版本,提供了对 reactor-core 3.5.16reactor-core 3.5.16 的依赖项升级。此外,还对版本 2022.0.18 进行了重新调整,其中 reactor-kafka 1.3.23reactor-pool`1.0.5reactor-addons3.5.1` 和 `reactor-kotlin-extensions1.2.2` 等构件保持不变。有关该版本的更多详细信息,请参阅变更日志。

最后,Project Reactor 2020.0.43(代号为 Europium-SR43)的发布为 reactor-core 3.4.37reactor-netty 1.0.44 提供了依赖项升级。还对版本 2020.0.43 进行了重新调整, reactor-kafka 1.3.23reactor-pool 0.2.12reactor-addons 3.4.10reactor-kotlin-extensions 1.1.10reactor-rabbitmq 1.5.6 等构件保持不变。有关该版本的更多详细信息,请参阅变更日志。

Hibernate

Hibernate ORM 6.5.0 的第二个候选版本提供了缺陷修复和改进,例如:改进了 Java 时间对象和时区偏移的使用,这些对象和偏移现在可以通过 JDBC 4.2 定义的 JDBC 驱动程序直接进行封送;一种新布局,用于配置查询结果在查询缓存中存储的格式;以及支持将 Java 记录用作 Jakarta Persistence @IdClass 注解中的参数。该版本还提供了基于 Hibernate 注解处理器的新的 Jakarta Data 规范的技术预览。

Hibernate Search 的所有维护版本,版本 7.1.1.Final、版本 7.0.1.Final 和版本 6.2.4.Final,均提供了依赖项升级和一些显著的更改,例如:更新了有关矢量搜索功能所需的最低 Elasticsearch 版本的潜在误导性错误消息;解决了使用 ORM 鉴别器多租户时可能出现的大规模索引问题;并纠正了参考文档中所支持的 Java 版本差异。有关该版本的更多详细信息,请参阅发布说明。

Hibernate 团队还宣布它已经加入了 Commonhaus 基金会,这是一个新的基金会,我们将会在下文中介绍它。

JobRunr

经过两个候选版本之后,JobRunr 7.0 版(这一个用 Java 执行后台处理的实用程序)已经向 Java 社区发布。新的功能和改进包括:内置对虚拟线程的支持,在使用 JDK 21 时默认启用;InMemoryStorageProvider 类现在允许轮询间隔短至 200ms,这对测试很有用;以及配置 BackgroundJobServer 类的关闭周期能力。破坏性的更改包括:JobScheduler 类中的 delete(String id) 方法已被重命名为 deleteRecurringJob(String id) ;以及对 StorageProvider 接口以及包括新功能的 PagePageRequest 类的更新。有关该版本的更多详细信息,请参阅发布说明。InfoQ 将继续跟进以提供更详细的新闻报道。

Infinispan

Infinispan  15.0.1.Final 是第一个维护版本,提供了一些值得注意的更改,例如:避免在 Infinispan Insights 出现错误时关闭服务器;以及在清除索引时对 SoftIndexFileStore  API 指向不存在的数据位置的解析;和有关该版本的更多详细信息,请参阅变更日志。

Piranha

Piranha 24.4.0 的发布带来了一些值得注意的更改,例如:在 Piranha CLI 中添加了  coreprofile startcoreprofile runcoreprofile stop 命令;Payara Uber 更名为 Payara Fin,该包装器将允许开发人员在 JAR 文件中运行所有内容;并向 Maven 插件公开了 --https-keystore-file--https-keystore-password 参数。有关该版本的更多详细信息,请参阅他们的文档和问题跟踪。

JDKUpdater

JDKUpdater 发布了 14.0.39+63 和 14.0.39+61 版本,这是一个新的实用程序,为开发人员提供了跟踪与 OpenJDK 和 GraalVM 构建相关更新的能力。这些版本由 Azul 的首席工程师 Gerrit Grunwald 于 3 月中旬推出,其中包括如下的更新:初步支持下载功能,使开发人员能够从不同的供应商处下载 JDK;将菜单栏图标更改为 SVG 格式,这样可以根据菜单栏的文本颜色自动切换颜色;并将 SDKMAN!、JBang、Homebrew 和 Nix 的开关移至单独的屏幕设置上。有关该版本的更多详细信息,请参阅发布说明。

JReleaser

2024 年 4 月 10 日是 JReleaser 的三周年纪念日,JReleaseer 是一款适用于 Java 和非 Java 项目的发布自动化工具,其旨在简化创建发布和将构件发布到多个包管理器的过程,同时提供可自定义的选项。它由 Oracle 高级首席产品经理 Andres Almiray 创建,为了庆祝这一周年纪念日,JReleaser 宣布加入 Commonhaus 基金会,这是一个新的基金会,我们将会在下文介绍。

阿帕奇软件基金会(译者注:建议和前面阿帕奇软件基金会的内容合并)

Apache Groovy 的 5.0.0-alpha-8 和 4.0.21 版本提供了缺陷修复、依赖项升级和改进功能,例如:支持 JDK 23;以及 Closure 抽象类的新元实例,用于增强对 execute 方法的五个变体的 SQL 元数据访问。有关这些版本的更多详细信息,请参阅版本 5.0.0-alpha-8 和版本 4.0.21 版的发布说明。

JHipster

JHipster 8.3.0 的发布提供了缺陷修复、对 Spring Boot 3.2.4 和 Gradle 8.7 的依赖项升级,以及一些值得注意的更改,例如:替换了jhipster-dependencies,转而支持 Spring Boot 的依赖管理;对 Spring Cloud Gateway MVC 的实验性支持;以及测试期间对 Spring 上下文缓存的改进。有关该版本的更多详细信息,请参阅发布说明。

JetBrains Ktor

JetBrains 发布了 Ktor 的 2.3.10 版本,这是一个用于创建微服务和 Web 应用程序的异步框架,其中包括了如下的改进和修复:解决了 Netty 的不一致行为,即为没有值的查询参数返回 null 或空字符串;在 NettyConnectionPointCIOConnectionPoint 类中支持 IPv6 地址;并支持 ZIP64 格式,以克服 65535 个条目的限制。有关该版本的更多详细信息,请参阅变更日志。

Commonhaus 基金会

Commonhaus 基金会是一个新的非营利组织,致力于开源库和框架的可持续性,上周已经被引见给了 Java 社区,为自治的开源项目提供继任规划和财政支持。

他们的使命是:

授权由开发人员、贡献者和用户组成的多元化社区创建、维护和发展开源库和框架,通过共享管理和社区协作确保长期增长和稳定。

创始人 Red Hat 杰出工程师 Erin Schnabel、Lumigo OpenTelemetry 架构师 Ken Finnigan 和 GitLab 高级技术营销经理 Cesar Saavedra 将分别担任主席、董事会成员和财务主管。

Commonhaus 启动时,已经加入的开源项目包括 Hibernate、Jackson、OpenRewrite、JBang、JReleaser 和 Morphia.。

Devnexus

上周,第 20 届 Devnexus 2024 在佐治亚州亚特兰大的佐治亚州世界会议中心(Georgia World Congress Center)举行,来自 Java 社区的演讲者就以下主题举办了研讨会和演讲:Jakarta EE、Java 平台、核心 Java、架构、云基础设施和安全。

Devnexus 由亚特兰大 Java 用户小组(AJUG)主办,其历史可以追溯到 2004 年,最初该会议被称为 DevCon。Devnexus 这个名字是在 2010 年引入的。

会议还对有兴趣参与的发言者进行了现场采访。这些访谈名为“DevOps Speakeasy”和“Build Propulsion Lab”,分别由代表 JFrog 和 Gradle 的员工主持。一个已经发布的采访示例是,Gradle 的开发者倡导人员 Brian Demers 采访了 Endor Labs 的解决方案架构师 Matt Brown。InfoQ 将会继续跟进以提供更详细的新闻报道。

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部