본문 바로가기
IT/JAVA & Eclipse

JAVA 22 업데이트

by 네야나라 2024. 3. 26.
반응형

최근 개발자 커뮤니티에서 보면 자바 사용자가 줄어들고 있습니다. 하지만 여전히 파이썬에 비하면 더 빠르고 사용자 층도 많으며 엔터프라이즈급에서는 아직도 많이 사용되고 있는 언어입니다. 자바는 오라클에서 인수한 뒤에 주기적으로 업데이트를 거쳐 현재는 22버전까지 나오게 되었습니다.

 

그러면 이번 업데이트의 주요 사항을 살펴보도록 하겠습니다.

이번 JDK 22의 주요 개선 사항은 총 12개 입니다. 이 중 7개는 프리뷰 기능이며 하나는 아직 인큐베이터 기능입니다.

 

1. 언어 개선 사항

  • JEP 456: 언네임드 변수 및 패턴
    변수 선언이나 중첩된 패턴이 필요하지만 사용되지 않을 때 가독성을 향상시킵니다. 둘 다 밑줄 문자로 표시됩니다.
  • JEP 447: super(...) 앞의 명령문 (프리뷰)
    생성자에서 생성되는 인스턴스를 참조하지 않는 문장이 명시적 생성자 호출 이전에 나타날 수 있도록 허용합니다. 보조 정적 메소드, 보조 중간 생성자, 또는 생성자 인자로 분리되어야 하는 로직을 더 자연스럽게 배치할 수 있도록 하여 개발자가 더욱 자유롭게 생성자의 동작을 표현할 수 있도록 만들어 줍니다.

  • JEP 459: 문자열 템플릿 (프리뷰)
    문자열 템플릿은 리터럴 텍스트와 내장된 표현식 및 템플릿 프로세서를 결합하여 특수한 결과를 생성함으로써 Java의 기존 문자열 리터럴 및 텍스트 블록을 보완합니다. 실행 시간에 계산된 값을 포함하는 문자열을 표현하기 쉽게 함으로써 Java 프로그램 작성을 단순화합니다. 또한,  텍스트와 표현식이 혼합된 표현의 가독성을 향상시켰습니다. 그리고  템플릿 및 내장된 표현식의 값에 대한 검증 및 변환을 지원함으로써 사용자가 제공한 값으로 문자열을 구성하고 다른 시스템(예: 데이터베이스에 대한 쿼리 구성)에 전달하는 Java 프로그램의 보안을 개선합니다. 

  • JEP 463: 암시적으로 선언된 클래스 및 인스턴스 메인 메소드 (프리뷰)
    학생들이 대규모 프로그램을 위해 설계된 언어 기능을 이해할 필요 없이 첫 Java 프로그램을 작성할 수 있도록 만들어 줍니다. 학생들은 단일 클래스 프로그램을 위한 간소화된 선언을 작성한 다음, 기술이 늘게 되면 더 고급 기능을 사용하여 프로그램을 원할하게 확장할 수 있습니다. 이는 학습 속도를 높여줄 것입니다.

2. 라이브러리

  • JEP 454:  외부 함수 및 메모리 API
    Java 프로그램이 Java 런타임 외부의 코드와 데이터와 상호 작용할 수 있게 합니다. 외부 함수(즉, JVM 외부의 코드)를 효율적으로 호출하고 외부 메모리(즉, JVM이 관리하지 않는 메모리)에 안전하게 접근함으로써, API는 Java 프로그램이 네이티브 라이브러리를 호출하고 네이티브 데이터를 처리할 수 있도록 하여 JNI의 부실함과 위험을 없앱니다.

  • JEP 457: 클래스-파일 API (프리뷰)
    Java 클래스 파일을 파싱, 생성, 변환하기 위한 표준 API를 제공합니다. (Preview API 살펴보기)
  • JEP 461: 스트림 수집기 (프리뷰)
    스트림 API를 강화하여 사용자 지정 중간 연산을 지원합니다. 이를 통해 스트림 파이프라인이 기존의 내장 중간 연산으로 쉽게 달성할 수 없는 방식으로 데이터를 변환할 수 있습니다.
  • JEP 462: 구조화된 동시성  (프리뷰)
    동시 프로그래밍을 단순화합니다. 구조화된 동시성은 서로 다른 스레드에서 실행되는 관련 작업 그룹을 단일 작업 단위로 취급하여, 오류 처리와 취소를 간소화하고, 신뢰성을 향상시키며, 관찰 가능성을 높입니다.

  • JEP 464: 범위가 지정된 값 (프리뷰)
    스레드 내부 및 스레드 간에 불변 데이터를 효율적으로 공유할 수 있도록 합니다.

  • JEP 460: 벡터 API (인큐베이터)
    지원되는 CPU 아키텍처에서 실행 시 최적의 벡터 명령어로 신뢰성 있게 컴파일되는 벡터 계산을 표현할 수 있는 API로, 동등한 스칼라 계산보다 우수한 성능을 달성합니다.배열의 바이트 대신 어떤 기본 요소 유형의 배열로 백업된 힙 MemorySegments를 사용한 벡터 접근을 지원합니다. 이전에는 바이트 배열로 백업된 힙 MemorySegments에 대한 접근만 가능했습니다. 이 JEP는 JDK 22에서 API를 다시 인큐베이트하고, JDK 21 대비 API에서 소소한 개선을 제안합니다. 구현에는 버그 수정 및 성능 개선이 포함됩니다.

3. 성능

  • JEP 423: G1용 영역 고정
    Java Native Interface (JNI) 크리티컬 영역을 비활성화 할 필요 없이 가비지 컬렉션이 가능하게 됩니다. 이는 대기 시간을 줄여 성능을 향상합니다.

4. 툴

  • JEP 458: 다중 소스 코드 프로그램 수행
    사용자가 Java 소스 코드의 여러 파일로 제공된 프로그램을 먼저 컴파일하지 않고도 실행할 수 있게 합니다. 이는 빌드 도구의 구성을 언제, 어떻게 할지 선택할 수 있게 만들어 개발자의 생산성을 향상시킵니다.
반응형