Что такое Jakarta EE
Jakarta EE — это набор стандартов для серверных приложений на Java: веб-страниц, REST API, работы с базой данных, транзакций и безопасности. Это не одна библиотека, а платформа: десятки спецификаций, которые договорились работать вместе. Код пишется по стандарту, а запускает его сервер приложений — программа, в которой уже есть реализации всех этих стандартов.
Немного истории
| Год | Название | Что произошло |
|---|---|---|
| 1999 | J2EE 1.2 | Sun выпускает «корпоративную» Java: сервлеты, JSP, EJB |
| 2006 | Java EE 5 | Аннотации вместо громоздких XML-файлов |
| 2017 | Java EE 8 | Последняя версия под управлением Oracle |
| 2019 | Jakarta EE 8 | Платформу передали Eclipse Foundation, сменилось название |
| 2020 | Jakarta EE 9 | Пакеты javax.* переименованы в jakarta.* |
| 2025 | Jakarta EE 11 | Требует Java 17+, поддерживает записи (record) и Java 21 |
Курс написан для Jakarta EE 11 — текущей основной версии. Если в старой статье встречается import javax.servlet..., это Java EE 8 или раньше: в новом коде пакет называется jakarta.servlet.
Спецификации и реализации
Спецификация — это документ и набор интерфейсов: что должна уметь технология. Реализация — конкретная библиотека, которая этот документ выполняет.
| Спецификация | Для чего | Пример реализации |
|---|---|---|
| Servlet | Обработка HTTP-запросов | Tomcat, движок Open Liberty |
| Jakarta REST (JAX-RS) | REST API | RESTEasy, Jersey |
| CDI | Внедрение зависимостей | Weld |
| Jakarta Persistence (JPA) | Работа с базой через объекты | EclipseLink, Hibernate |
| Jakarta Data | Репозитории: запросы без ручного кода | Open Liberty, Hibernate |
| Bean Validation | Проверка данных | Hibernate Validator |
| Jakarta Faces | Серверные HTML-страницы | MyFaces, Mojarra |
Ваше приложение зависит только от API — интерфейсов и аннотаций. Реализации предоставляет сервер, поэтому готовый WAR-файл весит десятки килобайт.
Серверы приложений
| Сервер | Кто развивает |
|---|---|
| Open Liberty | IBM |
| WildFly | Red Hat |
| Payara | Payara Services |
| GlassFish | Eclipse Foundation |
В курсе используется Open Liberty 26.0.0.9: он запускается из Maven одной командой и сам скачивает всё нужное. Приложение собирается под Java 21, а запускалось на Java 25. Тот же код без изменений развернётся и на других серверах — в этом смысл стандарта.
Где Jakarta EE сегодня
Платформу используют банки, страховые компании, государственные системы — везде, где приложения живут десятилетиями. Многие современные фреймворки построены на её спецификациях: Quarkus и Helidon используют CDI и Jakarta REST, Spring Boot — Servlet, JPA и Bean Validation. Поэтому знание Jakarta EE пригодится, даже если сервер приложений вы не выберете.
Что будем делать
Через весь курс пройдёт один пример — блог: записи, комментарии, пользователи. Сначала сделаем страницы на сервлетах, затем REST API, подключим CDI, базу данных, транзакции, репозитории Jakarta Data, безопасность, а в конце соберём приложение для выпуска.
Частая ошибка
Смешивать старые и новые пакеты. Библиотека для Java EE 8 с javax.servlet или javax.persistence не заработает на сервере Jakarta EE 11: классы просто не найдутся, и сервер сообщит что-то вроде java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet. Проверяйте, что зависимости поддерживают пространство имён jakarta.*.