据 InfoQ 报道,Java 生态在近期迎来一轮覆盖多个项目的版本更新:JDK 28 的提前编译 JEP 进入 Targeted 状态,Jakarta EE 12 时间表敲定,以及 JobRunr、OpenXava、Quarkus、Micronaut、LangChain4j、JNoSQL、ADK for Java/Kotlin 等框架相继发布新版本,另有一款新的 Java 语言服务器 Lathe 面世。

JEP 544升至Targeted,JDK 28要压缩启动与预热耗时

JEP 544(提前代码编译)已完成从 Proposed to Target 到 Targeted 的状态跃迁,交付目标明确为 JDK 28。该 JEP 想解决的痛点是应用冷启动慢、长时间预热,方法是让程序在 HotSpot JVM 启动阶段就能用上已经过优化的原生代码,从而更快抵达性能峰值并稳定在该水平。

JDK 28 早期访问构建方面,最新可测试版本为 Build 18,它是在 Build 17 基础上的迭代,集中修复了各类问题,详细条目可查阅发布说明。开发过程中发现的问题,官方引导提交至 Java Bug 数据库统一跟踪。

Jakarta EE 12:三次交付节点与安全规范归并

在每周博客 Hashtag Jakarta EE 里,Eclipse 基金会 Jakarta EE 开发大使 Ivar Grimstad 介绍了该平台的进展。他提到,围绕把 Jakarta Authorization 纳入 Jakarta EE Web Profile,相关投票正在开展,将其与 Web Profile 内其他安全类规范放在同一归类的做法被认为是合理选择。

应指导委员会要求,本周平台电话会议讨论了 Jakarta EE 12 的时间安排并最终定案:12 月 1 日交付 Core Profile,次年 3 月 31 日交付 Web Profile,5 月 15 日交付 Platform。

Grimstad 还表达了个人的偏好:他希望 Jakarta NoSQL 能进入 Jakarta EE 12 Web Profile。理由在于,企业应用对接人工智能时,规范并统一各类 NoSQL 数据存储的访问方式价值很高,特别是在 RAG 检索增强生成所依赖的向量数据库场景尤其实用。他鼓励开发者就这一议题通过邮件列表或平台电话会议反馈,强调社区意见会左右最终走向。

与此同时,作为 Jakarta NoSQL 兼容实现的 Eclipse JNoSQL 完成了身份升级,从孵化项目转为 Eclipse Enterprise for Java(EE4J)项目。该实现早在 2017 年就进入 Eclipse 体系,并自 Jakarta EE 11 起,作为 Jakarta Data 支撑内容的一部分出现在 Eclipse GlassFish 里。

应用框架动向:JobRunr 9可视任务、OpenXava 8改用Spring Boot

JobRunr 9.0.0 的显著变动集中在仪表盘与兼容性上:历史记录区域新加了一个 Chart 选项卡,用甘特图呈现任务整个生命周期,每种状态、每个持久化步骤各占一行;框架层面支持 Micronaut 5 与 Quarkus 3.40。另外,当被序列化的任务体量过大时,系统会给出警告,抛出 StepExecutionException 并解包处理。该版本更新细节可参考官方发布说明与配套网络研讨会,InfoQ 后续会另发一篇更详尽报道。

OpenXava 8.0.0 在升级依赖与校正缺陷、完善文档的同时带来了新特性:框架改为搭建于 Spring Boot 之上,包含对 Jakarta EE 11 规范的部分实现支持,整体界面视觉也做了现代化调整。详细改动见该项目发布说明。

Quarkus 发布了 3.34.0 版本,除缺陷修复外有两点值得关注:一是 AeshLauncher 接口经过改良,其信号协议和超时诊断更为稳健;二是当端点返回 void 时,ResteasyReactiveJacksonProcessor 类不再输出多余警告。更完整的列表可查阅 3.40.1 与 3.40.0 的发布文档。

由 Micronaut 基金会发布,分别为在 Micronaut Core 5.2.11 和 5.2.8 基础上构建的 Micronaut Framework 5.2.1 与 5.2.0;据官方公告介绍,两个版本不仅修复缺陷、同步更新生态内多个模块,还增加了新能力:一个是对 Micronaut for Python 的实验性支撑,可在编译阶段处理 Python 源码;另一个是新的 Micronaut Jakarta EL 模块,补上了 Jakarta 表达式语言规范的实现。

LangChain4j与数据层、智能体工具:决策模型API、ScyllaDB支持、安全方法重构

LangChain4j 方面,1.21.0 正式版连同第 31 个 Beta 测试版本一同到来,在修复缺陷与提升依赖版本之外,新增实验性质的决策模型能力,其中包含由 DecisionModel 接口以及 DecisionServices、RoutingChatModel 和 DecisionRouterPlanner 这几个类共同组成的新 API。官方给出了相应发布说明与决策模型、决策服务教程供参考。

Eclipse JNoSQL 发布 1.19.0,新支持的数据库是 ScyllaDB;驱动层面同步升级,包括 Neo4J 6.3.0、InfluxDB 1.11.1、DynamoDB 2.55.7 和 MongoDB 5.13.0;此外还改善了关于生命周期日志的输出,改动波及 Oracle NoSQL 以及 Jakarta Persistence 扩展。

智能体开发工具 ADK for Java 在 1.11.0 中修正问题、充实文档,并带来若干功能添加:EventActions 类新增 rewindBeforeInvocationId() 方法,目标是与 ADK for Kotlin 的回溯行为对齐;Session 类则新提供线程安全的 immutableEvents()、addEvent()、addEvents() 三个方法,取代此前标记为弃用的 events() 方法。

ADK for Kotlin 1.3.0 与之呼应,也有缺陷修复和功能新增:用一个新出现的 @ExperimentalLiveApi 注解标识实时双向流式 API;Event 类里 author 属性的初始值不再为空值,而是改为空字符串。两者的详尽信息都列于各自发布说明之中。

Telenor Linx 高级软件工程师 Alexey Gavrilov 对外推出了新的 Java 语言服务器 Lathe,它是建立在语言服务器协议(LSP)之上的一种实现。LSP 用于给编辑器与语言服务之间牵线,设计上对调用方不绑定具体产品,所以凡是与 LSP 兼容的编辑器都能运行它。对于困扰很多人的项目导入以及类路径、模块路径配置,Grigalov 在设计里做了简化;同时由于它的工程模型直接取自 Maven 构建结果,这些设置能与构建配置保持一致、不会走样。配套设施上,Lathe 自带一个 Neovim 客户端,以及面向 AI 编码代理的 MCP 服务器。其最新版 0.1.14 刚于本周较早时间发布。

小结:本轮 Java 生态更新显示两条主线并行——JDK 28 用 JEP 544 挑战启动与预热瓶颈,Jakarta EE 12 则以分阶段交付实现规范供同步落地。框架项目则围绕可观测与调度这类实际工程需求进个演进:LangChain4j 决策模型 API、ADK 的线程安全,都是围绕实用场景在做。至于把 AI 与 NoSQL 写进平台规范的提案能否通过社区投票,值得继续跟进。