
인텔리제이에서 톰캣 서버를 사용한 웹 프로젝트를 생성하면서 궁금한 점이 있었는데요, 바로 Version을 선택하는 부분에 Java EE, Jakarta EE 두 선택지가 있었던 것이었습니다.

프로젝트를 생성할 때마다 습관처럼 Java EE를 선택했었는데, 이제는 좀 알고 사용해야 할 것 같아서 둘의 차이점이 무엇인지 공부하고 알아낸 것을 기록하고자 합니다.
1999년에 Sun Microsystems에 의해 J2EE로 처음 소개되었습니다. Java EE는 대규모 분산 엔터프라이즈 및 인터넷 애플리케이션 개발을 위한 플랫폼으로 서블릿, JSP, EJB, JPA 등의 기술을 포함합니다. 기업용 애플리케이션을 개발/실행하기 위한 기술과 환경을 제공합니다.

Oracle이 Sun을 인수한 후 이 Java EE 개발을 주도했습니다. 하지만 오라클은 2017년 자바 EE 8 릴리즈를 마지막으로 오픈소스 SW를 지원하는 비영리 단체인 이클립스 재단에 자바 EE 프로젝트를 이관했는데, 이는 오라클이 자바 EE의 수익화에 실패하면서 기술 주도권을 포기한 것으로 판단됩니다.

2017년 Oracle이 Java EE를 Eclipse Foundation에 이관하면서 시작되었습니다. Java EE의 오픈소스 버전으로, 커뮤니티 주도 개발 모델을 채택하였습니다. 법적 문제로 'Java' 상표를 사용할 수 없어 'Jakarta'로 이름이 변경되었습니다. Java EE 8부터 Jakarta EE 8로 전환되었으며, 기능적으로는 동일합니다.
오라클이 이클립스로 자바EE 프로젝트는 이관했지만 자바 상표권은 여전히 보유하고 있기 때문에 자바 네임스페이스 사용에 제약이 있었습니다. 이러한 이유로 자카르타EE에서는 자바 네임스페이스가 Jakarta로, API 패키지명은 javax. 에서 Jakarta. 로 변경되었습니다. 이와 별개로 기존 사양 중 XML Registries, XML RPC, Deployment 등 일부 관련 없는 기술들은 자카르타EE에서 사라졌습니다.
<패키지 네임스페이스: Jakarta EE 9부터 javax. 에서 jakarta. 로 변경>

JavaEE와 Jakarta EE를 사용하는 환경에는 차이가 있는데요, 특히 애플리케이션 서버나 서블릿 컨테이너의 버전과 관련이 있습니다. 저 같은 경우에는 아파치 톰캣(Apache Tomcat)을 사용하고 있는데, 저의 톰캣 버전은 9.x 버전으로 Java EE 8을 사용해야 합니다.
참고로 웹 프로필을 구현한다는 것은 특정 애플리케이션 서버나 서블릿 컨테이너가 웹 프로필에 정의된 모든 기술을 지원한다는 뜻으로, 해당 서버에서 웹 프로필에 포함된 모든 기술을 사용할 수 있다는 것을 뜻합니다.
위의 톰캣 버전 예시 외에도 JDK 호환성, 라이브러리 호환성 등을 고려해야 합니다.


참고: https://www.samsungsds.com/kr/insights/java_jakarta.html