Java9

업데이트:

주요 변경사항

JAVA 9

  • 자세한 내용은 오라클 공식 변경사항1을 참조하기 바란다.

Add Java Platform Module System(Jigsaw)

유연한 런타임 이미지를 만들기 위해 Java 플랫폼을 모듈화하여 필요한 모듈만 경량화된 이미지를 만들 수 있게 되었다.

Updates Process API

ProcessHandle API를 활용하여 운영체제의 프로세스 제어 및 관리를 위한 API의 기능이 향상되었다.

Add JShell

JavasSript(Node JS), Python 같은 인터프리터 언어처럼 바로 코드를 작성하고 결과를 확인할 수 있는 REPL(Read-Eval-Print-Loop) 도구를 제공한다.

Add Compact String

자바의 char 자료형은 UTF-16기반의 2Byte를 차지하는데 개선된 String은 문자열에 따라 Latin-1(1Byte)와 UTF-16(2Byte)으로 나누어졌다.

SHA-3 Hash Algorithms

SHA-1, SHA-2 표준 해시 함수를 대체하는 SHA-3 해시 함수를 제공한다.

Improve try-with-resource

try~with~resourec 구문 외부에서 정의된 객체도 final 혹은 effectively final이 적용된다.

public class TryWithResource {
  public static void main(String[] args) {
    // Java7
    BufferedReader outerReader = new BufferedReader(new FileReader("test.txt"));
    try (BufferedReader innerReader = outerReader) {
      /* ... */
    }
    // Java9
    // Final or effectively final applied so that the reader can be used.
    BufferedReader reader = new BufferedReader(new FileReader("test.txt"));
    try (reader) {
      /* ... */
    }
  }
}

Implement Selected ECMAScript 6 Features in Nashorn

Nashorn이 ECMAScript 6 버전의 많은 새로운 기능 중 일부를 구현하여 제공한다.

Private Interface Method

Interface 외부에서 사용 및 참조(Overriding)이 불가능한 private & private static method라는 새로운 기능을 제공한다.

Updates More Concurrency

개선된 CompletableFuture과 Reactive stream이 도입 등 프로그램의 동시성 및 병렬 처리 지원을 위한 라이브러리의 지원이 늘어났다.

Improve Diamond Operator

익명 클래스에 Diamond Operator를 사용할 수 있다.

Stream Improvements

Stream에 추가 메서드(iterate, takeWhile, dropWhile, ofNullable)를 제공하여 비동기 프로그래밍에 대한 편의성을 제공한다.

Optional Class Stream

Optional에 추가 메서드(or, ifPresentOrElse, stream)로 활용도가 높아졌다.

Convenience Factory Methods for Collections

불변 Collection을 보다 가독성 좋게 생성하기 위한 Factory Method를 제공한다.

public class Collection {
  public static void main(String[] args) {
    // Java8
    List<String> list = Collections.unmodifiableList(Stream.of("foo", "bar", "baz").collect(Collectors.toList()));
    Set<String> set = Collections.unmodifiableSet(Stream.of("foo", "bar", "baz").collect(Collectors.toSet()));
    // Java9
    List<String> list = List.of("foo", "bar", "baz");
    Set<String> set = Set.of("foo", "bar", "baz");
  }
}

Reference

※ Sample Code는 여기에서 확인 가능합니다.

댓글남기기