반응형
오라클에서 Java 23 을 새롭게 출시하였다.
많은 뉴스에 기사도 실린 이 내용은 또 다른 자바에 대해서 강력함을 보여주었다.
공식 발표 글은 아래와 같다.
https://www.oracle.com/kr/news/announcement/oracle-releases-java-23-2024-09-17/
그리고 오라클 공식 사이트에서 다운도 가능하다.
https://www.oracle.com/kr/java/technologies/downloads/
주요 변경사항들에 대해서는 아래와 같다.
- 프로젝트 앰버(Project Amber)를 통한 언어 기능
- JEP 455: 패턴, 인스턴스오브(instanceof), 스위치의 기본 타입(미리보기)
언어를 더욱 일관되고 표현력 있게 만들어 자바 프로그래밍 생산성 향상을 지원한다.
패턴 매칭, 인스턴스오브, 스위치 사용 시 개발자가 직면하는 기본 유형 관련 제한 사항을 제거하고, 모든 패턴 컨텍스트에 대해 기본 유형 패턴을 허용하여 패턴 매칭을 개선한다.
또한 인스턴스오브 및 스위치를 확장해 모든 기본 유형과 호환될 수 있도록 한다. - JEP 476: 모듈 가져오기 선언(미리보기)
모듈이 내보내는 모든 패키지를 개발자가 신속하고 손쉽게 가져올 수 있도록 지원해 개발자 생산성을 개선한다.
이때 모듈 자체에 코드를 가져올 필요가 없다.
이 기능은 모든 개발자가 모듈러 라이브러리를 간편하게 재사용할 수 있도록 하며, 초보자의 경우 패키지 계층 내 각각의 위치를 익히지 않고도 서드파티 라이브러리와 기본 자바 클래스를 쉽게 사용할 수 있다. - JEP 477: 암시적으로 선언된 클래스 및 인스턴스 메인 메서드(세 번째 미리보기)
학생들이 대규모 프로그램 개발을 위해 설계된 언어 기능을 이해할 필요 없이 첫 자바 프로그램을 작성할 수 있도록 하여 자바 프로그래밍 진입 장벽을 낮추고 학습 및 기술 개발을 원활하게 해 준다.
이를 통해 교육자는 점진적인 방식으로 관련 개념을 소개할 수 있고, 학생은 먼저 단일 클래스 프로그램에 대한 간소화된 선언을 작성한 후 프로그래밍 실력이 성장함에 따라 보다 고급 기능을 사용해 프로그램을 원활하게 확장할 수 있다.
숙련된 자바 개발자들 역시 대규모 프로젝트를 위해 설계된 도구를 사용하지 않고도 소규모 프로그램을 간결하게 작성할 수 있다. - JEP 482: 유연한 생성자 본문(두 번째 미리보기)
명시적인 생성자 호출 super(..), this(..) 등의 앞에 명령문이 나타나게해 개발자 생산성을 높여준다.
명령문은 생성 중인 인스턴스를 참조할 수 없지만 다른 생성자를 호출하기 전에 해당 필드를 초기화할 수 있다.
이 과정은 메서드가 재정의될 때 클래스의 안정성을 향상시킨다.
이를 통해 개발자는 생성자의 동작을 보다 자유롭게 표현할 수 있으며, 클래스 인스턴스화 중에 생성자가 하향순으로 실행된다는 기존 보장도 유지할 수 있다.
- JEP 455: 패턴, 인스턴스오브(instanceof), 스위치의 기본 타입(미리보기)
- 라이브러리
- JEP 466: 클래스-파일 API(두 번째 미리보기)
자바 클래스 파일의 구문 분석(parsing), 생성, 변환용 표준 API를 제공하여 개발자의 생산성 향상에 도움을 준다. - JEP 469: 벡터 API(8차 인큐베이터)
지원되는 CPU 아키텍처에서 벡터 명령어로 런타임에 안정적으로 컴파일되는 벡터 계산을 표현하는 API를 도입하여 개발자의 생산성을 향상시킨다.
그 결과, 개발자는 동등한 스칼라 계산보다 우수한 성능을 달성할 수 있다. - JEP 473: 스트림 수집기(두 번째 미리보기)
스트림 API를 개선해 스트림 파이프라인이 기존의 내장형 중간 연산으로는 달성하기 어려운 방식으로 데이터를 변환할 수 있는 커스텀 중간 연산을 지원하고 개발자의 생산성 향상에 기여한다.
이 기능은 스트림 파이프라인을 더욱 유연하고 표현하기 쉽게 만들고, 커스텀 중간 연산을 통해 무한한 용량의 스트림을 조작할 수 있도록 해 개발자가 보다 효율적으로 자바 코드를 읽고, 쓰며 유지 관리할 수 있도록 한다. - JEP 480: 구조화된 동시성(세 번째 미리보기)
구조화된 동시성을 위한 새로운 API를 통해 동시 프로그래밍을 간소화하여 개발자가 동시성 코드의 유지관리 용이성, 안정성, 관찰 가능성을 개선할 수 있도록 한다.
구조화된 동시성은 다양한 스레드에서 실행되는 관련 작업 그룹을 단일 작업 단위로 통합하여 스레드 유출 및 취소 지연 등 취소 및 종료로 인해 발생하는 일반적인 위험을 제거한다. - JEP 481: 범위가 지정된 값(세 번째 미리보기)
스레드 내 또는 스레드 간에 변경 불가능한 데이터를 공유할 수 있도록 지원하여 개발자 프로젝트의 사용 편의성, 이해 가능성, 성능, 견고성을 향상시킨다.
- JEP 466: 클래스-파일 API(두 번째 미리보기)
- 성능 및 런타임 업데이트
- JEP 474: ZGC: 세대별 모드를 기본 모드로 전환
개발자가Z 가비지 컬렉터(ZGC) 모드의 기본 모드를 세대별 모드로 전환하여 효율성을 높일 수 있도록 지원한다.
모드 전환으로 두 개의 다른 모드 지원에 필요한 리소스 및 유지 관리 비용을 줄일 수 있다.
- JEP 474: ZGC: 세대별 모드를 기본 모드로 전환
- 도구
- JEP 467: 마크다운 문서화 주석
자바독(Javadoc) 문서화 주석을 HTML 및 자바독 @-태그로만 작성하는 대신 마크다운(Markdown)으로 작성할 수 있게 해 개발자의 효율성과 생산성을 높여준다.
마크다운 문법을 문서화 주석에 사용할 수 있게 됨으로써, 개발자는 API 문서화 주석을 소스 형태로 더 쉽게 작성하고 읽을 수 있으며, 기존 문서화 주석의 해석에 부정적인 영향을 미치지 않는다.
- JEP 467: 마크다운 문서화 주석
- 스튜어드십(Stewardship)
- JEP 471: 향후 삭제를 위한 sun.misc.unsafe의 메모리 접근 메서드 제거
향후 릴리스에서 제거될 예정인 sun.misc.unsafe의 메모리 접근 메서드에 애플리케이션이 직간접적으로 의존하는 지점을 파악하여 개발자에게 간소화된 툴셋을 제공한다.
- JEP 471: 향후 삭제를 위한 sun.misc.unsafe의 메모리 접근 메서드 제거
반응형
'IT > Knowledge' 카테고리의 다른 글
프림(Prim) 알고리즘 (13) | 2024.10.01 |
---|---|
다익스트라 알고리즘(Dijkstra) (18) | 2024.09.29 |
인공지능의 4단계 (20) | 2024.09.25 |
CloudType 사용하기 (9) | 2024.09.24 |
CloudType (9) | 2024.09.23 |
댓글