성장과정(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)

  • 가상 스레드로, 경량화된 쓰레드를 생성할 수 있으며, 대규모 동시성 작업에 최적화되어있음