Jakarta EE 规范与 Java JDK 区别及关系是什么?
摘要:0 序 源起于研究 spring ai 时,教程中描述了这么一段话,让我产生了 Jakarta EE 规范 与 Java JDK 的区别与关系?这一问题: 1 Jakarta EE 规范 与 Java JDK 的区别与关系? 要理解 Jak
0 序
源起于研究 spring ai 时,教程中描述了这么一段话,让我产生了 Jakarta EE 规范 与 Java JDK 的区别与关系?这一问题:
1 Jakarta EE 规范 与 Java JDK 的区别与关系?
要理解 Jakarta EE(原 Java EE)和 Java JDK 的区别与关系,我们可以从定位、用途、依赖关系三个核心维度拆解,用通俗易懂的方式讲清楚两者的本质差异和关联。
一、核心定义与定位
1. Java JDK(Java Development Kit)
本质:Java 语言的基础开发工具包,是整个 Java 技术体系的底层核心。
包含内容:
Java 编译器(javac)、运行时环境(JRE)、核心类库(java.lang、java.util、java.io 等);
基础工具(调试器、文档生成工具 javadoc 等);
是编写、编译、运行所有 Java 程序的基础依赖。
定位:相当于“Java 语言的地基”,所有 Java 相关的开发都必须基于 JDK。
2. Jakarta EE(Jakarta Platform, Enterprise Edition)
本质:一套企业级应用开发的规范(Specification),而非具体的“工具包”或“运行环境”。
前身:Java EE(Java Platform, Enterprise Edition),2017 年 Oracle 将 Java EE 移交给 Eclipse 基金会后更名为 Jakarta EE。
包含内容:
一系列面向企业级开发的接口和规范(如 Servlet、JSP、EJB、JPA、JMS 等);
这些规范定义了“企业级应用该如何实现”(比如如何处理 HTTP 请求、如何操作数据库、如何实现分布式事务),但不提供具体实现;
具体实现由第三方厂商提供(如 Tomcat 实现了 Servlet 规范、WildFly/JBoss 实现了完整的 Jakarta EE 规范)。
定位:相当于“企业级 Java 开发的行业标准”,是在 JDK 基础上针对“大型、分布式、高可用的企业应用”制定的【扩展规范】。
二、核心区别
维度
Java JDK
Jakarta EE
性质
基础开发工具包(含具体实现)
企业级应用规范(仅定义接口)
覆盖范围
通用 Java 开发(桌面、基础后端等)
仅企业级后端开发(Web、分布式、微服务)
依赖关系
无前置依赖(自身是底层)
必须依赖 JDK(基于 JDK 核心类库)
提供形式
可直接下载安装的工具包
规范文档 + 接口 Jar 包
典型使用场景
编写简单 Java 程序、桌面应用
开发电商系统、金融后台、企业管理系统
版本关联
独立版本迭代(如 JDK 8、11、17)
版本依赖 JDK(如 Jakarta EE 10 要求 JDK 11+)
三、核心关系
依赖关系:Jakarta EE 基于 JDK
Jakarta EE 的所有规范和接口,都是构建在 JDK 的核心类库之上的。例如:
Jakarta EE 的 Servlet 接口(处理 HTTP 请求),底层依赖 JDK 的 java.io(输入输出)、java.net(网络)等核心类;
开发 Jakarta EE 应用时,必须先安装 JDK(编译代码、运行基础逻辑),再引入 Jakarta EE 的接口包,最后部署到支持该规范的服务器(如 Tomcat、Payara)。
分工关系:JDK 管“基础”,Jakarta EE 管“企业级扩展”
用 JDK 可以写一个简单的“控制台计算器程序”,但无法直接处理 HTTP 请求、实现数据库事务管理;
Jakarta EE 定义了这些企业级场景的标准接口,让开发者可以基于统一的规范开发,无需依赖特定厂商的实现(比如用 Servlet 开发的 Web 程序,可同时部署在 Tomcat、Jetty 上)。
版本兼容关系
Jakarta EE 的新版本会适配 JDK 的新版本,例如:
Jakarta EE 8 兼容 JDK 8;
Jakarta EE 9+ 兼容 JDK 11+;
高版本 Jakarta EE 通常不再支持过旧的 JDK(如 Jakarta EE 10 不支持 JDK 8)。
四、通俗案例
JDK 相当于“一套基础的建筑工具(锤子、水泥、钢筋)”,可以用来盖任何类型的房子(小木屋、平房);
Jakarta EE 相当于“高层建筑的施工规范”,规定了盖摩天大楼该用什么标准的钢筋、如何做抗震设计——它不提供工具,而是基于基础工具,定义了“盖企业级大楼”的统一标准,施工队(如 Tomcat、WildFly等)则按照这个规范完成具体的建筑(实现)。
五、总结
本质区别:JDK 是 Java 基础开发工具包(含具体实现),Jakarta EE 是企业级应用开发的规范(仅定义接口);
核心关系:Jakarta EE 完全依赖 JDK,是 JDK 在企业级开发场景的“扩展规范”,而非替代;
使用场景:JDK 适用于所有 Java 开发,Jakarta EE 仅针对企业级分布式、高可用的后端应用开发。
X 参考文献
