Post

Java 진화의 두 축 JEP vs JSR

Java 진화의 두 축: JEP vs JSR

Java 플랫폼은 수십 년 동안 지속적으로 발전해왔고, 그 변화의 흐름을 이끄는 두 가지 핵심 제안 시스템이 있다. 바로 JEP (JDK Enhancement Proposal)JSR (Java Specification Request) 이다. 이 글에서는 두 시스템의 차이점, 유래, 넘버링 체계까지 명확히 정리한다.


1. JEP (JDK Enhancement Proposal)

정의

JEP는 JDK Enhancement Proposal의 약자로, Java 개발 키트(JDK)의 새로운 기능이나 변경 사항을 제안하는 OpenJDK 내부 문서 체계이다.

목적

  • 새로운 기능, 언어 개선, JVM 기능 확장 등의 제안을 정리
  • OpenJDK 커뮤니티 중심의 개발 로드맵 공유 및 구현 방향 제시
  • Python의 PEP(Python Enhancement Proposal)에서 착안하여 도입

시작

  • JEP 0부터 시작 (2011년경)
  • Oracle과 OpenJDK 개발팀 주도로 설계

예시


2. JSR (Java Specification Request)

정의

JSR은 Java Specification Request의 약자로, Java 플랫폼의 공식 표준 명세를 정의하는 JCP(Java Community Process) 기반 문서이다.

목적

  • Java SE, EE, ME 플랫폼 전반의 공식 API 명세 제안 및 변경
  • Java 표준화와 생태계 확장을 위한 형식적 절차
  • 다수의 기업 및 개인이 참여하는 공개 표준화 프로세스

시작

  • JSR 1부터 시작 (1998년)
  • Sun Microsystems 시절부터 운영되어 현재까지 유지

예시


3. JEP vs JSR 넘버링 방식

항목JEPJSR
시작 번호JEP 0JSR 1
넘버링 방식OpenJDK에서 독립적으로 관리JCP에서 독립적으로 관리
서로 연동되는가?예: JEP → JSR로 이어지는 경우도 있었음반대로는 드뭄
관계현재는 JEP 중심 개발로 전환공식 명세는 여전히 JSR 기반이지만 활동은 미미

중요:

JEP의 번호는 JSR의 마지막 번호 이후로 시작된 것이 아니라, 전혀 별개로 독립적으로 부여된 체계이다.

즉, JEP 1은 JSR 381 이후가 아닌 JEP 0부터 새롭게 시작된 것이다.


4. 현재의 흐름: JEP 중심 체계로 이동

Java 9 이후부터는 플랫폼의 민첩한 발전을 위해 JEP 중심의 설계 및 구현 프로세스가 주도되고 있으며, JSR은 과거 Java 표준의 중심이었지만, Jakarta EE에서는 더 이상 사용되지 않고 있으며, 현재는 각 플랫폼(Eclipse, OpenJDK)이 자체 명세 체계를 통해 진화하고 있다.

  • JSR(Java Specification Request)는 더 이상 Java EE / Jakarta EE 표준으로 사용되지 않는다.
  • Java EE → Jakarta EE 이관 이후부터는, JCP(JCP.org) 대신 Eclipse Foundation이 자체 명세 프로세스를 통해 표준을 관리
  • Java SE 일부 기능만 JSR로 남아 있으나, 실질적으로 JEP 중심으로 전환

JCP는 폐쇄적이고 느린 표준화 프로세스였고, Oracle이 Java EE를 Eclipse Foundation에 기증하면서, 다음과 같이 선언하였다.

⚠️ “JSR을 통한 명세 관리는 Jakarta EE에서 더 이상 사용하지 않겠다”


5. JEP vs JSR 정리

항목JEPJSR
이름JDK Enhancement ProposalJava Specification Request
역할JDK 기능 제안/설계/실험Java 플랫폼 공식 명세
관리 주체OpenJDK (Oracle)JCP (Java Community Process)
시작 번호01
도입 시기2011년경1998년경
현재 주류✅ 활발히 사용됨❌ 거의 중단됨

실무에서 JEPJSR은 직접 “작성”하거나 “제출”하는 것이 아니라, 기능 이해, 기술 선정, 문서 작성 시에 참고하고 인용하는 용도로 활용됩니다. 각각의 성격이 다르기 때문에, 언제 어떤 문맥에서 JEP 또는 JSR을 언급하는 게 적절한지 알려드릴게요.


6. 실무에서의 의사소통 관점

상황사용 용어설명
Java 버전별 기능 변화 설명✅ JEP개발자들과 명확한 버전 변화 공유 가능
API 명세 기반 설계/개발✅ JSR공식 스펙에 기반한 설계 표기
프레임워크나 라이브러리 평가✅ JSR“어떤 JSR 구현체냐?” 기준으로 비교
기술 도입 회의 또는 교육✅ JEP & JSR 병행도입기술이 실험적이면 JEP, 표준이면 JSR로 구분

✍️ 한 줄 요약

JEP는 “왜 이 기능이 생겼는지” 설명할 때, JSR은 “이 기능이 어떤 표준을 따르는지” 설명할 때 사용하자.

실무에서 JEP와 JSR을 잘 인용하면 기술적 신뢰도와 커뮤니케이션 효율이 크게 올라간다.


🔗 공식 목록 링크

This post is licensed under CC BY 4.0 by the author.