相关概念
Java平台共分为三个主要版本:Java SE、Java EE 和 Java ME。
- Java SE,Java Platform Standard Edition,Java平台标准版, 基本等同于 JDK;
- Java EE,Java Platform Enterprise Edition,也即Java平台企业版,JavaEE实际上是一系列技术标准的集合,并不提供具体实现;
- Java ME,Java Platform Micro Edition,用于嵌入式和移动设备的Java平台,已经式微。
Java EE 是一系列技术标准所组成的平台,最早由 Sun 发布,后来 Oracle 把 Java EE 交给 Eclipse 基金会管理,同时改名为 Jakarta EE。Java EE 的技术标准包括:
- Servlet: Java Servlet API
- JNDI(Java Name and Directory Interface): Java 命名和目录接口,它提供一个目录系统,并将服务名称与对象关联起来,从而使得开发人员在开发过程中可以使用名称来访问对象。
并提供了一致的模型来存取和操作企业级的资源如 DNS 和 LDAP、本地文件系统、或应用服务器中的对象。 - JTA(Java Transaction API): Java 事务 API.
- JTS(Java Transaction Service): Java 事务服务.
- JPA(Java Persistence API): 通过注解或 XML 描述对象-关系表的映射关系, 并将对象持久化到数据库中, 实现有 Spring-data-jpa, Hibernate。
- JMS(Java Message Service): Java 消息服务接口是一个 Java 平台中关于面向消息中间件(MOM)的 API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
Java 消息服务的规范包括两种消息模式,点对点和发布者/订阅者。 - JMX(Java Management Extensions): Java 管理扩展,JMX 提供了一套接口,让开发者和管理者可以通过 MBean 获取程序运行的状态以及动态的修改程序的相关配置。
JMX 可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
Tomcat、Kafka 等都通过 JMX 实现了监控接口,Jconsole 和 VisualVM 可以通过 JMX 协议获取程序运行状态实现监控。 - Java Bean: 一般情况下指的是实体类, 所有属性为 private, 提供默认构造方法和 getter, setter, 如果一个 JavaBean 需要在不同的 JVM 的进程中进行传递,还需要实现 Serializable 接口.
- MBean(Managed Bean): 托管 Bean, 是一种通过依赖注入创建的 Java Bean。MBean 代表了运行在 Java 虚拟机上的资源,例如应用程序或 Java EE 服务(事务监控、JDBC 驱动程序等)。
其可以用于收集如性能、资源使用率、问题信息等关键的统计信息(通过拉取),获取或设置应用程序的配置或属性(通过推送或拉取),以及对故障或状态变化等的通知事件(通过推送)。 - EJB(Enterprise JavaBean): 企业级 JavaBean, 与普通 Java Bean 的区别: JavaBean 的使用可以不需要容器,EJB 的运行一般需要 EJB 容器(即应用服务器,如 JBoss/Weblogic/Websphere…
- POJO(Plain Ordinary Java Object): 简单的 Java 对象, 实际就是普通 Java Beans, 是为了避免和 EJB 混淆所创造的简称
- JDBC(Java Database Connectivity): 是一个标准 SQL(Structured Query Language, 结构化查询语言)数据库访问接口
J2EE里面的2是什么意思?
J2SE,J2SE,J2ME中2的含义要追溯要1998年。
1998年Java 1.2版本发布,1999年发布Java 1.2的标准版,企业版,微型版三个版本,为了区分这三个版本,分别叫做Java2SE,Java2EE,Java2ME,简称J2SE,J2EE,J2ME。故,2的含义为1.2版本。但是,这种叫法已经在2005年Java 1.6发布后取消,J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME。
所以,现在的J2EE等叫法是05年以前旧的叫法。
JavaEE的发展
@ref: 从Java EE到Jakarta EE,企业版Java的发展历程-java ee企业级
版本 | 发布日期 | 焦点说明 |
---|---|---|
J2EE 1.4 | 2003.12 | 对 Web 服务更好支持。启用 javax 命名空间。Servlet 2.4、JSP 2.0、EJB 2.1 等 |
Java EE 5 | 2006.05 | 以 Web 为着力点继续优化。Servlet 2.5、JSP 2.1、EJB 3.0、注解支持等 |
Java EE 6 | 2009.12 | 添加了大量新技术来简化开发,如:Servlet 3.0(异步处理)、Bean Validation、EJB 3.1、JSF 2.0、JPA 2.0、上下文和依赖注入(CDI) |
Java EE 7 | 2013.06 | 提高生产力满足企业需求和 HTML5。Servlet 3.1、WebSocket 1.0、JSON 1.0、JMX 2.0、Batch 1.0 |
Java EE 8 | 2017.08 | 增加了 JSON 绑定和安全相关。Servlet 4.0、Bean Validation 2.0、CDI 2.0、JPA 2.2 |
Jakarta EE 入局 | 2017.08 | Oracle 将 Java EE 交给开源组织,Eclipse 基金会接手(Apache 基金会爆冷出局还是不想要?)。但 Oracle 不允许开源组织使用 Java 名号,所以 Jakarta EE 名称于 2018.02.26 应运而生 |
Jakarta EE 8 | 2019.09 | 规范与 Java EE 8完全相同。Maven 的 GAV 变了:javax.servlet:javax.servlet-api:4.0.1 -> jakarta.servlet:jakarta.servlet-api:4.0.2 ,但命名空间没变依旧还是 javax.* ,算是个小过度吧 |
Jakarta EE 9 | 2020.11 | 没有加入新功能,Eclipse 基金会的首个正式版本。命名空间从 javax.* 迁移到 jakarta.* ,前者从此成为历史。所有模块大版本号+1,如 Servlet 4.0.2 → Servlet 5 以表示其断层式升级 |
Jakarta EE 9.1 | 2021.06 | 相较于 9 没有 加入新 API。主要提供对 Java SE 11 的运行支持 |
2021年9月 Spring Boot 3.0 M1发布, 基线从 Java8提升至 Java17, 所有 Java EE API 被迁移到 Jakarta EE(用户需要将 javax
替换为 jakarta
. 例如,javax.servlet.Filter
将替换为 jakarta.servlet.Filter
)
其他参考:
- 2017 年 3 月: InfoQ观点:Java EE的未来
- 2018 年 2 月: Java EE重命名为Jakarta EE:Java EE Guardians与Oracle的分歧
- 2019 年 5 月: 谈判失败,Oracle亲手把Java EE送上断头台
JTA (Java Transaction API)
@ref:
- Java Transaction API (JTA)
- Guide to Jakarta EE JTA | Baeldung
- Understanding JTA - The Java Transaction API
- Configuring Spring and JTA without full Java EE
JTS (Java Transaction Service):
@ref:
JMS (Java Message Service)
@ref:
JMX (Java Management Extensions)
@ref: