JEE(Jakarta Enterprise Edition)는 오라클의 JEE(Java Enterprise Edition)의 소스코드와 거버넌스를 이클립스재단으로 이관하면서, 자바 명칭을 사용할 권리를 주지 않아 변경된 이름입니다.
Java EE
Java EE는 많은 종류의 엔터프라이즈 Java application과, Spring과 같은 많은 프레임워크에서 널리 사용되는 프로젝트였습니다. 초기 썬 마이크로시스템즈가 분산 애플리케이션 개발 목적의 산업 표준 플랫폼인 J2EE(Java 2 Enterprise Edition)로 발표하였습니다.
기업용 애플리케이션을 개발/실행하기 위한 기술과 환경을 제공하며 서블릿, JSP, EJB, JDBC, JDNI, JMX, JTA 등의 알려진 기술을 포함합니다. 주요 목적은 운영체제와 미들웨어에 종속되지 않고 정보 교환/애플리케이션 호환이 가능한 플랫폼을 제공하는 것입니다.
Java EE는 한마디로 기술 사양, 명세이며 이를 호환 구현(Compatible Implementations, CI)한 제품이 웹 애플리케이션 서버(WAS) 입니다. JEE(Jarkarte EE) 9.1의 Web Profile에는 Servlet 5.0, Restful Web Services 3.0, WebSocket 2.0 등 다양한 기술 명세가 있습니다. 자바 웹어플리케이션과 관련된 용어는 여기서 자세하게 알아볼 수 있겠네요.
Jarkarta EE
Jarkarta EE의 핵심 목표는 '클라우드 네이티브 환경을 위한 엔터프라이즈 자바 기술'로 마이크로서비스, 컨테이너 등의 최신 기술 트랜드를 반영하려합니다. 클라우드 네이티브 환경에서 JEE 플랫폼 전체를 풀스택으로 올리는 것은 비효율적이므로, 모듈화(Modularity)를 통해 컨테이너와 마이크로서비스 환경을 위해 효율적으로 동작할 수 있는 런타임을 구성해야합니다.
스프링 프레임워크의 경량화 버전인 스프링 부트가 마이크로서비스 환경에서 좋은 반응을 얻고 있는 점도 이러한 이유입니다. 아래 글[3]에서는
자바EE를 기반으로 하는 스프링 프레임워크, 스프링 부트, 아파치 톰캣 등이 자카르타 EE를 채택하는 시점부터 많은 전환이 이뤄질 것으로 예상됩니다.
라고 작성되어 있는데, 아파치 톰캣에 대한 설명[6]에 다음과 같은 문장이 있습니다.
The Apache Tomcat® software is an open source implementation of the Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, Jakarta WebSocket, Jakarta Annotations and Jakarta Authentication specifications. These specifications are part of the Jakarta EE platform.
The Jakarta EE platform is the evolution of the Java EE platform. Tomcat 10 and later implement specifications developed as part of Jakarta EE. Tomcat 9 and earlier implement specifications developed as part of Java EE.
정리하면, Tomcat 10부터는 Jakarta EE spec을 따르고, Tomcat 9나 이전 버전은 Java EE spec을 따른다고 되어있습니다.
J2EE와 Spring을 비교한 글[7]에 따르면, 스프링은 J2EE를 위한 어플리케이션 개발 프레임워크이며, J2EE 개발을 쉽게 만들어준다고 합니다. 즉, JEE는 standard/specifiaction이지만, 스프링은 standard가 아닌 프레임워크입니다. 이 글[8]에 따르면, 스프링 또한 jakarta EE와의 호환성을 고려한 변경을 준비중인 듯 보이며, 현재 제가 만든 프로젝트(Spring boot 2.6.4)에서 사용하는 dependency에서는 javax가 아닌 jakarta를 볼 수 있습니다.
[1] https://zdnet.co.kr/view/?no=20180306132007
[3] https://www.samsungsds.com/kr/insights/java_jakarta.html
[5] https://jakarta.ee/specifications/servlet/5.0/jakarta-servlet-spec-5.0.html
[6] https://tomcat.apache.org/
[7] https://www.geeksforgeeks.org/difference-between-javaee-and-spring/
[8] https://okky.kr/article/1044159
'CS > 웹' 카테고리의 다른 글
[웹] PG(Payment Gateway) (0) | 2022.05.05 |
---|---|
[웹] Spring - NodeJS - Django (0) | 2022.04.19 |
[웹] SEO란 (0) | 2022.04.18 |
[인프런][HTTP] URI와 웹 브라우저 요청 흐름 (0) | 2022.04.07 |
[인프런][HTTP] 인터넷 네트워크 (0) | 2022.03.30 |