
최근 자바 버전 관련 이슈에 정말 많이 부딪혀서 정리하게 되었다. 보통 개발 전에 Java SE 8, Java SE 11, Java SE 17 중에 선택하는 것 같다. JDK, Java SE 등 이름도 다양해서 시간 순으로 정리하였다. 실제로 개발할 때 사용한 컨텐츠 위주로 정리하였다.
💣 JDK
JDK 1.0
- 1996년 1월 23일 첫 출시
- JDK 1.0.2가 첫 안정화 버전이고, Java 1이라 불림
JDK 1.1
- 1997년 2월 19일
- awt 이벤트 모델 정비, 내부 클래스, Java Beans, 직렬화
- JIT (Just In Time) 컴파일러
J2SE 1.2
- 1998년 12월 8일
- Java 2로 브랜드 변경 : 볼륨이 3배 이상 늘어난 중요 릴리즈
- Swing 클래스 통합, Collection 프레임워크
- Sun JVM에 처음으로 JIT 컴파일러 탑재
J2SE 1.4
🪂 Java SE
Java SE 5
- 2004년 9월 30일
- Generic 도입 : Collection에 대한 컴파일 타임 유형 안정성을 제공
- Enumerations 도입 : enum과 같은 기능 활용 가능
- Wrapper class : Integer, Character과 같이 원시 타입 변수와의 혼용 가능.
- Varargs : 메소드의 마지막 매개변수는 이제 유형 이름 뒤에 세 개의 점(예
void drawtext(String... lines)
: )을 사용하여 선언 가능
- 현재 사용하는 for each 문으로 향상
- 다중 스레드 향상
Java SE 8
- 2014년 3월 18일
- Lambda, Stream 추가
- Optional 추가
- LocalDate, LocalTime, LocalDateTime 추가
- Hotsspot JVM에서 Permanent Generation 제거 (자바 외 언어로 작성된 네이티브 코드를 위한 메모리 영역)
Java SE 10
- 2018년 3월 20일
- 소스 파일을 컴파일하지 않고 실행 가능
Java SE 11
- 2018년 9월 25일
- OpenJDK가 OracleJDK로 통합
- String, File 라이브러리 확장
- 인터페이스에 private 메서드 가능
- var 키워드 사용 가능
- HTTP Client 적용
Java SE 17
- 2021년 9월 14일
- OpenJDK가 OracleJDK와 통합
- 부동 소수점 연산을 일관하게 조정
- MacOS용 랜더링 파이프라인 구현 : 이후에 OpenGL API 제거 가능성 있음
- Switch 함수에 Object 전달 가능하고, 클래스 구분 가능
- NullPointerException 발생 위치 안내 → 감동,,
- sealed 키워드 도입 : 특정 클래스에 대해 허용되는 하위 클래스
- Spring Boot 3의 최소 요구 버전
Java SE 18
- 2022년 3월 22일
- UTF-8을 기본값으로!
- Java API Docs에 코드 스니펫 추가
- 즉시 가용할 수 있는 정적 HTTP 파일 서버 제공
참고
Java version history
Java Versions and Features