성장과정(dev)/Spring + Java + JPA
nodeJS 개발자에서 다시 JAVA 개발자로, Java 9 ~ Java21 주요 변경사항들
lowellSunny
2024. 10. 24. 11:00
Java8 시절까지 java 개발자였는데 마지막으로 java로 개발한지 4년, 아주 많은 것이 바뀌었더라.
신규 기능 중 주요 기능들만 요약해봤다.
1. var 키워드 (Java 10)
- 지역 변수 타입 추론을 가능하게 하여, 변수를 선언할 때 타입을 생략하고도 컴파일러가 자동으로 타입을 추론
var list = new ArrayList<String>();
2. HttpClient API (Java 11)
- 새로운 HTTP 클라이언트 API로, HTTP 요청을 더 간단하게 처리할 수 있습니다. 비동기 요청과 HTTP/2, WebSocket 지원도 포함
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.build();
3. String API 개선 (Java 11)
- String 클래스에 유용한 메서드들이 추가
- isBlank(): 공백 문자열 확인
- lines(): 줄 단위로 문자열 분리
- strip(): 앞뒤 공백 제거
- repeat(): 문자열 반복
4. Switch Expressions (Java 14, 정식 도입은 Java 14)
- switch 문을 표현식으로 사용할 수 있어 간결
int result = switch (day) {
case MONDAY -> 1;
case TUESDAY -> 2;
default -> 0;
};
5. Records (Java 16)
- 간단한 불변 데이터 클래스를 생성하는 기능으로, 데이터 전송 객체를 쉽게 만들 수 있음
public record Point(int x, int y) {}
6. Pattern Matching for instanceof (Java 16)
- instanceof 사용 시 자동으로 타입 캐스팅이 가능
if (obj instanceof String s) {
System.out.println(s.toLowerCase());
}
7. Sealed Classes (Java 17)
- 클래스 상속을 제한하는 기능으로, 특정 클래스들만 상속을 허용
public sealed class Shape permits Circle, Square {}
8. Virtual Threads (Java 19, 정식 도입은 Java 21)
- 가상 스레드로, 경량화된 쓰레드를 생성할 수 있으며, 대규모 동시성 작업에 최적화되어있음