2018.02.14

자바 JDK 10, 다음 자바에서 기대할 수 있는 새로운 기능 Q&A

Paul Krill | InfoWorld
2018년 2월 12일 자바 개발 키트(Java Development Kit) 10 업그레이드의 첫 릴리스 후보가 나왔다. 두 번째 릴리스 후보는 3월로 예정돼 있다.


Peter Sayer/IDGNS

Q. JDK 10 출시일은 언제인가
A. 자바 스탠다드 에디션 10 구현인 JDK 10의 릴리스 예정일은 2018년 3월 20일이었다. 주요 개선 사항에는 로컬 형식 추론, 가비지 수집을 위한 "깔끔한" 인터페이스 등이 포함된다.
오라클은 자바의 릴리스 주기를 6개월로 정했다. 원래 계획은 릴리스 연도와 월을 기반으로 이름을 붙이는 것이었고 그 계획에 따르면 첫 릴리스는 자바 18.3이 되겠지만 이 계획은 반대에 부딪혀 무효화됐다.

Q. JDK 10의 다운로드 위치는
A. 얼리 어댑터 프로그램 가입에 동의한 후 JDK 10 베타 버전을 다운로드할 수 있다.

Q. JDK 10의 새로운 기능과 개선된 기능은
A. JDK 10에 예정된 주요 기능은 다음과 같다.
- 로컬 변수 형식 추론 : 형식 추론을 로컬 변수까지 확장한다. 목적은 정적 형식 안전성을 유지하면서 코딩과 관련된 "격식"을 줄이는 것이다.
- 다양한 가비지 수집기의 소스코드 격리를 개선하기 위한 깔끔한 가비지 수집기 인터페이스 : 이 기능의 목적은 핫스팟(HotSpot) 가상 머신의 내부 가비지 수집 코드를 위한 모듈성을 강화하고 핫스팟에 새 가비지 수집기를 추가하는 작업을 더 쉽게 하기 위한 것이다.
- G1 가비지 수집기를 위한 병렬 전체 가비지 수집 : 목적은 병렬 처리를 구현해 최악의 경우(worst-case) 지연을 개선하는 데 있다.
- 핫스팟에서 사용자가 지정한 대안 메모리 소자(예: NVDIMM 메모리 모듈)에 개체 힙을 할당할 수 있도록 함 : 미래의 시스템은 상호 이질적인 메모리 아키텍처를 사용할 수도 있음을 염두에 둔 것이다.
- 리눅스/x64 플랫폼에서 그랄(Graal) 자바 기반 JIT 컴파일러를 실험적으로 사용할 수 있도록 함
- 개발을 효율화하기 위해 JDK 포리스트 리포지토리를 하나의 리포지토리로 통합 : 지금까지 코드 기반은 여러 리포지토리로 분할되며 이로 인해 소스코드 관리 측면에서 문제가 발생할 수 있다.
- 애플리케이션 클래스 데이터 공유 : 공통적인 클래스 메타데이터를 프로세스 간에 공유하여 점유 공간을 줄인다. 시작 시간도 개선된다.
- 글로벌 VM 세이프포인트(safepoint)를 수행하지 않고 스레드에 대한 콜백을 실행하기 위한 스레드-로컬 핸드셰이크 : 스레드 전체가 아닌 개별 스레드를 중지할 수 있다.
- JDK에서 기본 루트 인증 기관 인증서 세트 제공 : 목표는 오라클 자바 SE 루트 CA 프로그램의 루트 인증서를 오픈 소스화해서 개발자 관점에서 오픈JDK 빌드의 매력을 더 높이는 데 있다.

Q. JDK 10의 개발 단계 계획은
A. 오라클 자바 SE 다운로드 페이지에는 아직 JDK 10이 없다. 최종 릴리스 전에 JDK 10 개발 단계가 아직 남아 있는데, 이 개발 단계는 다음과 같다.
- 2018년 1월 11일 : 지원되는 모든 플랫폼에서 계획된 테스트를 최소 1회 모두 완료
- 2018년 1월 18일 : 램프다운 2단계. "치명적인" 버그만 수정
- 2018년 2월 22일 : 최종 릴리스 후보

9월 21일, 오랜 기다림 끝의 자바 개발 키트(JDK) 9 릴리스 직후 오라클은 표준 자바에 대한 새로운 6개월 릴리스 일정에 따라 2018년 3월로 예정된 자바 18.3 버전을 포함한 자바 업그레이드 계획을 입안했다.

Q. 장기적인 자바 로드맵은
A. 자바 SE의 미래 버전에 대해 오라클이 고려 중이라고 밝힌 사항은 다음과 같다.
- 앰버 프로젝트(Amber Project) : 로컬 변수 형식 추론을 비롯해 생산성 지향적인 언어 기능을 위한 인큐베이터 역할을 해왔다. 이를 통해 자바 코드 작성과 관련된 격식을 줄이고 enum을 강화하고 enum에서 형식 변수를 활성화하고 enum 상수에 대해 더 섬세한 형식 확인을 수행함으로써 enum 구조의 표현을 개선하고 람다 및 메소드 참조의 실용성을 높인다.
- 프로젝트 파나마(Project Panama) : JVM과 네이티브 코드를 연결하고 JVM의 네이티브 함수 호출, JVM에서의 네이티브 데이터 액세스 기능을 제공한다.
- 발할라(Valhalla) : 값 형식과 제네릭 특화(generic specialization)를 포함한 고급 자바 VM 및 언어 기능 후보를 위한 인큐베이터.
- 프로젝트 룸(Project Loom) : 동시 애플리케이션 작성과 관련된 복잡성을 줄인다. 이 계획을 위해서는 대안, 사용자 모드 스레드 구현, 범위 설정 연속(delimited continuation) 및 기타 호출-스택 조작을 포함하는 구조를 추가해야 한다. 이 제안의 주된 목표는 자바로 작성된 스케줄러를 통해 관리되는 스레드의 대안 구현을 제공하는 데 있다. 성능이 향상되고 점유 공간은 줄어들면서 일반 자바 스레드의 자바 프로그래밍 모델은 보존된다.

새로운 6개월 릴리스 일정에 따라 한 릴리스에 포함되지 못한 기능은 다음 릴리스가 나올 때까지 최소 6개월 지연된다. 오라클은 JDK 10과 관련해 발표한 내용 외에 새로 제안된 기능이 실제로 자바에 언제 포함될 지에 대해서는 언급하지 않았다. editor@itworld.co.kr  


2018.02.14

자바 JDK 10, 다음 자바에서 기대할 수 있는 새로운 기능 Q&A

Paul Krill | InfoWorld
2018년 2월 12일 자바 개발 키트(Java Development Kit) 10 업그레이드의 첫 릴리스 후보가 나왔다. 두 번째 릴리스 후보는 3월로 예정돼 있다.


Peter Sayer/IDGNS

Q. JDK 10 출시일은 언제인가
A. 자바 스탠다드 에디션 10 구현인 JDK 10의 릴리스 예정일은 2018년 3월 20일이었다. 주요 개선 사항에는 로컬 형식 추론, 가비지 수집을 위한 "깔끔한" 인터페이스 등이 포함된다.
오라클은 자바의 릴리스 주기를 6개월로 정했다. 원래 계획은 릴리스 연도와 월을 기반으로 이름을 붙이는 것이었고 그 계획에 따르면 첫 릴리스는 자바 18.3이 되겠지만 이 계획은 반대에 부딪혀 무효화됐다.

Q. JDK 10의 다운로드 위치는
A. 얼리 어댑터 프로그램 가입에 동의한 후 JDK 10 베타 버전을 다운로드할 수 있다.

Q. JDK 10의 새로운 기능과 개선된 기능은
A. JDK 10에 예정된 주요 기능은 다음과 같다.
- 로컬 변수 형식 추론 : 형식 추론을 로컬 변수까지 확장한다. 목적은 정적 형식 안전성을 유지하면서 코딩과 관련된 "격식"을 줄이는 것이다.
- 다양한 가비지 수집기의 소스코드 격리를 개선하기 위한 깔끔한 가비지 수집기 인터페이스 : 이 기능의 목적은 핫스팟(HotSpot) 가상 머신의 내부 가비지 수집 코드를 위한 모듈성을 강화하고 핫스팟에 새 가비지 수집기를 추가하는 작업을 더 쉽게 하기 위한 것이다.
- G1 가비지 수집기를 위한 병렬 전체 가비지 수집 : 목적은 병렬 처리를 구현해 최악의 경우(worst-case) 지연을 개선하는 데 있다.
- 핫스팟에서 사용자가 지정한 대안 메모리 소자(예: NVDIMM 메모리 모듈)에 개체 힙을 할당할 수 있도록 함 : 미래의 시스템은 상호 이질적인 메모리 아키텍처를 사용할 수도 있음을 염두에 둔 것이다.
- 리눅스/x64 플랫폼에서 그랄(Graal) 자바 기반 JIT 컴파일러를 실험적으로 사용할 수 있도록 함
- 개발을 효율화하기 위해 JDK 포리스트 리포지토리를 하나의 리포지토리로 통합 : 지금까지 코드 기반은 여러 리포지토리로 분할되며 이로 인해 소스코드 관리 측면에서 문제가 발생할 수 있다.
- 애플리케이션 클래스 데이터 공유 : 공통적인 클래스 메타데이터를 프로세스 간에 공유하여 점유 공간을 줄인다. 시작 시간도 개선된다.
- 글로벌 VM 세이프포인트(safepoint)를 수행하지 않고 스레드에 대한 콜백을 실행하기 위한 스레드-로컬 핸드셰이크 : 스레드 전체가 아닌 개별 스레드를 중지할 수 있다.
- JDK에서 기본 루트 인증 기관 인증서 세트 제공 : 목표는 오라클 자바 SE 루트 CA 프로그램의 루트 인증서를 오픈 소스화해서 개발자 관점에서 오픈JDK 빌드의 매력을 더 높이는 데 있다.

Q. JDK 10의 개발 단계 계획은
A. 오라클 자바 SE 다운로드 페이지에는 아직 JDK 10이 없다. 최종 릴리스 전에 JDK 10 개발 단계가 아직 남아 있는데, 이 개발 단계는 다음과 같다.
- 2018년 1월 11일 : 지원되는 모든 플랫폼에서 계획된 테스트를 최소 1회 모두 완료
- 2018년 1월 18일 : 램프다운 2단계. "치명적인" 버그만 수정
- 2018년 2월 22일 : 최종 릴리스 후보

9월 21일, 오랜 기다림 끝의 자바 개발 키트(JDK) 9 릴리스 직후 오라클은 표준 자바에 대한 새로운 6개월 릴리스 일정에 따라 2018년 3월로 예정된 자바 18.3 버전을 포함한 자바 업그레이드 계획을 입안했다.

Q. 장기적인 자바 로드맵은
A. 자바 SE의 미래 버전에 대해 오라클이 고려 중이라고 밝힌 사항은 다음과 같다.
- 앰버 프로젝트(Amber Project) : 로컬 변수 형식 추론을 비롯해 생산성 지향적인 언어 기능을 위한 인큐베이터 역할을 해왔다. 이를 통해 자바 코드 작성과 관련된 격식을 줄이고 enum을 강화하고 enum에서 형식 변수를 활성화하고 enum 상수에 대해 더 섬세한 형식 확인을 수행함으로써 enum 구조의 표현을 개선하고 람다 및 메소드 참조의 실용성을 높인다.
- 프로젝트 파나마(Project Panama) : JVM과 네이티브 코드를 연결하고 JVM의 네이티브 함수 호출, JVM에서의 네이티브 데이터 액세스 기능을 제공한다.
- 발할라(Valhalla) : 값 형식과 제네릭 특화(generic specialization)를 포함한 고급 자바 VM 및 언어 기능 후보를 위한 인큐베이터.
- 프로젝트 룸(Project Loom) : 동시 애플리케이션 작성과 관련된 복잡성을 줄인다. 이 계획을 위해서는 대안, 사용자 모드 스레드 구현, 범위 설정 연속(delimited continuation) 및 기타 호출-스택 조작을 포함하는 구조를 추가해야 한다. 이 제안의 주된 목표는 자바로 작성된 스케줄러를 통해 관리되는 스레드의 대안 구현을 제공하는 데 있다. 성능이 향상되고 점유 공간은 줄어들면서 일반 자바 스레드의 자바 프로그래밍 모델은 보존된다.

새로운 6개월 릴리스 일정에 따라 한 릴리스에 포함되지 못한 기능은 다음 릴리스가 나올 때까지 최소 6개월 지연된다. 오라클은 JDK 10과 관련해 발표한 내용 외에 새로 제안된 기능이 실제로 자바에 언제 포함될 지에 대해서는 언급하지 않았다. editor@itworld.co.kr  


X