Java/Version

Java 12

창욱씨 2021. 9. 6. 21:15
반응형

Java 12 주요 특징

Java 12는 2019년 3월에 출시된 단기 지원(STS) 버전입니다.


🆕 새로운 언어/API 기능

1. Switch Expressions (Preview) — JEP 325

switch를 문(statement) 뿐 아니라 식(expression) 으로 사용 가능 (프리뷰 기능)

// 기존 방식
int numLetters;
switch (day) {
    case MONDAY:
    case FRIDAY:
        numLetters = 6;
        break;
    default:
        numLetters = -1;
}

// Java 12 새로운 방식 (화살표 표현식)
int numLetters = switch (day) {
    case MONDAY, FRIDAY -> 6;
    case TUESDAY        -> 7;
    default             -> -1;
};

2. String 신규 메서드

메서드 설명
indent(int n) 각 줄에 공백 n개 추가/제거 후 반환
transform(Function f) 문자열에 함수를 적용하여 변환
String result = "hello\nworld".indent(4);
// "    hello\n    world\n"

String upper = "hello".transform(String::toUpperCase);
// "HELLO"

3. Files.mismatch() — JEP 202

두 파일을 비교하여 첫 번째로 다른 바이트 위치를 반환

long pos = Files.mismatch(Path.of("a.txt"), Path.of("b.txt"));
// 두 파일이 동일하면 -1 반환

4. Collectors.teeing() — JEP ?

하나의 스트림을 두 개의 Collector로 동시에 처리한 뒤 결과를 합침

var result = Stream.of(1, 2, 3, 4, 5)
    .collect(Collectors.teeing(
        Collectors.summingInt(Integer::intValue),  // 합계
        Collectors.counting(),                      // 개수
        (sum, count) -> sum + "/" + count
    ));
// "15/5"

⚙️ JVM / 성능 개선

5. Shenandoah GC (실험적) — JEP 189

  • 정지 시간을 최소화하는 저지연 GC
  • GC 작업을 애플리케이션 스레드와 동시에 실행

6. G1 GC 개선 — JEP 344, 346

  • Abortable Mixed Collections: G1이 목표 정지 시간을 초과하면 중단 가능
  • Promptly Return Unused Committed Memory: 유휴 메모리를 OS에 즉시 반환

7. JVM Constants API — JEP 334

  • java.lang.invoke.constant 패키지 추가
  • 클래스 파일 상수 풀 요소를 명목적으로 표현하는 API 제공
반응형