Java
[Java] Java 11 특징
kittity
2025. 1. 30. 16:28
Java 11은 2018년 9월에 출시된 LTS(Long Term Support) 버전으로 Java 11에서 추가된 기능과 특징에 대해 정리해보고자한다. 주요 특징에 대해 정리하면 다음과 같다.
- Collection Factory Method 강화
- var 키워드 추가
- 문자열 관련 Method 추가
- Reactive Stream
- ZGC(Z Garbage Collector) 추가
위의 항목을 하나씩 살펴보자.
1. Collection Factory Method 강화
- Java9에서 도입된 기능이 강화되었다.
- List, Set, Map과 같이 컬렉션을 생성할 수 있는 factory method를 사용할 수 있다.
- of()를 통해 예시와 같이 생성 가능하며, 이때 생성 된 것은 불변하다.
- 참고)
- 불변 List에 추가/삭제 작업을 하려면 new ArrayList<>(list) 를 사용해야한다.
- 불변 List에 add(), remove() 등 수정 작업을 시도하면 UnsupportedOperationException이 발생한다.
- 예시
// immutable (불변) Set<String> set = Set.of("A", "B", "C"); List<String> list = List.of("A", "B", "C"); Map<String, String> map = Map.of( "A", "Apple", "B", "Banana", "C", "Coconut" ); // 불변을 변하게 Set<String> setResult = new HashSet<>(set); List<String> listResult = new ArrayList<>(list); Map<String, String> mapResult = new HashMap<>(map) map.put("D", "Donut");
2. var 키워드 추가
- 로컬 변수의 타입 명시 없어도 추론 가능한 var 키워드가 추가되었다.
- 단, 멤버 변수 또는 Method 파라미터로는 선언이 불가능하다.
3. 문자열 관련 Method 추가
- 문자열을 다루는 Method가 새로 추가되었다.
- 추가된 Method
- isBlank() : 문자열이 비어있거나, 공백이면 True 반환
- 비교) isEmpty()는 공백일때는 False 반환 ex) “ “
- lines(): 줄 단위로 나뉘어 있는 문자를 배열로 반환
- strip(): 문자열 공백 제거
- stripLeading(): 문자열 앞의 공백 제거
- stripTrailing(): 문자열 뒤의 공백 제거
- repeat(): 문자열을 파라미터로 주어진 횟수만큼 반복
- isBlank() : 문자열이 비어있거나, 공백이면 True 반환
- 예시
public static void isBlankMethod() { "".isBlank(); // true "HN".isBlank(); // false } public static void linesMethod() { "Apple\nBanana\nCoconut".lines().toArray(); // [Apple, Banana, Coconut] } public static void stripMethod() { " HN ".strip(); // HN " HN ".stripLeading(); // HN " HN ".stripTrailing(); // HN } public static void repeatMethod() { "HN ".repeat(3); // HN HN HN }
4. Reactive Stream
- Reactive Stream은 비동기로 데이터 스트림을 처리하는 방식이다.
- Publisher-Subscriber 모델 구현하였다.
- 데이터를 소비하는 쪽에서 처리할 수 있는 만큼만 데이터를 요청하는 Back Pressure를 통해 데이터 흐름 제어가 가능하다.
- Non-Blocking 방식으로 데이터를 처리한다.
5. ZGC(Z Garbage Collector) 추가
- 대용량 힙 메모리를 효율적으로 처리하기 위해 설계된 확장 가능한 저지연 가비지 컬렉터이다.
- GC로 인한 애플리케이션 중단 시간(Stop-the-world)로 인한 성능 저하를 개선하기 위해 추가되었으며 10ms 이내로 유지한다.
- 8MB ~ 16TB 의 힙메모리를 지원한다.
- GC 작업을 병렬 처리로 동시에 처리가 가능해 성능이 향상되었다.
- 사용 예시
java -XX:+UseZGC -jar DemoApplication.java
728x90