Java 13

2021. 9. 19. 17:52Java/버전별 변화

728x90

미리 보는 변화

Switch문 개편

@Test
@SuppressWarnings("preview")
public void whenSwitchingOnOperationSquareMe_thenWillReturnSquare() {
    var me = 4;
    var operation = "squareMe";
    var result = switch (operation) {
        case "doubleMe" -> {
            yield me * 2;
        }
        case "squareMe" -> {
            yield me * me;
        }
        default -> me;
    };

    assertEquals(16, result);
}

Text Block

기존에는 여러 줄에 걸쳐진 문자열을 표현할 때는 \r, \n과 같은 형태로 구현해야 했습니다. 그러나 text block을 이용해 더 간편하게 보여줄 수 있도록 만들었습니다.

이전 버전

String JSON_STRING 
  = "{\r\n" + "\"name\" : \"Baeldung\",\r\n" + "\"website\" : \"https://www.%s.com/\"\r\n" + "}";

Text Block

String TEXT_BLOCK_JSON = """
{
    "name" : "Baeldung",
    "website" : "https://www.%s.com/"
}
""";

성능 개선

ZGC의 사용하지 않는 메모리 반환

기존의 ZGC는 오랫동안 사용되지 않던 메모리를 OS에 반환하지 않는 문제가 있었습니다. 그래서 아래와 같은 몇몇 환경에서는 좋은 방식이 아니었습니다.

  • 사용한 리소스만큼 비용을 지불하는 컨테이너 환경
  • 오랫동안 유휴 상태로 있거나 다른 애플리케이션들과 리소스를 공유하는 환경
  • 실행시에는 많은 메모리를 사용하지만, 실행 이후에는 일정한 메모리만을 사용하는 환경

이러한 환경에서도 좋은 성능을 보여주기 위해서 더 이상 사용하지 않는 메모리는 OS로 반환하되, 최소 Heap 크기는 유지하도록 개선했습니다.

참조: https://www.baeldung.com/java-13-new-features

728x90

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

Java 15  (0) 2021.10.07
Java 14  (0) 2021.09.25
Java 12  (0) 2021.09.06
Java 10  (0) 2021.08.10
JAVA 9  (0) 2020.09.06