1. 소식
2018년 3월 20일, JDK 10이 GA(General Availability)로 공개되었다.
JDK 10은 Java의 시간 기반 릴리스 모델이 본격적으로 적용된 초기 릴리스로, 짧은 주기로 기능을 제공하는 흐름을 보여 준 버전이다. 가장 눈에 띄는 변화는 지역 변수 타입 추론(var)이며, 그 외에도 G1의 Parallel Full GC, AppCDS, 루트 인증서 포함 등 런타임과 배포 측면의 개선이 함께 포함되었다.
2. JEP 2.0 Proposal
JDK 10에 포함된 주요 JEP 목록은 다음과 같다.
- 286: Local-Variable Type Inference
- 296: Consolidate the JDK Forest into a Single Repository
- 304: Garbage-Collector Interface
- 307: Parallel Full GC for G1
- 310: Application Class-Data Sharing
- 312: Thread-Local Handshakes
- 313: Remove the Native-Header Generation Tool (javah)
- 314: Additional Unicode Language-Tag Extensions
- 316: Heap Allocation on Alternative Memory Devices
- 317: Experimental Java-Based JIT Compiler
- 319: Root Certificates
- 322: Time-Based Release Versioning
상세 내용은 OpenJDK의 JDK 10 프로젝트 페이지에서 확인할 수 있다.
(http://openjdk.java.net/projects/jdk/10/)
Local-Variable Type Inference 예시
JEP 286으로 추가된 var는 지역 변수 선언에서 컴파일러가 초기화 식을 기준으로 타입을 추론하게 해 준다. 다만 동적 타입이 되는 것은 아니며, 컴파일 시점에 타입이 결정되는 정적 타입 기능이다.
var message = "Hello, JDK 10";
var numbers = java.util.List.of(1, 2, 3);
System.out.println(message);
System.out.println(numbers);
간단히 확인하려면 JDK 10 이상이 설치된 환경에서 위 코드를 포함한 클래스를 컴파일하고 실행하면 된다. 코드의 의미가 불명확해지는 경우에는 기존처럼 명시적인 타입을 사용하는 편이 낫다.
3. 다운로드
오라클: http://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html