GlassFish 8.0发布,兼容Jakarta EE 11,增强安全性并改进数据访问
来源: InfoQ 话题 - 大数据
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 JNoSQL(Jakarta NoSQL规范的兼容实现),支持了Jakarta Data 1.0规范。Jakarta Data定义的存储库模式(repository pattern)为开发者带来了更优的体验,包括,减少样板代码、可基于领域模型与用例组织存储库,同时支持基于偏移量与基于游标的两种分页方式。
GlassFish通过集成MicroProfile JWT Authentication 2.1与Jakarta Security 4.0规范,提供了增强的安全能力。开发者可以注入基于JWT的认证机制,并与安全的REST端点和用户界面页面结合使用。
自2022年4月OmniFish团队成立以来,GlassFish项目一直由该团队主导,David Matějček担任项目负责人。OmniFish为所有GlassFish版本提供直接支持,确保所有管理任务正确执行,并对GlassFish进行全面测试。OmniFish联合创始人Arjan Tijms、Ondro 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