Java 8 이후, 주요 변경사항

Jindolph·2024년 8월 6일

자바 8 이후 자바 21까지의 주요 변경사항

여기서는 자바 8 이후 각 버전에서 최종 지원된 주요 기능만을 요약하여 정리하였습니다. Javascript, Python의 강세로 자바도 트렌드에 밀리지 않기 위해서 많은 변경사항이 있었습니다.
아직까지도, 현업에서는 자바 8을 주력으로 사용하지만 11, 17, 21 LTS 버전마다 유용한 핵심 변경들이 있으므로 사용해보는 것도 좋아보입니다.

개인적으로 문법에서 제일 눈에 띄었던 건 switch 의 대폭 변경과, 레코드 도입이었습니다.
레코드는 objectmapper 등 라이브러리 사용 시 일반 class POJO 사용에 비해 신경써야 하는 부분이 많아, 개인적으로 진행했던 샘플 프로젝트에서는 시범도입 했지만 다 롤백시켰습니다...
(그래도 여러 용도로 유용해 보이긴 합니다.)

자바 9 (2017년 9월)

  1. 모듈 시스템 (Project Jigsaw): JDK를 모듈화하여 더 작은 단위로 나누고 관리 가능.
  2. JShell (REPL): 자바의 대화형 프로그래밍 도구.
  3. 새로운 HTTP/2 클라이언트 API: java.net.http 패키지에서 제공.

자바 10 (2018년 3월)

  1. 로컬 변수 타입 추론 (var): 지역 변수의 타입을 var 키워드를 사용하여 추론.

자바 11 (2018년 9월)

  1. 새로운 String 메서드: isBlank(), lines(), strip(), repeat().
  2. HTTP 클라이언트 API 정식 도입: 자바 9에서 도입된 HTTP 클라이언트 API의 정식 버전.

자바 12 (2019년 3월)

  1. 새로운 Switch 표현식: switch 문을 표현식으로 사용할 수 있는 기능 추가.

자바 13 (2019년 9월)

  1. 텍스트 블록: 여러 줄의 문자열을 간단하게 작성할 수 있는 기능.

자바 14 (2020년 3월)

  1. 레코드 (Records): 불변 데이터 클래스를 간단하게 정의할 수 있는 기능.
  2. NullPointerExceptions 개선: NPE 발생 시 어떤 변수가 null인지 명확하게 표시.

자바 15 (2020년 9월)

  1. Sealed 클래스: 상속 구조를 제한하여 유지보수성을 높이는 기능.

자바 16 (2021년 3월)

  1. 패턴 매칭 for instanceof: instanceof 연산자를 더 간결하게 사용 가능.
  2. 레코드의 정식화: 레코드 기능이 정식으로 포함.

자바 17 (2021년 9월) - LTS

  1. Sealed 클래스의 정식화: 상속 구조를 제한하는 기능의 정식 도입.
  2. 강력한 강제 접근 제어: SecurityManager의 비활성화 및 deprecate.

자바 18 (2022년 3월)

  1. Simple Web Server: 간단한 HTTP 파일 서버 기능.

자바 19 (2022년 9월)

  1. Virtual Threads (가상 스레드): 경량 스레드 제공.
  2. Record Patterns (레코드 패턴): 레코드 타입 매칭 및 필드 접근 간소화.

자바 20 (2023년 3월)

  1. Scoped Values: 특정 스레드 컨텍스트에서 값의 범위 지정 기능.
  2. Structured Concurrency: 구조적 동시성 기능을 도입하여 동시 실행 작업의 관리를 간소화.

자바 21 (2023년 9월) - LTS

  1. Virtual Threads (가상 스레드): 경량 스레드의 정식 도입.
  2. Pattern Matching for switch: switch 문에서 다양한 타입과 조건을 매칭 가능.
  3. Record Patterns: 레코드 패턴 기능의 정식 도입.
  4. String Templates: 문자열 템플릿 기능 도입.
  5. Sequenced Collections: 순차 컬렉션을 지원.
  6. Generational ZGC: 세대별 ZGC(가비지 컬렉터) 도입.

참고자료

OpenJDKJava 공식 사이트

profile
Hello World!

0개의 댓글