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는 여기에서 확인 가능합니다.
댓글남기기