history
Java는 오래된 언어이다 보니 내역이 복잡하다.
어떻게 흘러왔는지를 간략하게 알고 있는 것이 도움이 될 듯하여 찾아보았다.
1995년 Sun microsystems에서 제임스 고슬링이 개발하여 최초 버전인 1.0을 공개하였다.
이는 이후 2010년에 Oracle이 Sun microsystems를 인수하면서 Java 저작권이 Oracle로 넘어가게 되고
Oracle이 Java 8까지 운영하다 이후 오픈소스인 OpenJDK와 상업용 OralcleJDK를 나누게 된다.
처음엔 JDK 1.0, JDK 1.1이란 이름으로 발표되었는데 이후 J2SE 1.2, 1.3, 1.4로 발표되었고 Standard Edition과 구분된 J2EE 1.2, 1.3, 1.4 (Enterprise Edition), J2ME가 나왔다.
이 이름은 5 버전에서 J2SE 5와 같이 앞에 1.x를 빼고 버전을 표기하도록 변경되었고 6 버전 이후엔 J2SE가 아닌 Java SE, Java EE와 같이 다시 변경되었다.
2018년 Java EE 8을 공개하면서 Oracle은 Java EE를 Eclipse Foundation으로 양도하기로 한다.
JDK를 설치하면 Java SE와 Java EE가 같이 포함된 형태였지만 JDK 11에서 Java EE는 제외되게 된다.
https://openjdk.java.net/jeps/320
여기까지 설명한 Java SE와 Java EE의 version history를 표로 정리하면 다음과 같다.
Release Date | ||
JDK 1.0a | 1994년 | Sum microsystems에서 공개 |
JDK 1.0a2 | 1995년 5월 23일 | |
JDK 1.0 | 1996년 1월 23일 | |
JDK 1.1 | 1997년 2월 19일 | |
J2SE 1.2 | 1998년 12월 8일 | |
J2EE 1.2 | 1999년 12월 12일 | |
J2SE 1.3 | 2000년 3월 8일 | |
J2EE 1.3 | 2001년 9월 24일 | |
J2SE 1.4 | 2002년 2월 6일 | |
J2EE 1.4 | 2003년 11월 11일 | |
J2SE 5 | 2004년 9월 30일 | 버전 명명에서 1.x를 제거 |
Java EE 5 | 2006년 5월 11일 | Java EE로 표기 변경 |
Java SE 6 | 2006년 12월 11일 | Java SE로 표기 변경 |
Java EE 6 | 2009년 12월 10일 | |
Java SE 7 | 2011년 7월 | Oracle로 인수된 후 공개된 버전 |
Java EE 7 | 2013년 5월 28일 | |
Java SE 8 (LTS) | 2014년 3월 | |
Java EE 8 | 2017년 8월 31일 | Oracle이 Java EE를 Eclipse Foundation으로 권한을 양도하기로 결정 |
Java SE 9 | 2017년 9월 | OpenJDK, OralcleJDK 분리 6개월 단위 버전 릴리즈 정책 시작 LTS 정책 3년 주기 |
Java SE 10 | 2018년 3월 | |
Java SE 11 (LTS) | 2018년 9월 | JAVA EE가 JDK에서 제외됨 |
Java SE 12 | 2019년 3월 | |
Java SE 13 | 2019년 9월 | |
Jakrta EE 8 | 2019년 9월 10일 | Java EE 8을 그대로 이전 |
Java SE 14 | 2020년 3월 | |
Java SE 15 | 2020년 9월 | |
Jakarta EE 9 | 2020년 11월 22일 | javax.* 을 jakrata.* namespace로 변경 |
Java SE 16 | 2021년 3월 | |
Jakrta EE 9.1 | 2021년 5월 25일 | JDK 11 지원 |
Java SE 17 (LTS) | 2021년 9월 | LTS 정책 2년 주기로 변경함 |
Java SE 18 | 2022년 3월 (예정) | |
Java SE 19 | 2022년 9월 (예정) | |
Java SE 20 | 2023년 3월 (예정) | |
Java SE 21 (LTS) | 2023년 9월 (예정) |
Java SE
Java SE는 JDK를 설치하여 사용하는 핵심 라이브러리들이다.
별도의 dependency 설정 없이 사용하는 java.lang.*, java.util.*, java.awt.*, javax.rmi.*, javax.net.* 등 자바 프로젝트 개발 시 설정한 jdk에서 가져온 jre에 포함된 라이브러리들이 이에 해당한다.
java 개발에서 사용되는 basic type과 object에서 networking, security, database access, GUI 개발, xml parsing과 같은 핵심적인 기능을 제공한다.
Java EE
Java EE는 Java SE를 기반으로 large-scale, multi-tiered, scalable, reliable 및 secure network application을 개발하고 실행하기 위한 API 및 runtime 환경을 제공한다.
java 기반 서버 개발을 해본 사람이라면 이미 Java EE를 사용하고 있다.
Servlet, JSP, EJB, JPA, JDBC, persistence 등등 수많은 Java EE 라이브러리를 알게 모르게 참조하여 사용하고 있다.
Jakarta EE
Eclipse Foundation으로 양도가 되면서 Java EE에 대한 개발이 가속화되기 시작했다.
특히 Jakarta EE 9는 기존에 없던 NoSQL에 대한 지원과 javax.*에서 jakarta.*로 namespace 변경이 이루어졌다.
Spring Boot 3에서는 Jakarta EE 9가 적용될 예정이기 때문에 기존 Java EE에서 전환에 많은 비용이 소모될 것으로 예상된다.
'Study > Java' 카테고리의 다른 글
Spring Data JDBC는 현재 쓸 만할까? (0) | 2022.03.17 |
---|---|
Spring MVC에서 video streaming 하기 (0) | 2022.02.25 |
java에서 OpenCV로 face detection 해보기 (0) | 2022.02.24 |
java project에서 maven으로 asciidoctor-diagram 사용해보기 (0) | 2022.02.19 |
java에서 OpenCV 사용해보기 (0) | 2022.02.04 |
JDK LTS release 2년 주기 전환 및 Spring의 release 정책 (0) | 2022.01.12 |
Spring Boot 2.6 Release Notes (0) | 2021.11.23 |
[troubleshooting] eclipse (STS)에서 빌드 시 throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module 에러 발생 (0) | 2021.11.01 |
[troubleshooting] eclipse(STS)에서 sources and javadoc downdoad 무한 반복 현상 (0) | 2021.10.22 |
JDK 12 ~ JDK 17 사이 추가된 language specification feature (0) | 2021.09.15 |