Java 10 이후 버전의 주요 변경 사항

Java는 6개월마다 새로운 버전이 출시되면서 지속적으로 발전하고 있습니다. Java 9에서 모듈 시스템이 도입된 이후, Java 10부터는 주로 작은 변경 사항과 개선 사항들이 추가되었습니다. 여기서는 Java 10 이후 버전들의 주요 변경 사항들을 살펴보겠습니다.

Java 10 (2018년 3월 출시)

  • 지역화된 데이터 형식 (Local Variable Type Inference)
  • GC 개선 (Parallel Full GC for G1)
  • 스레드 할당 리소스 사전 예측 (Thread-Local Handshakes)
  • 응용 프로그램 데이터 스트리밍 (Application Class-Data Sharing)
  • 로컬 변수 타입 추론: var 키워드를 사용하여 컴파일러가 자동으로 변수 타입을 추론하게 합니다. 이는 코드의 가독성을 향상시키고, 더 간결한 코드 작성을 가능하게 합니다.
  • 컬렉션에 대한 복사본 생성: List, Set, Map 인터페이스에 copyOf 메소드를 추가하여 불변 컬렉션의 복사본을 생성할 수 있습니다.
  • G1 가비지 컬렉터의 개선: 가비지 컬렉션(GC) 성능을 향상시키기 위한 여러 가지 개선 사항이 도입되었습니다.
1
2
var list = new ArrayList<String>(); // 타입 추론 사용
cs

 

Java 11 (2018년 9월 출시)

  • HTTP 클라이언트 표준화 (Java HTTP Client)
  • Unicode 10 지원
  • TLS 1.3 지원
  • 런타임 모듈 단위 배치 가능 (Java Flight Recorder)
  • 람다 매개변수 스펙 지원 (Lambda Parameters Specification)
  • String 클래스의 새로운 메소드: strip, isBlank, repeat, lines 같은 새로운 메소드가 String 클래스에 추가되었습니다.
  • 람다 파라미터의 로컬 변수 문법: 람다 표현식에서 파라미터에 var를 사용할 수 있게 되었습니다.
  • HTTP 클라이언트 API: 새로운 HTTP 클라이언트 API가 표준화되어, HTTP/2 프로토콜 및 WebSocket을 지원합니다.
1
2
3
4
5
6
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
      .uri(URI.create(“http://example.com”))
      .build();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
cs

 

Java 12 (2019년 3월 출시)

  • 스위치 표현식 (Switch Expressions)
  • String의 indent 메서드 추가
  • 마이크로 벤치마크 도구 (Micro-Benchmarks)
  • Switch 표현식 (Preview): switch 문을 표현식으로 사용할 수 있게 되어, 더 간결하고 유연한 코드를 작성할 수 있게 되었습니다.

 

Java 13 (2019년 9월 출시)

  • 동적 기능 향상 (Dynamic Language Features)
  • 메모리 맵된 ByteBuffer (Memory-Mapped ByteBuffers)
  • 향상된 리마인더 계산 (Reimplement Legacy Socket API)
  • Text Blocks (Preview): 여러 줄의 문자열을 쉽게 정의할 수 있도록 Text Blocks 기능이 도입되었습니다.
1
2
3
4
5
6
7
8
String html = “”
              <html>
                  <body>
                      <p>Hello, World</p>
                  </body>
              </html>
              ““”;
cs

 

Java 14 (2020년 3월 출시)

  • Switch 표현식 개선
  • 패턴 매칭 (Pattern Matching for instanceof)
  • NullPointerException 개선
  • JFR 이벤트 스트리밍
  • 레코드 (Records)
  • Record 클래스 (Preview): 데이터를 저장하는 용도로 쓰이는 클래스를 간단하게 선언할 수 있는 Record 기능이 도입되었습니다.
  • Pattern Matching for instanceof (Preview): instanceof 연산자와 함께 패턴 매칭을 사용할 수 있게 되었습니다.
1
2
record Point(int x, int y) {}
cs

 

Java 15 (2020년 9월 출시)

  • 새로운 Garbage Collector(Z Garbage Collector)
  • 향상된 메타스페이스 할당
  • 인텔리전트 컴파일된 코드 캐싱
  • 숨겨진 클래스 지원
  • Sealed 클래스 (Preview): 클래스와 인터페이스의 상속을 제한하는 Sealed 클래스와 인터페이스가 도입되었습니다.

 

Java 16 (2021년 3월 출시)

  • Record 클래스: Record 기능이 정식 기능으로 채택되었습니다.
  • Pattern Matching for instanceof: instanceof의 패턴 매칭이 정식 기능으로 채택되었습니다.

 

Java 17 (2021년 9월 출시)

  • Sealed 클래스: Sealed 클래스와 인터페이스가 정식 기능으로 채택되었습니다.
  • 새로운 macOS 렌더러: macOS에서 자바 애플리케이션의 GUI 렌더링을 개선하기 위한 새로운 렌더러가 도입되었습니다.

 

위와 같이 Java 10 이후로는 크고 작은 변경 사항들이 지속적으로 추가되고 있습니다. 이를 통해 Java는 계속해서 성능과 생산성을 높이고 개발자 경험을 개선해 나가고 있습니다. Java 개발자라면 새로운 버전의 특징과 변경 사항들을 지속적으로 학습하는 것이 중요합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다