写点什么

GlassFish 8.0 发布,兼容 Jakarta EE 11,增强安全性并改进数据访问

  • 2026-03-09
    北京
  • 本文字数:1876 字

    阅读完需:约 6 分钟

Eclipse 基金会发布Eclipse GlassFish 8.0.0。这款轻量级开源应用服务器多年来一直是 Java EE/Jakarta EE 的参考实现与兼容实现。

 

除了缺陷修复与依赖项升级外,本版本的新特性包括,虚拟线程支持、增强的应用安全能力,以及改进的数据访问支持。

 

OmniFish团队的主导下,历经 15 个里程碑版本后,GlassFish 8.0.0 正式发布,该版本最低要求 JDK 21,并已支持 JDK 25,同时作为 Jakarta EE 11 的兼容实现。

 

虚拟线程支持包括,来自Jakarta Concurrency 3.1规范的托管执行器,以及GlassFish Grizzly为 HTTP 和 IIOP 请求提供的虚拟线程池。这让 GlassFish 能够以极低开销处理大量并发请求。

 

GlassFish 通过初步集成Eclipse JNoSQLJakarta NoSQL规范的兼容实现),支持了Jakarta Data 1.0规范。Jakarta Data 定义的存储库模式(repository pattern)为开发者带来了更优的体验,包括,减少样板代码、可基于领域模型与用例组织存储库,同时支持基于偏移量与基于游标的两种分页方式。

 

GlassFish 通过集成MicroProfile JWT Authentication 2.1Jakarta Security 4.0规范,提供了增强的安全能力。开发者可以注入基于 JWT 的认证机制,并与安全的 REST 端点和用户界面页面结合使用。

 

自 2022 年 4 月OmniFish团队成立以来,GlassFish 项目一直由该团队主导,David Matějček担任项目负责人。OmniFish 为所有 GlassFish 版本提供直接支持,确保所有管理任务正确执行,并对 GlassFish 进行全面测试。OmniFish 联合创始人Arjan TijmsOndro Mihályi、Matějček 以及 Web 工程师Bauke Scholtz在 GlassFish、Jakarta EE、Java 应用开发与 Java 中间件生产支持方面均拥有多年的经验。

 

当被问及 OmniFish 完成 15 个里程碑版本并最终发布 GlassFish 8.0.0 过程中的亮点与挑战时,Mihályi 向 InfoQ 表示:

每一次重大新版本的发布,在规划、执行与保持所有内容对齐方面都是一项挑战。GlassFish 并非单一的单体项目,而是由许多内部与外部模块组成。所有内容都必须同步,所有模块都要为最终的 GlassFish 8 发布正式版本。与此同时,我们还面临来自 Jakarta EE TCK 团队的压力,需要尽早提供里程碑版本供他们运行测试套件。而且,Jakarta EE 最初计划仅支持 Java 21,但是他们又突然决定同时支持 Java 17。Jakarta EE 11 要正式发布,至少需要有一个通过认证的服务器,在当时,GlassFish 实际上是唯一可行的选择。因此我们不得不额外提供一个支持 Java 17 的版本。这一切都给 GlassFish 团队与背后主导开发的 OmniFish 带来了巨大压力。

 

GlassFish 8.0 的一大亮点是对全新 Jakarta Data 规范的支持,同时支持 NoSQL 与持久化(JPA)存储库。我们与 Eclipse JNoSQL 项目合作,该项目已拥有可复用的 NoSQL 数据库 Data 实现。OmniFish 则为 JNoSQL 增加了 SQL 数据库支持。两个项目都能够从中受益,GlassFish 获得了对 NoSQL 与 JPA 实体的存储库支持,而 JNoSQL 则获得了可复用的 JPA 后端。

 

另一大亮点是对虚拟线程的支持。这项工作由来已久,Java 21 发布后不久,OmniFish 就为 GlassFish 构建了一个扩展,使其能够在虚拟线程中运行 HTTP 请求。不过,将其正式加入 GlassFish 项目颇具挑战,因为当时 Grizzly 模块还无法兼容需要 Java 21 的代码。最终,我们在需要 Java 21 的 Grizzly 5 与 GlassFish 8 中实现了成功集成。为了在托管执行器中支持虚拟线程,我们与 Payara 团队在 GlassFish Concurro 组件上密切合作,该组件也被用于他们的服务器。

 

还有许多值得一提但不那么直观的改进。我们在开发 GlassFish 8 的同时,也在并行增强 GlassFish 7。我们引入了大量结构与性能优化,包括在 GlassFish 7.1 中初步实现 JPMS 模块化,并将这些改进合并到了 GlassFish 8 中。总而言之,GlassFish 8 不仅带来了新版 Jakarta EE,还集成了 MicroProfile Health、对最新 Java 版本的支持、多项 GlassFish 专属的新特性,以及由全面测试套件与维护团队保障的生产级质量。

 

GlassFish 拥有长达 30 年悠久历史。它最早于 1996 年 1 月以 Kiva Enterprise Server 的名称面世,同月 JDK 1.0 发布。在发展历程中,它历经多家公司与多次更名:1997 年 Netscape 收购 Kiva 后更名为 Netscape Application Server(NAS),1999 年 Sun 与 Netscape 结盟后更名为 iPlanet,2002 年随版本 7 发布后更名为 Sun ONE Application Server(S1AS/SOAS),2004 年随版本 8 发布后更名为 Sun Java System Application Server(SJSAS),最终在 2005 年,基于 SJSAS 捐赠的源码成立了全新的开源项目 GlassFish。 2006 年,GlassFish 1.0 成为 Java EE 5 的兼容实现。

 

有关本次版本发布的更多细节,可查阅发布说明

 

查看英文原文:GlassFish 8.0 Delivers Compatibility with Jakarta EE 11, Enhanced Security and Improved Data Access