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)。
阅读全文