자바를 공부할때 관련된 자바 스펙이 JSR-123, JLS-123 처럼 암호같이 적혀있는걸 자주 봤다.

이게 무슨 기준이고 구분되며 각각 어떤 체계와 의미를 갖는지 알아봤다.

 

우선 이런 스펙의 뒤에는 '자바 커뮤니티 프로세스(JCP, Java Community Process)'가 있다는 것을 알아야 한다.

자바를 개발하는 특정 모임이기도 하며, 자바 기술에 대한 표준 스펙을 개발하기 위한 과정 자체를 말한다.
jcp.org라는 커뮤니티가 있고 그 곳에서 스펙들에 대해 논의하고 여러 과정을 거쳐 검수된 뒤 승인된다.

 

자바 강화 제안(Java Enhancement Proposal, JEP)

자바 코어 기술을 강화하기위한 제안 문서다. 이 제안들은 대부분 이어서 설명한 JSR이나 JLS같은 명세로 정리할 상태는 아니다. OpenJDK / JDK의 업데이트에 포함될 수 있는 제안 목록들이다.
채택된 JEP는 특정 JDK 릴리즈에 포함될 수 있으며, 모든 JEP가 승인되어 업데이트에 포함되는건 아니다.
JEP에 제안되는 목록들이 JDK의 로드맵이 된다.

 

일반적으로 실행 가능한 것과 실행 불가능한 것들을 나누고 명세가 생성될 수 있는 지점까지 명확하게 하기 위해 프로토타이핑이 필요하다.

자바 요청 명세서(Java Specification Request, JSR)

JCP의 새 명세를 만들기 위해 구성된 팀원들을 위해 만들어진 문서다. 일반적인 JSR의 주제는 이미 성숙된 기술과 관련이 있다. 다시 말해서 분류될 수 있는 상태에 있다.

다만 이 명세들은 항상 자바와 관련되어 있음에도 때론 명세들이 Java SE 또는 Java EE 기술의 핵심이 되지는 않는다. 

자바 언어 명세서(Java Language Specification, JLS)

자바 언어의 명세서를 뜻한다. JLS는 자바 프로그래밍 언어를 위한 문법과 정상적인/비정상적인 규칙들을 보여준다. 그리고 정상적인 프로그램을 실행하기위한 프로그램 방법들도 보여준다.



이들 간의 관계를 정리하자면 아래와 같을 것이다.

  • JEP가 지속적으로 나오고 그 JEP 중 JSR로 승격될만한 것을 선별한 다음 승격한다.
  • 이러한 JSR을 구체화 해서 버전별로 정의해둔 것이 JLS 문서이다.

출처

자바 커뮤니티 프로세스(JCP)

ko.wikipedia.org/wiki/자바_커뮤니티_프로세스

 

JLS, JSR, JEP

stackoverflow.com/questions/51282326/what-is-the-difference-or-relation-between-jls-jsr-and-jep

 

Java 8 JLS(Java Language Specification)

docs.oracle.com/javase/specs/jls/se8/html/index.html

 

JSR(Java Specification Request)

jcp.org/aboutJava/communityprocess/final/jsr376/index.html

 

JEP(Java Enhancement Proposal)

openjdk.java.net/jeps/0

 

Java 8 JLS(Java Language Specification)

docs.oracle.com/javase/specs/jls/se8/html/index.html