Java 10: 주요 특징 및 릴리스 모델 설명
Java 10 개요
Java 10은 Java 릴리스 주기에서 중요한 릴리스로, 2018년 3월 10일에 출시되었습니다. Java 10부터 Oracle은 Java 릴리스 주기를 새로운 모델로 변경했습니다: 6개월 릴리스 주기와 Oracle Java SE 제품에 대한 LTS(Long Term Support) 모델입니다.
Java 10부터 Oracle은 6개월마다 새로운 Java 버전을 출시하며, 각 버전에는 한두 개의 주요 기능이 포함됩니다. Oracle은 '릴리스 트레인' 개념을 사용합니다. 각 릴리스 트레인은 6개월로 예정되어 있으며, 이 기간 내에 개발된 기능은 해당 릴리스에 포함되고, 그렇지 않으면 다음 릴리스 트레인으로 미뤄집니다.
Oracle JDK vs OpenJDK
대부분의 Oracle JDK 바이너리는 Oracle의 독점 라이선스가 적용되어 재배포에 여러 제한이 있습니다. 반면 OpenJDK는 개발자 커뮤니티 친화적입니다. Java 10부터 Oracle은 커뮤니티 기반 Java 개발을 촉진하기 위해 OpenJDK를 주요 JDK로 홍보하기로 결정했습니다. Oracle은 자체 JDK를 계속 생산하지만 3년 후에 LTS 버전으로 출시합니다. 따라서 OpenJDK 바이너리는 6개월마다 출시됩니다.
OpenJDK는 클라우드와 컨테이너 친화적이며 컨테이너의 일부로 자유롭게 배포할 수 있습니다. Oracle의 OpenJDK 홍보는 Java를 클라우드/컨테이너 개발 및 배포에 더 친화적으로 만듭니다.
Java 9와 Java 10은 비 LTS 릴리스입니다. Java 11이 LTS 릴리스입니다.
주요 새로운 기능
Java 10에 도입된 주요 새로운 기능들:
- JEP 286 - 지역 변수 타입 추론
- JEP 322 - 시간 기반 릴리스 버저닝
- JEP 304 - 가비지 컬렉터 인터페이스
- JEP 307 - G1을 위한 병렬 풀 GC
- JEP 316 - 대체 메모리 장치에서의 힙 할당
- JEP 296 - JDK 포레스트를 단일 저장소로 통합
- JEP 310 - 애플리케이션 클래스 데이터 공유
- JEP 314 - 추가 유니코드 언어 태그 확장
- JEP 319 - 루트 인증서
- JEP 317 - 실험적 Java 기반 JIT 컴파일러
- JEP 312 - 스레드 로컬 핸드셰이크
- JEP 313 - 네이티브 헤더 생성 도구 제거
Java 10은 70개 이상의 API를 새로운 메서드와 옵션으로 개선했으며, 사용 중단된 API와 옵션을 제거했습니다. 자세한 내용은 다음 장에서 다룹니다.