Java 10: 70개 이상의 새로운 API 및 기능 설명
JDK 10 릴리스는 Java 라이브러리에 70개 이상의 새로운 API와 옵션을 추가했습니다. 주요 개선 사항은 다음과 같습니다.
Optional.orElseThrow() 메서드
java.util.Optional 클래스에 새로운 메서드 orElseThrow()가 추가되었으며, 이는 get() 메서드의 권장 대안입니다.
수정 불가능한 컬렉션 생성 API
List, Set, Map 인터페이스에 기존 컬렉션에서 새 컬렉션 인스턴스를 생성하는 copyOf() 메서드가 추가되었습니다. Collector 클래스에는 스트림 요소를 수정 불가능한 컬렉션으로 가져오는 toUnmodifiableList(), toUnmodifiableSet(), toUnmodifiableMap() 메서드가 추가되었습니다.
JRE 최종 사용 추적 비활성화
실행 중인 VM에 대한 JRE 최종 사용 추적을 비활성화하는 새로운 플래그 jdk.disableLastUsageTracking이 도입되었습니다.
해시된 비밀번호
jmxremote.password 파일의 평문 비밀번호가 JMX 에이전트에 의해 SHA3-512 해시로 덮어쓰여집니다.
여러 스타일시트 지원하는 javadoc
javadoc 명령에 --add-stylesheet 옵션이 추가되어 생성된 문서에서 여러 스타일시트 사용을 지원합니다.
오버라이드된 메서드 지원하는 javadoc
javadoc 명령에 --overridden-methods=value 옵션이 추가되었습니다. 많은 클래스가 상속된 메서드를 오버라이드하지만 사양을 변경하지 않습니다. 이 옵션을 사용하면 이러한 메서드를 별도로 문서화하는 대신 다른 상속된 메서드와 그룹화할 수 있습니다.
요약 지원하는 javadoc
API 설명의 요약으로 사용할 텍스트를 지정하는 새로운 인라인 태그 {@summary ...}가 추가되었습니다. 기본적으로 API 설명의 요약은 첫 문장에서 추론됩니다.
예제: 새로운 API 사용
import java.util.List;
import java.util.stream.Collectors;
public class Tester {
public static void main(String[] args) {
var ids = List.of(1, 2, 3, 4, 5);
try {
// 수정 불가능한 리스트 얻기
List<Integer> copyOfIds = List.copyOf(ids);
copyOfIds.add(6);
} catch (UnsupportedOperationException e) {
System.out.println("컬렉션은 수정할 수 없습니다.");
}
try {
// 스트림에서 수정 불가능한 리스트 얻기
List<Integer> evenNumbers = ids.stream()
.filter(i -> i % 2 == 0)
.collect(Collectors.toUnmodifiableList());
evenNumbers.add(6);
} catch (UnsupportedOperationException e) {
System.out.println("컬렉션은 수정할 수 없습니다.");
}
}
}
출력
컬렉션은 수정할 수 없습니다.
컬렉션은 수정할 수 없습니다.