- 자바 플랫폼을 이해하기 위해서 요약한 정보로, 정확하지 않을 수 있다.
- 자바 SE, EE 위주로 정리하였다. ME나 그 외 플랫폼에 관한 부분은 거의 다루지 않았다.
- 1995
- 썬 마이크로시스템즈, 자바 알파버전 출시
- 1996
- 자바 첫 안정 버전(Java 1.0) 출시
- 1998
- JCP 설립
- 자바 플랫폼의 새로운 기능/변경 사항은 JCP를 통해서 결정한다.
- JCP 집행위원회(EC)가 있으며 여러 의사결정을 수행한다.
-
-
- 기준 JetBrains, Oracle, Microsoft, Amazon, Japan Java User Group, IBM 등이 포함되어있다.
-
-
- ISO/IEC, ECMA에 표준으로 정식 승인을 받으려 했으나 절차에서 철수
- (해당 정보는 위키피디아 외에 더 자세한 출처를 찾을 수 없었다.)
- 하지만, C#은 일부 버전이나마 ECMA, ISO에 등재되어있다.
- (ECMA-334 / ISO/IEC 23270)
- 자바는 표준이 아니고, 사실상의 표준(De facto standard)이다.
- JCP 설립
- 1999
- 자바 플랫폼 명칭을 3종류로 통일. - J2SE, J2SE, J2SE
- 2005
- 자바 SE 사용을 위해 구글과 썬의 자바 사용권 협의 시작
- 2006
- 구글과 썬의 자바 사용권 협의 결렬
- 구글, 자바 플랫폼의 완전히 새로운 버전을 만들기로 결정
- 새로운 JVM을 Dalvik으로 명명
- Java SE를 오픈소스화 하는 OpenJDK 계획 발표
- 또한 오픈소스이며 Java EE의 공식 참조 구현인 GlassFish 출시
- 구글과 썬의 자바 사용권 협의 결렬
- 2007
- Java SE 6 출시
- OpenJDK를 공개
- GPLv2+CE 라이선스를 가진다.
- Classpath Exception이 붙은 이유 간단 설명
- GPL 라이선스는 파생 코드도 GPL 라이선스를 가지고 코드를 공개해야만 한다.
- GPL+CE는 GPL에서 API를 사용하는 경우에는 제외한다는 예외가 추가된 버전이다.
- 즉, JDK 구현을 건드리지 않고, JDK를 단순 사용하여 프로그램을 구현하는 경우는 소스코드를 공개하지 않아도 된다.
- Classpath Exception이 붙은 이유 간단 설명
- 썬이 배포권을 가지지 않는 일부 기능은 제외하여 출시하였다.
- 2010년까지 이러한 제외된 기능을 전부 오픈소스 코드로 대체한다.
- OpenJDK 6는 백포트(최신 버전의 특정 코드 가져와 이전 버전으로 포팅하는 작업, 위키피디아 backporting 참고) 때문에 성능에 문제가 있었다.
- GPLv2+CE 라이선스를 가진다.
- OpenJDK Community TCK 사용권 발표
- 자바 표준과 호환 여부를 확인하는 TCK이다.
- 타 Vender의 구현체더라도 TCK를 통과하면 'Java Compatible' 상표를 사용 가능
- 2010
- 오라클, 썬을 인수
- 두 회사는 합병되었으며, 오라클이 특허권과 저작권을 양도받음
- 오라클, 구글을 자바 특허권 침해로 소송
- 이 글에서 이 이후 오라클, 구글 사이의 소송에 관해선 다루지 않는다.
- 자세한 내용은 아래 Reference를 참고해서 찾기
- 오라클, 썬을 인수
- 2011
- Java SE 7 출시
- 출시가 길어진 이유
- 썬의 불황, 오라클로 인수되고 나서 자바 팀을 재정비 등 내/외부 적으로 여러 문제가 있었다.
- Java SE 7부터 OpenJDK가 자바 SE의 공식 참조 구현이다. - 참고
- 그렇다고 모든 JDK 구현체가 OpenJDK로부터 구현되는 것은 아니며, Azul처럼 자체적인 구현(JVM)을 가지는 경우도 있다.
- Oracle JDK도 OpenJDK를 기반으로 구현된다.
- 출시가 길어진 이유
- Java SE 7 출시
- 2014
- Java SE 8 출시
- 함수형 프로그래밍(람다, 스트림), 널 안전성(Optional), 새로운 날짜 API(LocalDate), Default method 등 기능이 추가되었다.
- 자바 기초 책이나 자료는 대부분 SE 8을 기준으로 작성되어 있고, 여태까지도 가장 많이 사용되는 버전이다. - Jetbrains 2023년도 개발자 에코시스템 현황 기준 참고
- Java SE 8 출시
- 2017
- Java SE 9 출시
- Java Platform Module System(Jigsaw) 및 그 외 기능들 추가
- Jigsaw로 인해서 JRE는 더 이상 제공되지 않는다.
- Java Platform Module System(Jigsaw) 및 그 외 기능들 추가
- Java EE 8 출시
- 오라클이 Java EE를 Eclipse 재단에 이관하기로 결정
- 이 시점 이후 Java EE를 JCP에서 다루지 않는다.
- Java SE 9 출시
- 2018
- Java SE 11 (LTS) 출시
- 2019
- Java EE 8 과 완벽한 호완성을 가지는 Jakarta EE 8 출시
- 참고
- GlassFish도 Eclipse GlassFish로 변경, Github Repo도 Eclipse 재단으로 넘어갔다.
- Java EE 8 과 완벽한 호완성을 가지는 Jakarta EE 8 출시
- 2020
- Jakarta EE 9 출시
- 참고
- 이 글에서 이후 버전은 정리하지 않겠다.
- 패키지 구조가
javax.*
에서jakarta.*
로 변경 - JCP 대신 Jakarta EE Specification Process (JESP)를 통해서 발전한다.
- TCK 또한 Oracle 대힌 Eclipse 재단에서 제공한다.
- Jakarta EE 9 출시
- 2021
- Java SE 17 (LTS) 출시
- 2023
- Java SE 21 (LTS) 출시
도서 - “자바 탄생 20주년” 자바가 걸어온 길, 자바가 걸어갈 길
Wikipedia - Java (programming language) 영어/한국어
소프트웨어 정책 연구소 - 구글과 오라클 간의 자바 API 분쟁 역사 - (1)
소프트웨어 정책 연구소 - 구글과 오라클 간의 자바 API 분쟁 역사 - (2)
OKKY - Java 유료 논쟁, Oracle JDK와 OpenJDK의 차이 정리
와탭 블로그 - 혼란스러운 Java 버전의 진실