楼层: 首页/ 软件技术/ JavaEE / Jakarta EE/ 什么是 JavaEE / Jakarta EE,为什么要学它
01

什么是 JavaEE / Jakarta EE,为什么要学它

What is Jakarta EE · Why · Relationship with Spring

先说历史包袱,别被名字绕晕:JavaEE(Java Platform, Enterprise Edition) 是 Sun 时代(后来 Oracle)定的一套"企业级开发规范"。2017 年 Oracle 把它捐给 Eclipse 基金会,因为 "Java" 是商标,不能随便用,2019 年正式改名 Jakarta EE。最实质的变化:所有包名从 javax.servlet.* 改成了 jakarta.servlet.*。

论为什么要学"过时"的 Jakarta EE

是什么:Jakarta EE 不是某一个软件,而是一组规范——Servlet 规范(怎么处理 HTTP 请求)、JSP 规范(怎么写动态网页)、JDBC 规范(怎么连数据库)。Tomcat、Jetty 这些是"实现了规范的容器"。

为什么要学:今天公司里 90% 的 Java Web 用 Spring Boot,没人手写 Servlet。但 Spring 只是把 Servlet、JDBC 这些底层包了层舒服的壳。你不认识壳底下的砖,Spring 报错时(比如 404、405、过滤器链、乱码)就只能干瞪眼。学 Jakarta EE 是为了看懂 Spring 在替你干什么。

版本基线:本页按 Jakarta EE 10/11 讲,对应 Servlet 6.0、JSP 3.1、JDBC 4.3,运行在 Tomcat 10+ / JDK 11 以上(具体 minor 版本以 Tomcat 官网兼容矩阵为准)。包名一律是 jakarta.*,网上老教程的 javax.* 别照抄。

你写的东西老写法(Jakarta EE 裸用)现代写法(Spring Boot 替你干了)
接一个 GET 请求写一个 Servlet,配 web.xml 或注解一个 @GetMapping 注解
查数据库手写 JDBC,自己开连接关连接JdbcTemplate / MyBatis / JPA
返回网页写 JSP,混 HTML 和 Java返回 JSON 给前端 Vue/React
登录拦截自己写 Filter 检查 SessionSpring Security 配几行配置

论名字演变史:J2EE → JavaEE → Jakarta EE

2000 年前后:Sun 公司搞出 J2EE(Java 2 Platform, Enterprise Edition),一套重量级规范,EJB 那套配置繁琐到劝退一代人。

2006 年:改名 Java EE,版本号跳到 5、6、7、8,越来越轻。Spring 就是在吐槽 EJB 的浪潮中崛起的。

2017 年起:Oracle 把 JavaEE 捐给 Eclipse 基金会,但 "Java" 是注册商标不能随便用,2019 年正式改名 Jakarta EE,包名从 javax.* 整体迁到 jakarta.*。你看到的 javax / jakarta 之争,就是这段历史的尾巴。

Servlet 容器三连:Tomcat、Jetty、Undertow

"实现了 Servlet 规范"的软件,就叫 Servlet 容器(也叫 Web 容器)。它负责把 HTTP 协议翻译成 Request/Response 对象。三者区别不大,初学认准 Tomcat 就行。

容器特点你会在哪遇到它
TomcatApache 出品,最主流、资料最多、坑最少。教科书、公司老项目首选;学它不亏。
Jetty轻量,善于嵌进程序里(嵌入式)。一些中间件、测试环境内嵌启动。
Undertow高性能、非阻塞,Spring Boot 默认可选。追求高吞吐时替换 Tomcat。

动手前的环境三件套

光看本页代码跑不起来,先把这三样装好:① JDK 21(上一页已讲);② Tomcat 10+(官网解压即用,启动 bin/startup.sh,浏览器开 http://localhost:8080 看到猫脸就算活了);③ MySQL 8.x。JSTL 标签库和 JDBC 驱动,用 Maven 加依赖最省事,别手动下 jar 到处扔。

工具干什么
Tomcat 10+跑 Servlet 的容器,本页所有代码的宿主。
MySQL 8.x存用户、留言数据;JDBC URL 端口 3306。
Maven(推荐)管依赖(JDBC 驱动、JSTL、HikariCP),别手动下 jar。

这一页怎么学:别和 Spring 一起学

给你的学习节奏排个队:① 先把 Servlet + JSP + JDBC 三件套手敲一遍(就是第 9 章留言板);② 遇到不懂的底层概念(过滤器、Session)再回翻本页;③ 留言板跑通后,再去学 Spring Boot。

最大的弯路是刚看完 Servlet 就同时啃 Spring——两个东西都半吊子,出了问题不知道怪谁。先把裸 Servlet 玩明白,Spring 只是替你把这些零件自动化。

章末面试 · 概念与版本(4 题)

1.(概念题)Java EE 和 Jakarta EE 是什么关系?为什么改名?

查看答案

答案:同一个东西,改名了。Oracle 2017 年把 JavaEE 捐给 Eclipse 基金会,因为"Java"是商标不能随便用,2019 年改名 Jakarta EE。最实质变化:包名从 javax.* 改成 jakarta.*。

2.(选择题)Tomcat 10.1 对应哪个规范?包名是?A. Java EE 8 / javax B. Jakarta EE 10 / jakarta C. Jakarta EE 8 / javax

查看答案

答案:B。Tomcat 10.1 对应 Jakarta EE 10,Servlet 6.0,包名 jakarta.*。Tomcat 9 才是 javax。

3.(概念题)Spring Boot 3.x 要求哪个 JDK?包名是?

查看答案

答案:JDK 17+,包名 jakarta.*。Spring Boot 2.x 才用 javax。从 2 升 3 要全量换包名。

4.(概念题)Servlet 容器是什么?Tomcat 和 Jetty 区别?

查看答案

答案:实现了 Servlet 规范的软件,把 HTTP 请求翻译成 Request/Response 对象。Tomcat 最主流资料最多;Jetty 轻量适合嵌入式。初学认准 Tomcat。