개발자 포포

[Java] JEP(JDK Enhancement Proposal) Java의 지속적인 개선

popo.se 2024. 9. 16. 17:48
이 글은 과거에 운영하던 블로그에서 옮겨온 글 입니다. (2021.11.05. 작성됨)

 

이번 포스팅에서는 Java가 어떤 방식으로 새로운 기능을 만들고 이를 표준을 정의하는 지에 대해 다루고자 합니다.


Java의 지속적인 개선

JCP : Java Community Process

  • 자바 플랫폼에 대한 새로운 표준기술 사양을 개발하고 개정하는 공식적인 절차입니다. Sun Microsystems에 의해 시작되었으며, Oracle이 인수한 이후에도 계속 유지되고 있습니다.
  • JCP는 자바 기술 발전에 있어 커뮤니티가 참여할 수 있는 기회를 제공합니다. 여기에는 기업, 그룹, 개인 등이 참여하여 새로운 기술을 제안하거나 표준 개발에 기여할 수 있습니다.
  • 새로운 JSR이 JCP를 통해 제안되고, 다양한 검토와 승인을 통해 자바 표준의 일부로 채택됩니다.

JSR : Java Specification Request

  • 자바 플랫폼에 새로운 기능이나 확장 또는 수정을 제안하는 정식 문서입니다. JCP 절차의 일환으로 제출되는 제안서로, 자바 API나 라이브러리의 새로운 기능 추가를 구체적으로 정의합니다.

JLS : Java Language Specification

  • JLS는 JSR 표준 스펙을 버전별로 구체화하여 예제코드와 함께 개발 방법을 정의한 문서입니다.

JEP : JDK Enhancement Proposal

  • JEP는 새로운 기능이나 개선 사항을 제안하는 문서입니다. JSR이 자바 표준과 관련된 큰 변화를 다루는 반면, JEP는 JDK 자체의 기능 개선에 집중합니다.
  • JSR은 JCP 절차를 통해 제안되는 반면, JEP는 주로 Oracle에서 관리하며, OpenJDK 커뮤니티에서 제안 및 검토를 거쳐 결정됩니다.
  • JEP는 자바 언어 자체, 라이브러리, 도구, 그리고 JVM 성능에 대한 세부적인 향상을 제안합니다.
    • JEP 378: Text Blocks (자바 13에 도입된 다중 라인 문자열 기능)
    • JEP 356: 향상된 의사난수 생성기

Preview feature

  • 특정 JEP가 충분히 구체화 되고 검토되어 구체적인 JSR을 생성하고 JLS로 발전하였지만, 영구적으로 JDK에 포함시키기엔 아직 이른 단계의 배포 방식 입니다.
  • JDK에 포함하여 배포되더라도 기본 설정은 사용하지 않게 되어있습니다. preview feature을 사용하기 위해서는 컴파일과 실행시에 다음과 같이 설정합니다.
  • javac --enable-preview --release 12 ExtandSwitch.java java --enable-preview ExtandSwitch
  • 개발자들이 스펙을 사용하고 피드백함으로써 다음 JDK 버전에서 보완됩니다.

[참고]