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 제공
반응형