Files
java-examples/docs/GlassFish.md

9.0 KiB

Jakarta EE란 무엇인가?

Jakarta EE(Enterprise Edition)는 Java EE(Java Platform, Enterprise Edition)의 후속 프로젝트로, 엔터프라이즈급 애플리케이션 개발을 위한 표준화된 플랫폼입니다. 2017년 Oracle이 Java EE를 Eclipse 재단으로 이관하면서 이름이 Jakarta EE로 변경되었으며, 현재는 오픈 소스 커뮤니티 주도로 발전하고 있습니다. Jakarta EE는 분산 시스템, 웹 애플리케이션, 비즈니스 로직 처리 등 엔터프라이즈 환경에서 필요한 다양한 기술을 제공합니다.

현재 날짜 기준(2025년 3월 9일)으로, 최신 버전은 Jakarta EE 10이며, 이는 2022년에 출시되었습니다. Jakarta EE 11은 2025년 중반 출시를 목표로 개발 중입니다.


Jakarta EE의 주요 세부 사항

Jakarta EE는 여러 API와 기술 스펙으로 구성되어 있으며, 이를 통해 개발자는 표준화된 방식으로 애플리케이션을 구축할 수 있습니다. 아래에서 주요 구성 요소와 세부 사항을 상세히 설명합니다.

1. 핵심 구성 요소 (API와 기술)

기술/API 설명 주요 용도 Jakarta EE 10에서의 특징
Servlet HTTP 요청/응답 처리를 위한 웹 컴포넌트 웹 애플리케이션 개발 Servlet 6.0: 비동기 처리 개선, HTTP/2 지원
JSP (JavaServer Pages) 동적 웹 콘텐츠 생성을 위한 템플릿 엔진 웹 페이지 렌더링 JSP 3.1: EL(Expression Language) 개선
JSF (JavaServer Faces) 컴포넌트 기반의 웹 UI 프레임워크 복잡한 웹 UI 개발 JSF 4.0: Facelets 개선, CDI 통합 강화
EJB (Enterprise JavaBeans) 비즈니스 로직을 캡슐화한 서버 측 컴포넌트 트랜잭션 관리, 분산 컴포넌트 EJB 4.0: 경량화 및 CDI와 통합
JPA (Java Persistence API) 객체-관계 매핑(ORM)을 위한 표준 데이터베이스 액세스 JPA 3.1: Criteria API 개선, Jakarta 네임스페이스
JMS (Java Message Service) 메시지 기반 비동기 통신을 위한 API 메시지 큐, Pub/Sub 모델 JMS 3.0: 클라우드 환경 지원 강화
CDI (Contexts and Dependency Injection) 의존성 주입과 컨텍스트 관리를 위한 표준 객체 생명주기 관리, DI CDI 4.0: 모듈성 강화, 이벤트 처리 개선
JAX-RS (RESTful Web Services) RESTful 웹 서비스를 위한 API API 개발 JAX-RS 3.1: 클라이언트 API 개선, JSON-B 통합
JSON-P (JSON Processing) JSON 데이터 처리 API JSON 파싱 및 생성 JSON-P 2.1: 스트리밍 API 개선
JSON-B (JSON Binding) 객체와 JSON 간 매핑 API 데이터 직렬화/역직렬화 JSON-B 3.0: 어노테이션 기반 매핑 강화
Jakarta Mail 이메일 전송 및 수신을 위한 API 이메일 기능 Jakarta Mail 2.1: 보안 강화
Jakarta Transactions (JTA) 분산 트랜잭션 관리 API 트랜잭션 처리 JTA 2.0: CDI 통합 개선
Jakarta Security 인증 및 권한 부여를 위한 표준 API 보안 관리 Security 3.0: SSO(Single Sign-On) 지원 강화

2. 버전별 주요 변경 사항

  • Jakarta EE 8 (2019):
    Java EE 8의 리브랜딩 버전으로, 패키지 네임스페이스가 javax.*에서 jakarta.*로 변경. 기술적으로는 Java EE 8과 동일.

  • Jakarta EE 9 (2020):

    • 네임스페이스 전환 완료 (javax.*jakarta.*).
    • API 변화는 최소화, 주로 호환성 유지에 초점.
  • Jakarta EE 9.1 (2021):

    • Java SE 11 지원 추가.
    • 기존 API의 안정화.
  • Jakarta EE 10 (2022):

    • Java SE 17 지원.
    • CDI와 JAX-RS의 개선, 마이크로서비스 친화적인 기능 추가.
    • Web Profile과 Full Platform 간 격차 축소.
  • Jakarta EE 11 (예정, 2025):

    • 클라우드 네이티브 지원 강화 (예: Kubernetes 통합).
    • 새로운 API 추가 및 기존 API의 경량화.

3. 플랫폼 구성

Jakarta EE는 두 가지 프로필로 제공됩니다:

  • Web Profile:
    웹 애플리케이션 개발에 초점을 맞춘 경량 프로필. Servlet, JSP, JSF, JPA, CDI, JAX-RS 등 포함.
  • Full Platform:
    모든 Jakarta EE 기술을 포함하며, EJB, JMS, JTA 등 엔터프라이즈 기능을 지원.

4. 주요 구현체

Jakarta EE 사양을 구현한 애플리케이션 서버는 여러 가지가 있으며, 대표적인 구현체는 다음과 같습니다:

  • Eclipse GlassFish: Jakarta EE의 공식 레퍼런스 구현.
  • Payara Server: GlassFish 기반의 포크로, 상용 지원과 추가 기능 제공.
  • WildFly: Red Hat에서 개발, 경량화와 성능에 초점.
  • Apache TomEE: Tomcat에 EE 기능을 추가한 구현체.
  • Open Liberty: IBM의 경량화된 오픈 소스 서버.

5. Jakarta EE의 장점

  • 표준화: 모든 구현체가 동일한 API를 준수하므로, 서버 간 호환성이 높음.
  • 확장성: 분산 시스템과 대규모 애플리케이션에 적합.
  • 생태계: 방대한 오픈 소스 커뮤니티와 도구 지원 (Maven, Gradle, IDE 등).
  • 모듈성: 필요한 기능만 선택해 사용할 수 있음.

6. Jakarta EE의 단점

  • 복잡성: Full Platform은 초보자에게 다소 무겁고 복잡할 수 있음.
  • 경쟁: Spring Boot와 같은 마이크로서비스 중심 프레임워크에 비해 전통적인 모놀리식 구조에 치우침.
  • 학습 곡선: 다양한 API를 익히는 데 시간이 필요.

7. 실제 사용 예시

간단한 JAX-RS 기반 REST API 예시:

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;

@Path("/hello")
public class HelloResource {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String sayHello() {
        return "Hello, Jakarta EE!";
    }
}
  • 위 코드를 GlassFish에 배포하면 http://localhost:8080/your-app/hello로 접근 가능.

8. Jakarta EE와 Spring 비교

항목 Jakarta EE Spring
표준 여부 표준 사양 (Jakarta EE) 비표준 프레임워크
구성 여러 독립 API 통합된 생태계 (Spring Boot 등)
배포 애플리케이션 서버 필요 내장 서버 지원
용도 전통적 엔터프라이즈 애플리케이션 마이크로서비스, 웹 애플리케이션
경량화 Web Profile로 가능 기본적으로 경량화

9. 미래 전망 (2025년 기준)

  • 클라우드 네이티브: Jakarta EE 11은 Kubernetes와 같은 클라우드 환경에 최적화될 예정.
  • 경쟁력 강화: Spring Boot와의 경쟁에서 살아남기 위해 경량화와 모듈성에 더욱 집중.
  • 커뮤니티 활성화: Eclipse 재단의 지속적인 지원으로 커뮤니티가 성장 중.

결론

Jakarta EE는 엔터프라이즈급 애플리케이션 개발을 위한 견고한 표준 플랫폼으로, 다양한 API와 구현체를 통해 유연성과 확장성을 제공합니다. 최신 버전인 Jakarta EE 10은 현대적인 요구사항을 반영하며, 다가오는 Jakarta EE 11은 클라우드 네이티브 환경에 더 적합해질 전망입니다. 프로젝트의 규모와 요구사항에 따라 Web Profile 또는 Full Platform을 선택해 사용하면 됩니다.

추가로 궁금한 점이 있다면 말씀해주세요!