1.1.2 Java EE现状
2018年2月26日,Eclipse基金会社区正式将Java EE更名为Jakarta EE,也就是说,后续的Java企业级发布版本将命名为Jakarta EE。这个名称来自Jakarta——一个早期的Apache开源项目,但该改名行为并未得到Java社区的支持。Java EE Guardians社区负责人Reza Rahman就Java EE重命名的问题做了一项Twitter调查,结果显示,68%的Java开发者认为应该保留Java EE名称。2019年9月10日,Jakarta EE 8终于发布,该版本旨在与Java EE 8规范完全兼容。在本书中,为了避免混淆,统一采用Java EE命名来代表J2EE、Jakarta EE或JEE。
1.EE4J的使命
EE4J(Eclipse Enterprise for Java)是一项开放源代码计划,旨在为Java运行时创建标准API、这些API的实现以及技术兼容性套件,以实现服务器端和云本地应用程序的开发、部署和管理。EE4J基于Java平台企业版(Java EE)标准,并使用Java EE 8作为创建新标准的基准。
EE4J允许使用灵活的流程、灵活的许可以及用于平台演进的开放治理流程。一个开放的过程不依赖于单个供应商或领导者,它鼓励参与和创新,并服务于整个社区的集体利益。
EE4J通过使用通用流程和通用兼容性要求定义一套集成的标准来建立其组成项目之间的通用性。EE4J通过提供Java EE 8和EE4J版本之间的兼容性为现有用户和新用户提供兼容性。
EE4J的成功取决于:
-
Java EE 8技术快速过渡到EE4J项目。
-
灵活和开放的流程,用于发展EE4J标准API、这些API的实现以及技术兼容性套件。
-
一个由开发人员、供应商和最终用户组成的强大社区,支持并发展EE4J技术。
-
适应和发展EE4J技术,并提供可满足现有用户新需求及吸引新用户的创新。
-
满足EE4J实现以及Java EE 8和EE4J版本之间定义良好的兼容性标准。
-
使竞争的供应商和互补技术提供商能够提供可为EE4J技术增值的创新。
EE4J的会员来自世界顶尖的科技公司,其中包括CA、CEA、Fujitsu、Huawei、IBM、Konduit、OBEO、Oracle、Red Hat、Bosch、SAP等。
2.EE4J与Jakarta EE的关系
EE4J包含以下子项目:
-
Eclipse Cargo Tracker
-
Eclipse GlassFish
-
Eclipse Grizzly
-
Eclipse Implementation of JAXB
-
Eclipse Jakarta EE TCK
-
Eclipse Jersey
-
Eclipse Krazo
-
Eclipse Metro
-
Eclipse Mojarra
-
Eclipse OpenMQ
-
Eclipse ORB
-
Eclipse Soteria
-
Eclipse Tyrus
-
Eclipse Yasson
-
EclipseLink Project
-
Jakarta Activation
-
Jakarta Annotations
-
Jakarta Authentication
-
Jakarta Authorization
-
Jakarta Batch
-
Jakarta Bean Validation
-
Jakarta Concurrency
-
Jakarta Connectors
-
Jakarta Contexts and Dependency Injection
-
Jakarta EE Examples
-
Jakarta EE Platform
-
Jakarta Enterprise Beans
-
Jakarta Expression Language
-
Jakarta Interceptors
-
Jakarta JSON Binding
-
Jakarta JSON Processing
-
Jakarta Mail
-
Jakarta Messaging
-
Jakarta NoSQL
-
Jakarta Persistence
-
Jakarta RESTful Web Services
-
Jakarta Security
-
Jakarta Server Faces
-
Jakarta Server Pages
-
Jakarta Servlet
-
Jakarta Stable APIs
-
Jakarta Standard Tag Library
-
Jakarta Transactions
-
Jakarta WebSocket
-
Jakarta XML Binding
-
Jakarta XML Web Services
从上述列表可以看出,Jakarta EE是EE4J的一部分。Jakarta EE的目标是创建与Java EE兼容的API。而完整的EE4J除了Java EE API外,还包括很多实现了Java EE API的产品,比如GlassFish、Grizzly等。
由于EE4J是基于Java EE 8技术标准的,且与Java EE 8的API是完全兼容的,因此用户在从Java EE 8切换到EE4J项目时不会有难度。同时,EE4J由强大的供应商和强大的社区作为支撑,所提供的创新解决方案更能够满足现有用户的新需求,吸引新用户。
3.不再使用JCP
长期以来,Java EE规范的制定都是由JCP(Java Community Process)来执行的。JCP是一种针对Java技术开发标准技术规范的机制。它向所有人开放,任何人都可以参与审核,并提供Java规范请求(JSR)反馈。任何人都可以注册成为JCP成员,并加入JSR专家组,成员甚至可以提交自己的JSR提案。
2018年1月,Oracle公司表示将来不再支持或建议使用JCP来增强Java EE,而是建议并支持使用EE4J推动的过程对Java EE 8规范进行功能增强。在发给EE4J社区的邮件中,Oracle Web Logic Server产品管理高级主管Will Lyons传达了这则消息。
简而言之,未来Java EE的版本将由EE4J主导。
4.面向Cloud Native
2019年9月10日,Jakarta EE发布了第一个版本,即Jakarta EE 8。Jakarta EE 8与Java EE 8完全兼容,可以简单理解为将Java EE 8的API完全迁移到了Jakarta EE平台。
Jakarta EE发展的重点之一是创建Cloud Native(云原生)的Java应用。毕竟未来Java企业级应用都将会部署上云。
Jakarta EE包含以下子项目:
-
Jakarta Annotations
-
Jakarta Authentication
-
Jakarta Authorization
-
Jakarta Batch
-
Jakarta Bean Validation
-
Jakarta Concurrency
-
Jakarta Connectors
-
Jakarta Contexts and Dependency Injection
-
Jakarta EE Platform
-
Jakarta Enterprise Beans
-
Jakarta Expression Language
-
Jakarta Interceptors
-
Jakarta JSON Binding
-
Jakarta JSON Processing
-
Jakarta Messaging
-
Jakarta Persistence
-
Jakarta Mail
-
Jakarta RESTful Web Services
-
Jakarta Security
-
Jakarta Server Faces
-
Jakarta Server Pages
-
Jakarta Servlet
-
Jakarta Stable APIs
-
Jakarta Standard Tag Library
-
Jakarta Transactions
-
Jakarta WebSocket
-
Jakarta XML Web Services
有关Cloud Native的内容可以参阅笔者所著的《Cloud Native分布式架构原理与实践》。
fD5lg8N1DLyh+3kX0/euhmV8lfXF20qDRVNG3RFODyxuQGnb0tUwIe0Cbs3Sb0Hz