1. 概述

本文将带你全面了解 Jakarta EE 最新版本的核心特性。我们将深入探讨这个企业级 Java 框架的重大更新,分析其对 Java 生态的影响,以及开发者应该如何应对这些变化。

通过阅读本文,你将清晰掌握 Jakarta EE 的演进方向及其未来发展趋势。

2. 什么是 Jakarta EE

Jakarta EE 是一个开源框架,专门用于开发 Java Web 应用,特别是云原生 Java 应用。它前身为 Java EE(Java Enterprise Edition),最初由 Oracle 通过 JCP(Java Community Process)开发和维护。2017 年,Eclipse Foundation 接管了该项目,但由于商标问题(无法继续使用 javax.*java.* 命名空间),项目正式更名为 Jakarta。

该框架的核心目标始终是标准化并提供一套厂商无关的规范,使 Java 应用能在不同厂商实现间轻松迁移。这确保了厂商间的灵活性、可靠性、稳定性、互操作性和质量一致性。

Jakarta EE 现在使用 JESP(Jakarta EE Specification Process)流程,该流程要求所有规范必须包含:

  • 规范文档和 JavaDoc
  • 针对特定规范定义的 API
  • TCK(技术兼容性工具包)及定义合规性测试的文档
  • 至少一个通过 TCK 测试的实现

3. Jakarta EE 发布历史

既然了解了 Jakarta EE 是提供标准化规范的框架,我们回顾一下其近年发展历程:

自 Eclipse Foundation 接管后,项目经历了以下主要版本:

  • 版本 8:完全兼容 Java 8
  • 版本 9:破坏性更新,将命名空间从 javax.* 改为 jakarta.*
  • 版本 9.1:支持 Java 11

坦白说,这些版本对开发者吸引力有限。但这也为社区争取了时间,推动轻量级应用(如 MicroProfile)等方向的讨论和成熟。

4. Jakarta EE 10

现在我们聚焦最新版本 Jakarta EE 10。本次发布的核心目标是打造一个支持云原生 Java 创新的强大框架。官方描述为:**"Jakarta EE 10 现已发布,引入了构建现代化、简化和轻量级云原生 Java 应用的特性,为企业 Java 技术在开放、厂商中立、社区驱动的流程下的演进和创新设定了新基准"**。

这是项目移交 Eclipse Foundation 后最重要的版本更新,涉及 20+ 组件规范的变更(新功能、内部调整、废弃和移除)。版本要求 Java 11 基线,同时支持当前 LTS 版本 Java 17,并新增对 JPMS 的支持:

jakarta ee 10 平台架构

平台新增两大核心组件:CDI Lite 4.0 和 Jakarta Core Profile。下面我们深入分析这些更新。

4.1. 新组件

全新 CDI Lite 4.0 规范提供 CDI 的轻量子集,专为 Micronaut、Quarkus、Helidon 等短时运行框架设计,并支持通过 GraalVM 编译为原生应用。为此,许多动态特性需在构建时处理,部分功能(如扩展)被重写,同时移除了部分面向大型运行时的特性。

延续轻量化方向,Core Profile 规范旨在标准化 MicroProfile 等微服务框架。它采用 Web Profile 的子集规范,但移除了 Faces 等面向用户界面的组件。该规范通过降低学习曲线和提升可移植性,简化了微服务和小型应用的开发。

4.2. 组件更新

平台更新内容丰富,重点包括:

  • Web Profile 10:新增并发和资源管理规范
  • Security 3.0:引入 OpenID Connect 认证方法,统一厂商实现;内部优化并废弃旧特性
  • Persistency 3.1:支持 UUID 主键及生成策略,标准化跨厂商实现
  • Restful APIs 3.1:支持 multipart/form-data 上传下载;新增无服务器启动 API;废弃 @Context
  • EJB 4.0:移除实体 Bean 和嵌入式 EJB 容器
  • Faces 4.0:移除 JSP 支持、托管 Bean、资源解析器等;新增类型安全视图和 @ClientWindowScoped
  • CDI 4.0:发现模式默认值从 all 改为 annotated(空 beans.xml 仅扫描注解 Bean)
  • Servlets 6.0:彻底移除所有先前标记为废弃的类和方法
  • Batch 2.1:增强 CDI 集成

此外,并发管理新增 @ManagedExecutionDefinition@Asynchronous 注解,用于资源管理和任务执行控制。

4.3. 未来发展

尽管 Jakarta EE 10 带来众多创新,社区仍在积极讨论未来方向。Jakarta EE 11 的规划已启动,预计将引入以下新规范:

这些规范将持续推动平台现代化、简化和技术标准化进程。

5. 如何迁移?

要充分利用新特性,需升级到 Jakarta EE 10。迁移过程需注意以下步骤:

  1. 更新 POM/Gradle 等构建工具中的 Jakarta 版本
  2. 修复导入语句:javax.*jakarta.*
  3. 更新 XML 命名空间(如 persistence.xml 等)
  4. 重命名配置属性前缀(与包名变更同步)
  5. 重命名启动文件(与上述变更一致)
  6. 验证应用行为

按步骤操作,迁移成本通常可控(中小规模项目)。

6. 总结

本文深入分析了 Jakarta EE 10 的核心更新、平台演进细节及未来发展方向。我们探讨了从 9.0 之前版本升级到最新版本的完整流程。

现在你已充分了解这个平台发展的重要里程碑,可以根据项目需求评估是否升级或在新项目中采用 Jakarta EE 10。


原始标题:Jakarta EE 10