Java 10

2021. 8. 10. 22:45Java/버전별 변화

728x90

추가된 기능

로컬 변수 타입 추론

로컬 변수 var를 이용함으로서 컴파일러에게 타입을 추론할 수 있게 되었습니다.

public void test() {
    var message = "Hello, Java 10";
    assertTrue(message instance of String);
}

로컬 변수 타입 추론은 지역 변수를 초기화하며 선언할 때만 사용할 수 있습니다.

var의 잘못된 예시

var n;                                    // var는 초기화 없이 사용할 수 없습니다. 
var emptyList = null;                    // 변수 초기화를 null로 할 수 없습니다. 
var p = (String s) -> s.length() > 10;    // 람다 표현식은 명확한 타입 추론을 하기 힘들기 때문에 사용할 수 없습니다. 
var arr = {1, 2, 3};                    // 배열 또한 명확한 타입을 작성해주어야 합니다.

수정이 불가능한 Collections

데이터를 추가하거나 제거할 수 없는 고정된 Collection을 반환하는 메소드들이 추가되었습니다.

copyOf()

@Test(expected = UnsupportedOperationException.class)
public void whenModifyCopyOfList_thenThrowsException() {
    List<Integer> copyList = List.copyOf(someIntList);
    copyList.add(4);
}

toUnmodifiable*()

@Test(expected = UnsupportedOperationException.class)
public void whenModifyToUnmodifiableList_thenThrowsException() {
    List<Integer> evenList = someIntList.stream()
      .filter(i -> i % 2 == 0)
      .collect(Collectors.toUnmodifiableList());
    evenList.add(4);
}

Optional*.orElseThrow()

만약 현재 값이 존재하지 않는다면 예외를 발생시켜주는 메소드가 추가되었습니다.

@Test
public void whenListContainsInteger_OrElseThrowReturnsInteger() {
    Integer firstEven = someIntList.stream()
      .filter(i -> i % 2 == 0)
      .findFirst()
      .orElseThrow();
    is(firstEven).equals(Integer.valueOf(2));
}

성능 개선

Parallel Full GC for G1

G1 GC는 Java 9 버전부터 default GC였습니다. 하지만 G1에 대한 Full GC는 싱글 스레드 기반으로 동작하고 있었습니다. Java 10에서는 Parallel Full GC를 통해 Full GC가 일어나는 동안 동작 중지 시간을 효과적으로 줄일 수 있게 되었습니다.

참조: https://www.baeldung.com/java-10-overview

728x90

'Java > 버전별 변화' 카테고리의 다른 글

Java 15  (0) 2021.10.07
Java 14  (0) 2021.09.25
Java 13  (0) 2021.09.19
Java 12  (0) 2021.09.06
JAVA 9  (0) 2020.09.06