JavaEE / JakartaEE 全栈开发教程
第一部分:概念与准备
什么是 Java EE / Jakarta EE?
- 定义:Java Platform, Enterprise Edition (Java EE),现在官方名称为 Jakarta EE,是一个用于开发企业级应用(如大型网站、银行系统、电商平台)的规范集合。
- 核心思想:它提供了一套标准化的 API 和运行环境,让开发者可以专注于业务逻辑,而不用关心底层复杂的实现,如数据库连接、事务管理、安全控制等。
- 架构:它基于经典的 分层架构,通常包括表现层、业务逻辑层和数据访问层。
Java EE vs. Jakarta EE 的关系
- Java EE:由 Oracle 公司维护,是之前的名称,由于商标和开源协议问题,社区(主要是 Eclipse 基金会)接管了后续的发展。
- Jakarta EE:从 Java EE 8 开始,所有包名从
javax.*改为jakarta.*,这是目前官方的、活跃的社区标准。 - 简单来说:现在学习,请直接学习 Jakarta EE,如果你的项目还在用 Java EE (javax),了解其历史即可,但新项目务必使用 Jakarta EE。
核心技术栈一览
Jakarta EE 的强大之处在于其模块化,你不需要学完所有,可以根据项目需求选择。

| 层次 | 主要技术 | 说明 |
|---|---|---|
| 表现层 | Jakarta Servlet / Jakarta Faces (JSF) / Jakarta WebSocket | 处理 HTTP 请求,生成响应,Servlet 是基础,JSF 是更高级的 UI 组件框架。 |
| 表现层 | Jakarta Server Pages (JSP) / Jakarta Expression Language (EL) | JSP 用于在 HTML 中嵌入 Java 代码,EL 用于简化 JSP 中的数据访问。 |
| 业务逻辑层 | Enterprise JavaBeans (EJB) | 提供事务管理、安全、并发等高级服务的核心组件,现在更推荐轻量级的 CDI。 |
| 依赖注入 | Contexts and Dependency Injection (CDI) | 现代 Java EE 应用的基石,用于管理对象的生命周期和依赖关系,实现松耦合。 |
| 数据访问层 | Jakarta Persistence (JPA) / Jakarta Bean Validation | JPA (ORM 框架) 用于将 Java 对象映射到数据库表,Bean Validation 用于数据校验。 |
| 数据访问层 | Jakarta Transactions (JTA) | 用于管理分布式事务。 |
| Web 服务 | Jakarta Web Services (JAX-WS) / Jakarta RESTful Web Services (JAX-RS) | 用于构建 SOAP 和 RESTful 风格的 Web 服务。 |
| 其他 | Jakarta Mail / Jakarta Messaging (JMS) / Jakarta Security | 提供邮件、消息队列、安全认证等功能。 |
开发环境准备
- JDK (Java Development Kit): 下载并安装 JDK 8 或更高版本,推荐使用 JDK 11 或 17,因为它们是 LTS (长期支持) 版本。
- IDE (集成开发环境):
- IntelliJ IDEA: 强烈推荐,其 Ultimate 版对 Java EE 支持极佳,社区版也足够使用。
- Eclipse IDE for Enterprise Java Developers: Eclipse 是 Java EE 的发源地,自带了强大的 EE 工具。
- 应用服务器: 用于运行和测试你的应用。
- Payara: 由 GlassFish 派生,对 Jakarta EE 支持非常好,是首选。
- WildFly: 以前叫 JBoss,性能优秀,社区活跃。
- Tomcat: 虽然它是一个 Servlet 容器,不包含完整的 EJB 实现,但它是目前最流行的 Web 服务器,轻量且高效,足以运行大部分 Web 应用。
- 构建工具: Maven 或 Gradle,用于管理项目依赖、编译、打包和部署,Maven 是 Java 生态中最经典的工具。
第二部分:核心模块学习路径
建议按照以下顺序学习,循序渐进。
基础 Web 开发
这是入门的第一步,学习如何创建一个动态网站。
-
Servlet & JSP
- Servlet: 学习如何创建一个 Servlet,处理
GET和POST请求,获取请求参数,设置响应。 - JSP: 学习 JSP 的基本语法、指令、动作,以及如何使用 Java 代码片段。
- EL (Expression Language): 学习 语法,用于在 JSP 中简洁地访问 Java 对象的属性。
- JSTL (JSP Standard Tag Library): 学习使用 JSTL 标签库(如
c:用于循环判断,fmt:用于格式化)来替代 JSP 中的 Java 代码,使页面更干净。 - 实践: 创建一个简单的用户登录、注册页面,将用户信息保存在内存或数据库中。
- Servlet: 学习如何创建一个 Servlet,处理
-
Filter & Listener
(图片来源网络,侵删)- Filter (过滤器): 学习如何创建 Filter,用于拦截请求和响应,实现统一的编码处理、权限检查、日志记录等。
- Listener (监听器): 学习如何创建 Listener,用于监听 Web 应用中特定事件的发生,如 ServletContext、HttpSession 的创建和销毁。
企业级核心 - 依赖注入与业务逻辑
这是从“脚本式”开发转向“组件化”开发的关键一步。
-
CDI (Contexts and Dependency Injection)
- 核心概念: 理解什么是依赖注入和控制反转。
- Bean: 学习如何创建一个简单的 CDI Bean (
@Named)。 - 作用域: 学习不同的作用域,如
@RequestScoped(请求作用域),@SessionScoped(会话作用域),@ApplicationScoped(应用作用域)。 - 实践: 将你的 Servlet 或 JSP 后台逻辑重构为 CDI Bean,通过
@Inject注入依赖,实现代码解耦。
-
EJB (Enterprise JavaBeans) - (可选,了解即可)
- EJB 是 Java EE 的传统核心,提供了声明式事务、安全、远程调用等高级功能。
- 现状: 在现代 Jakarta EE 开发中,很多 EJB 的功能已经被 CDI 和更轻量的框架(如 Spring)所取代,但对于理解企业级应用的设计思想非常有帮助。
- 建议: 先掌握 CDI,如果需要,再学习 EJB 的
@Stateless(无状态会话 Bean)。
数据持久化
学习如何将应用与数据库交互。

-
JPA (Jakarta Persistence)
- 核心概念: ORM (Object-Relational Mapping),将 Java 对象映射到数据库表。
- 实体: 学习使用
@Entity注解一个 Java 类作为实体。 - 映射关系: 学习
@Id(主键),@GeneratedValue(主键生成策略),@Column,@OneToMany,@ManyToOne等注解来定义对象和表的关系。 - EntityManager: 学习如何使用
EntityManager来进行 CRUD (增删改查) 操作。 - 实践: 为你的用户模块创建一个 User 实体,并实现 DAO (Data Access Object) 层,使用 JPA 来管理用户数据。
-
Bean Validation
- 学习使用
@NotNull,@Size,@Email,@Pattern等注解,在数据进入业务逻辑层之前进行统一的校验。
- 学习使用
高级主题
当你掌握了基础后,可以学习更强大的功能。
-
JAX-RS (RESTful Web Services)
- 这是构建现代 API 的标准,学习使用
@Path,@GET,@POST,@Produces,@Consumes等注解,将你的业务逻辑暴露为 RESTful API。 - 实践: 将你的用户管理功能通过 JAX-RS 重构为 API,供前端或其他服务调用。
- 这是构建现代 API 的标准,学习使用
-
EJB 与事务管理
- 深入学习如何使用
@TransactionAttribute注解来声明式地管理事务,确保数据的一致性。
- 深入学习如何使用
-
安全
学习 Jakarta Security,实现基于表单或基于角色的认证和授权。
第三部分:实战项目
理论学习后,通过一个完整的项目来巩固所学知识。
项目:一个简单的博客系统
-
功能:
- 用户注册、登录、登出。
- 用户登录后,可以创建、查看、编辑、删除自己的文章。
- 首页展示所有文章列表。
-
技术栈:
- 后端: Jakarta EE (Servlet, JSP, CDI, JPA)
- 数据库: MySQL 或 H2 (内存数据库,适合开发)
- 构建工具: Maven
- 服务器: Payara 或 Tomcat
-
模块划分:
model(模型层):User,Post两个 JPA 实体类。dao(数据访问层):UserDao,PostDao接口和实现类,使用 JPA 操作数据库。service(业务逻辑层):UserService,PostService,包含核心业务逻辑,并注入dao。web(表现层):Servlet: 用于处理用户登录、注册请求。JSP: 用于展示登录页、注册页、文章列表页、文章详情页、写文章页。Filter: 用于处理登录状态检查(如访问写文章页面时必须登录)。
util(工具类): 如数据库连接工具、日期格式化工具等。
第四部分:进阶与资源
从传统 Jakarta EE 到现代化开发
- 前端框架: 现代 Web 应用通常使用 React, Vue, Angular 等前端框架,后端 Jakarta EE 主要作为 RESTful API 服务器。
- 微服务架构: 对于大型系统,单体应用会变得臃肿,可以考虑将应用拆分为多个微服务,每个微服务都可以使用 Jakarta EE 技术栈构建,或者使用更轻量的 Spring Boot。
- 云原生: 学习如何将 Jakarta EE 应用容器化(使用 Docker)并部署到 Kubernetes (K8s) 等云平台。
推荐资源
- 官方文档:
- Jakarta EE Specifications: 最权威的规范文档。
- Payara Documentation: Payara 服务器的文档,非常详细。
- 书籍:
- Head First Servlets and JSP: 经典入门书籍,生动有趣。
- Java EE 8 High Performance: 更偏向于高级性能优化。
- 在线教程/博客:
- Baeldung: 有大量高质量的 Java/Jakarta EE 教程。
- Runoob: 提供基础语法的快速入门。
- 官方教程: Oracle 和 Eclipse 基金会都提供官方教程。
- 视频课程:
在 Coursera, Udemy, Bilibili 等平台搜索 "Jakarta EE", "Java Web 开发" 等关键词。
学习 Java EE / Jakarta EE 是一个系统工程,但只要遵循清晰的路径,从基础 Web 开发入手,逐步深入到依赖注入、数据持久化和高级主题,并通过一个完整的项目进行实践,你完全可以掌握这门强大的企业级开发技术。
关键建议:
- 动手编码: 不要只看理论,每个知识点都要亲手敲代码验证。
- 理解思想: 重点理解分层、依赖注入、ORM 等核心设计思想,而不是死记硬背 API。
- 拥抱社区: 遇到问题多查阅官方文档和社区资源(如 Stack Overflow)。
祝你学习顺利!
