【发布时间】:2014-08-06 01:24:56
【问题描述】:
Java EE Web Profile 认证服务器(如 JOnAS)和 Java EE 全平台 认证服务器(如 JBoss AS)有什么区别?
【问题讨论】:
标签: jakarta-ee
Java EE Web Profile 认证服务器(如 JOnAS)和 Java EE 全平台 认证服务器(如 JBoss AS)有什么区别?
【问题讨论】:
标签: jakarta-ee
这是一个很好的解释它的图像。 Web profile 是 Java EE 的一个子集,它的目的是允许开发人员创建更轻量级的应用程序,这些应用程序可以在简单的 servlet 容器(如 Tomcat 或 Jetty)中使用。
【讨论】:
Java EE 6 specification (JSR 316) 包含以下列表:
需要以下技术:
- EJB 3.1
- Servlet 3.0
- JSP 2.2
- EL 2.2
- JMS 1.1
- JTA 1.1
- JavaMail 1.4
- 连接器 1.6
- Web 服务 1.3
- JAX-RPC 1.1
- JAX-WS 2.2
- JAX-RS 1.1
- JAXB 2.2
- JAXR 1.0
- Java EE 管理 1.1
- Java EE 部署 1.2
- JACC 1.4
- JASPIC 1.0
- JSP 调试 1.0
- JSTL 1.2
- Web 服务元数据 2.1
- JSF 2.0
- 常用注解 1.1
- Java 持久性 2.0
- Bean 验证 1.0
- 托管 Bean 1.0
- Java EE 1.0 的上下文和依赖注入
- Java 1.0 的依赖注入
没有可选技术。
以下技术是 Web Profile 的必需组件:
- Servlet 3.0
- JavaServer 页面 (JSP) 2.2
- 表达式语言 (EL) 2.2
- 其他语言的调试支持 (JSR-45) 1.0
- JavaServer Pages (JSTL) 1.2 标准标记库
- JavaServer Faces (JSF) 2.0
- Java 平台 (JSR-250) 1.1 的通用注释
- 企业 JavaBeans (EJB) 3.1 Lite
- Java 事务 API (JTA) 1.1
- Java 持久性 API (JPA) 2.0
- Bean 验证 1.0
- 托管 Bean 1.0
- 拦截器 1.1
- Java EE Platform 1.0 的上下文和依赖注入
- Java 1.06 的依赖注入
Web 配置文件中没有可选组件。
对于 Java EE 7,所有 EE 技术中有一个list,还显示了哪些包含在 Web Profile 中。以前仅在完整配置文件中可用的一些技术现在包含在 Web 配置文件中,例如 JAX-RS。
【讨论】:
一个符合 Jakarta EE 平台 配置文件的应用服务器实现了十多个 specifications,它们执行一个符合 Jakarta EE Web 配置文件的应用服务器 em>。
换句话说,Web Profile 兼容服务器提供平台 兼容服务器提供的功能子集:
平台 profile = Web Profile + 更多内容
在 2017 年底,Oracle 将 Java EE 的职责交给了 Eclipse Foundation。 Java EE 8 之后的未来版本将称为Eclipse Enterprise For Java (EE4J)。或EE4J 项目。或者也许EE.next。或Jakarta EE。品牌一直在变化。
在 Java SE 11 中,一些模块被删除。 Java EE 相关部分正在转移到 Jakarta EE 项目的新家。其他如CORBA 已提供给任何感兴趣的组织采用。见JEP 320。
Jakarta EE 10 现在正在计划中(2021-09)。在从 Oracle Corp 过渡到 Eclipse Foundation 的所有阶段之后,该平台现在可以在重大改进、新功能和不需要的功能的修剪方面取得进展。
版本 10 可能会涉及一些兼容性中断,以促进创新。但还没有什么是一成不变的。如果您有兴趣/疑虑/建议/贡献,请立即参与公开流程。
Java SE 11 将成为 Jakarta EE 兼容实现支持的最小运行时。
有关详细信息,请参阅:
有关对平台配置文件的拟议更改的概述,请参阅Define Jakarta EE Platform 10 #364。
除了当前的Web Profile 和(完整的)Platform Profile 之外,Jakarta EE 10 可能会获得一个新的配置文件Core Profile。
核心平台针对适合microservices 和ahead-of-time compilation 的较小运行时。请参阅 GitHub 页面,Define Jakarta EE Core Profile 10 #387。
Ivar Grimstad 已提议对Define Jakarta EE Web Profile 10 #363 中列出的 Java EE 10 中的 Web Profile 进行更改。
Jakarta EE 9.1 是 released 2021-05。
见:
9.1 版使 Jakarta EE 与 Java SE 11 兼容。这是唯一的重大变化。很少的 API 更改,没有什么不兼容的。 9.1 版在功能上等同于 Jakarta EE 9。
Jakarta EE Platform 9 是 released 2020-12。
重点是从各种规范中删除商标 Java 名称。这包括移动到新的包名称jakarta.*。从某种特定意义上说,这是一个破坏性版本,因为项目必须更新到新包才能在 EE 9 服务器上运行。更改包名称后,现有应用程序将运行良好,只需很少或没有其他更改。
引用Jakarta EE 9 Release Plan页面:
Jakarta EE 9 版本的目标是提供一组功能上与 Jakarta EE 8 相似但在新的 Jakarta EE 9 命名空间
jakarta.*中的规范。
此外,Jakarta EE 9 版本从 Jakarta EE 8 中删除了旧的、可选的或已弃用的规范,以减少 API 的表面积,以确保新供应商更容易进入生态系统 - 因为并减轻这些旧 API 的实施、迁移和维护负担。
项目团队主要将 Jakarta EE 9 视为一个工具版本……
尽管您可能会期望行为上的向上兼容性,但命名更改意味着版本 9 及更高版本 不是 是嵌入式二进制替代品。不是世界末日。这可能意味着您在各种类文件中更改import 包名称。阅读this 和this 了解详细信息和链接。
Jakarta EE Platform 8 实际上与 Java EE 8 相同。
作为从 Oracle 过渡的一部分,Eclipse 团队将 Java EE 8 重新发布为 Jakarta EE 8,使用他们新的基础架构来存放代码和构建。相同的 EE 行为,相同的内部命名和包结构。因此,下面讨论的有关 Java EE Web Profile 与 Java EE Full Platform 的问题仍然适用。
Jakarta EE 8 使用从 Oracle 公司借来的 javax.* 包命名。版本 9 将包命名更改为 jakarta.*。
Java EE 8 于 2017 年发布。见history of versions。
详情请见JSR 366: Java Platform, Enterprise Edition 8 (Java EE 8) Specification。
Java EE 是Java Standard Edition (Java SE) 的超集。任何 Java EE 8 实现也是 Java SE 8 或更高版本的实现。
查看由 Oracle 发布的 list of Java EE 8 technologies,其中包含指向 JSR 和规范的链接。
所有 Java EE 配置文件中都必须包含以下技术:
• Java SE 版本8 (or later)
• Common 定义的资源和组件生命周期注释 注释规范(Resource、Resources、PostConstruct、PreDestroy)
•JNDI“java:”命名上下文
• Java 事务 API (JTA)
Web Profile 是整个 Java EE 平台的一个特定子集,专注于常用元素。由Apache TomEE 等产品实现,或几乎与Eclipse Jetty plus add-ons 实现。
• 所有 Java EE 配置文件所需的基本级别项目(上面列出:Java SE 8、生命周期注释、JNDI
java:上下文和 JTA)
• Servlet 4.0 (JSR 369)
• JavaServer 页面 (JSP) 2.3
• 表达式语言 (EL) 3.0 (JSR 341)
• 其他语言的调试支持 (JSR-45) 1.0
• JavaServer Pages (JSTL) 1.2 标准标记库
• JavaServer Faces (JSF) 2.3 (JSR 372)
• 用于 RESTful Web 服务的 Java API (JAX-RS) 2.1
• 适用于 WebSocket 的 Java API (WebSocket) 1.1 (JSR 356)
• 用于 JSON 处理的 Java API (JSON-P) 1.1 (JSR 374)
• 用于 JSON 绑定的 Java API (JSON-B) 1.0 (JSR 367)
• Java 平台 (JSR-250) 1.3 的通用注释• Enterprise JavaBeans (EJB) 3.2 Lite
• Java 事务 API (JTA) 1.2
• Java 持久性 API (JPA) 2.2
•Bean Validation2.0 (JSR 380)
• 托管 Bean 1.0
• 拦截器 1.2
• Java EE Platform 2.0 的上下文和依赖注入
• Java 1.0 的依赖注入
• Java EE 安全 API 1.0
• 容器的 Java 身份验证服务提供者接口 (JASPIC) 1.1
作为使用 Web Profile 实现的更轻松的替代方案,您可以从 Java Servlet/JSP 实现开始,例如 Apache Tomcat 或 Eclipse Jetty。虽然不是官方的个人资料,但这种方法非常受欢迎。有时称为web container。
恕我直言,这早就应该正式化为 JavaEE / Jakarta EE 配置文件了。鉴于 Tomcat 和 Jetty 的广受欢迎,对我来说,正式配置文件的必要性和好处似乎很明显。
使用此设置时,您可以选择性地添加独立库,以选择性地从各种 Java EE 技术中受益。例如,对于我自己使用Vaadin Flow 构建Web 应用程序的工作,我使用Java SE 和Tomcat。有时我会手动添加一个 Bean Validation 实现库,因为这就是我需要的 Java EE 技术列表中的全部内容。
一些 Jakarta EE 规范已经过重新设计,可以直接与基于 Java SE 的应用程序一起使用,而无需 Jakarta EE 服务器。并且正在计划更多这样的重新设计。此类规范的实现可以与 Tomcat 或 Jetty 一起使用。
当然,在某些时候,与其继续向您的 Tomcat/Jetty 项目中添加更多面向 Jakarta EE 的库,不如改用符合更广泛的 Jakarta EE 配置文件之一的服务器可能更有意义。
需要以下技术:
• 网络资料中的所有项目
• EJB 3.2(EJB 实体 bean 和关联的 EJBQL 除外,它们已成为可选)
• JMS 2.0
• JavaMail 1.6
• 连接器 1.7
• 网络服务 1.4
• 并发实用程序 1.0
• Batch1.0
• Java EE 管理 1.1
• JACC 1.5
• JSP 调试 1.0
• 网络服务元数据 2.1
以下技术是可选的:
• EJB 3.2 和更早版本的实体 bean 和关联的 EJB QL
• JAX-RPC 1.1
• JAXR 1.0
• Java EE 部署 1.2
这是一个显示嵌套需求组的图表。
此图上方的列表可能更准确;此图未经仔细检查。
【讨论】: