Java 11 릴리즈!

⏱ 2 분

자바 11이 릴리즈됐습니다. 자바 10이 출시된지 6개월만입니다. 오라클은 6개월마다 새 버전을 출시한다고 했고, 특정 버전만 장기간 지원(Long-term support; LTS)한다고 밝혔는데요. 자바 11은 첫 번째 LTS 버전입니다.

오라클이 이런 버전 정책을 가져가는 이유는 두 가지입니다.

  • 자바 생태계가 빠르게 발전할 수 있도록 6개월마다 새로운 버전을 릴리즈합니다.
  • 중간 중간 LTS 버전을 둠으로써 다음 버전으로 마이그레이션할 충분할 시간을 줍니다.

그럼 자바 11에서 달라진 점을 살펴보겠습니다.

새로운 기능

Nest 기반 접근 제어

Nest-based access controls. Nest 는 접근 제어 컨텍스트로 논리적으로는 같은 클래스를 분리된 클래스로 컴파일할 수 있게 해줍니다. 그러면 다른 클래스의 private 멤버에 getter/setter 없이 바로 접근 가능합니다. 여러 클래스를 하나의 클래스처럼 묶어줄 수 있는 기술로 보입니다.

새로운 가비지 컬렉터

ZGC: A Scalable Low-Latency Garbage Collector (Experimental). 성능을 향상시킨 새로운 가비지 컬렉터(Carbage Collector)입니다. 메모리를 자동으로 정리해주는 가비지 컬렉터는 자바의 장점 중 하나이지만, 가비지 컬렉터가 동작할 때 JVM이 애플리케이션을 멈추기 때문에 자바의 단점이기도 합니다. ZGC는 이 시간을 10ms 미만으로 줄이고 15% 이하의 성능 페널티를 목표로 합니다.

Flight Recorder

Flight Recorder. 자바 애플리케이션과 HotSpot JVM의 문제 해결을 위한 오버헤드가 낮은 데이터 수집 프레임워크입니다. 이전에는 유료 기능이었지만 오픈소스로 공개되었습니다.

새로운 표준 HTTP 라이브러리

HTTP Clinet(Standard). java.net.http 패키지의 새로운 모듈로 flow 기반의 HTTP/1.1과 HTTP/2를 지원합니다. 자바 9과 자바 10에서 사용되었던 jdk.incubator.http 패키지가 표준화되어 java.net.http 패키지로 추가되었습니다.

TLS 1.3

Transport Layer Security (TLS) 1.3. TLS이전 포스트에서 살펴봤던 것처럼 SSL(Secure Socket Layer)의 표준 이름이죠. TLS의 새로운 버전을 구현했습니다.

람다에서의 var 변수

Local-Variable Syntax for Lambda Parameters. 자바 10에서 도입된 var 타입 추론을 업데이트했습니다.

사라진 기능

사라진 기능도 간단하게 살펴보겠습니다.

  • Java EE and CORBA Modules : 앞으로 EE 나 CORBA 모듈이 필요한 경우 명시적으로 의존을 추가해야 합니다.
  • Web Start : 특별한 대안 없이 삭제되었습니다.
  • Applets : 한동안 대부분 deprecated 되었다가 완전히 삭제되었습니다.
  • JavaFX : FX 라이브러리가 OpenJFX 프로젝트로 옮겨가면서 코어에서 삭제되었습니다.

자바 11이 릴리즈되었다는 소식에 달라진 점을 간단히 살펴봤습니다. 자바 10을 아직 정리하지 않아서 차차 다른 포스트에서 다뤄볼 예정입니다. 자바 11은 오라클 다운로드 페이지에서 다운로드하실 수 있습니다.

참고