В чем заключаются основные технологии Java EE (Jakarta EE) и их современная роль?

«В чем заключаются основные технологии Java EE (Jakarta EE) и их современная роль?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Java EE (теперь Jakarta EE) — это платформа для создания корпоративных приложений, предоставляющая набор стандартных API.

Основные используемые технологии/спецификации:

  • Jakarta Servlet & JSP: Основа для веб-слоя.
  • Jakarta Persistence API (JPA): Стандарт ORM (реализуется Hibernate, EclipseLink).
  • Jakarta Enterprise Beans (EJB): Для распределенных транзакций и безопасности.
  • Jakarta RESTful Web Services (JAX-RS): Для создания REST API.
  • Jakarta Contexts and Dependency Injection (CDI): Для управления зависимостями.
  • Jakarta Messaging (JMS): Для асинхронного обмена сообщениями.

Пример простого сервлета:

@WebServlet("/api/status")
public class StatusServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
        resp.setContentType("application/json");
        resp.getWriter().write("{"status": "OK"}");
    }
}

Современная роль и сравнение со Spring:

  • Наследие: Многие крупные корпоративные системы построены на Java EE.
  • Стандартизация: Jakarta EE — это стандарт, что обеспечивает переносимость между разными серверами приложений (WildFly, TomEE, IBM WebSphere).
  • Эволюция: Современные версии Jakarta EE (9+) стали более модульными и удобными.
  • Конкуренция: Фреймворк Spring Boot стал де-факто стандартом для новых проектов благодаря своей автоконфигурации, обширной экосистеме и более простой модели разработки. Spring часто предоставляет более гибкие и удобные абстракции поверх тех же стандартов (например, Spring Data JPA поверх JPA).

Вывод: Знание Jakarta EE важно для поддержки legacy-систем и понимания корней enterprise-разработки на Java, хотя для новых проектов часто выбирают Spring Boot.