Java

javax vs jakarta

pkch 2022. 10. 24. 19:12

Java Platform Enterprise Edition

J2EE 또는 Java EE는 Enterprise 급 애플리케이션을 위한 프레임워크이다. Java로 서버를 구성할 수 있도록 만들었으며 이를 통해 1996년 GlassFish, Tengah Oracle WebLogic Server의 전신와 같은 애플리케이션 서버가 탄생했다. 그 이후로도 Tomcat, Jetty와 같은 Java Servlet 명세를 따르는 애플리케이션 서버가 탄생했다.

애플리케이션 서버 뿐만 아니라 Java Persistence API JPA, REST JAX-RS, WebSocket, JTA, Validation, JSON JSON-P, JSON-B 등을 위한 다양한 명세를 제공한다.

Java Platform Enterprise Edition의 변화

1999년 12월 SUN 마이크로시스템즈가 첫 Java Platform Enterprise Edition인 J2EE 1.2 SDK를 발표한다.

그 이후로 2006년 Java EE 5를 발표하면서 Java Platform Enterprise Edition의 이름이 J2EE에서 Java EE로 바뀌게 된다.

2017년 8월 Java EE 8을 마지막으로 Oracle은 더이상 Java EE를 관리하지 않는다. Java EE의 관리는 Eclipse Foundation으로 넘어갔다.

참고로 SUN 마이크로시스템즈가 2010년에 Oracle에 인수되었기 때문에 Oracle이 Java EE의 관리를 Eclipse Foundation으로 넘겼다.

Eclipse Foundation으로 Java EE의 관리가 넘어간 이후 2019년 9월 Java EE 8과 완벽히 호환하는 Jarkarta EE 8을 발표하였으며 2020년 12월 Jakarta EE 9 스팩을 발표하면서 기존 Java EE의 패키지명인 javax.*에서 jakarta.*으로 변경되었다.

javax가 아닌 jakarta?

Java EE에 대한 관리는 Oracle이 Eclipse Foundation으로 이관했지만 여전히 Java의 상표권은 Oracle이 가지고 있다.

Oracle: Eclipse can’t use Java EE trademarks 참고

Oracle과 Eclipse Foundation이 Java EE에서 사용하는 Java 상표를 사용하거나 javax 패키지 네임스페이스 수정하는 조건에 합의하지 못했기 때문에 결국 Eclipse Foundation는 Jakarta EE를 구현하게 되었으며 패키지 네임스페이스도 jakarta로 변경하였다.

jakarta는 Java Platform Enterprise Edition의 새로운 패키지 네임스페이스

결국 jarkarta는 Java Platform Enterprise Edition의 새로운 패키지 네임스페이스이다. Java Platform Enterprise Edition의 스펙이 추가되거나 ex. JPA 기능 추가, Servlet 버전 업데이트 등 새로운 스펙이 추가되는 경우에는 javax로는 사용이 불가능하다.

때문에 Spring Boot 3.0부터는 javax를 사용하지 않고 jakarta를 사용하며 Hibernate의 경우에도 6.0버전부터 jakarta를 사용한다.

앞으로 많은 프레임워크, 라이브러리들이 javax에서 jarkarta로 넘어가는만큼 이를 확인하고 버전업을 해야하며 Java Platform Enterprise Edition의 기능을 직접 사용하는 경우에는 Java EE 보다는 스펙 업데이트가 되는 Jakarta EE를 사용해야한다.

참고

Transition from Java EE to Jakarta EE

wiki - Jakarta EE