Java EE 技术标准(JTS,JMS,JMX,JTA,JPA,EJB,JNDI,JDBC)

相关概念

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, 结构化查询语言)数据库访问接口

附:来自 Oracke的 Java EE 8 技术列表

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)

其他参考:

JTA (Java Transaction API)

@ref:

JTS (Java Transaction Service):

@ref:

JMS (Java Message Service)

@ref:

JMX (Java Management Extensions)

@ref: