Java 언어 자체 또는 JDK 기능과 관련된 제안서에는 JSR과 JEP가 있습니다. 예를 들어, Java 21에 추가된 Virtual Thread는 JEP 444에 정의돼 있고, Servlet 4.0 명세는 JSR 369에 정의돼 있습니다. 이 JSR과 JEP가 무엇인지 간단히 정리해 봅니다.
JSR (Java Specification Request)
JSR은 자바 커뮤니티 프로세스(JCP, Java Community Process)에서 새로운 기능, API 또는 개선 사항을 제안하는 공식적인 문서입니다. JCP 회원들이 제안하고, 승인되면 Java 플랫폼의 공식 사양으로 포함될 수 있습니다. JCP 공식 홈페이지의 FAQ란에 보면 JSR를 다음과 같이 설명하고 있습니다.
JSR은 Java Specification Request의 약어입니다. 이는 새로운 명세의 개발이나 기존 명세의 중요한 개정을 제안하기 위해 한 명 이상의 회원이 PMO(프로젝트 관리 조직)에 제출하는 문서입니다. 현재 JCP(Java Community Process) 프로그램 내에서 Java™ Micro Edition(Java ME™), Java™ Platform Enterprise Edition(Java EE™), Java™ Standard Edition(Java SE™)의 다음 버전을 포함한 여러 Java 기술 명세가 개발 중입니다. 또한, JSR은 이러한 제안에서 비롯된 명세 개발 활동을 의미하기도 합니다. JSR 목록을 확인하려면 전체 JSR 목록을 참조하세요.
주요 특징
- JCP에 의해 관리되며, 새로운 Java 표준을 정의하는 과정
- JSR 번호를 통해 식별됨 (예: JSR 330 - Dependency Injection for Java)
- 특정 API, 언어 기능, 라이브러리 개선 등을 제안할 수 있음
- 채택되면 Java SE, EE, ME 또는 특정 라이브러리의 일부가 될 수도 있음
예시
JEP (JDK Enhancement Proposal)
OpenJDK에서 JDK 자체의 개선 및 새로운 기능을 제안하는 문서입니다. JSR보다 가벼운 절차로 운영되며, JDK 자체의 변화(예: 성능 최적화, 언어 개선 등)에 초점을 맞춥니다. 상세한 목적과 채택 절차 등에 대해서는 JEP 1 문서에 기술돼 있습니다.
주요 특징
- OpenJDK 팀이 주도하며, 공식적인 Java SE 사양 변경이 아닌 JDK 개선을 다룸
- JSR보다 절차가 간소하며, 특정 버전에 한정된 변경이 많음
- JDK 릴리스마다 JEP 리스트가 갱신됨
예시
서로간의 관계
내용 상으로는 서로의 경계선이 비교적 명확해 보이지만, JSR과 JEP가 다루는 내용의 경계가 모호한 경우들이 있을 것은 자명해 보입니다. 예를 들어 어떤 관점에서는 Virtual Thread도 JSR에 들어갈만해 보이기 때문입니다. 관련하여 JEP 1 문서에서는 다음과 같이 이야기 하고 있습니다.
이 프로세스는 어떠한 방식으로든 Java Community Process(JCP)를 대체하지 않습니다. JCP는 모든 표준 Java SE API 및 관련 인터페이스의 관리 권한을 계속 유지합니다. 만약 이 프로세스에서 승인된 제안이 기존 표준 인터페이스를 개정하거나 새로운 인터페이스를 정의하려는 경우, 해당 변경 사항을 설계, 검토 및 승인하기 위한 병행 작업이 JCP 내에서 수행되어야 합니다. 이 병행 작업은 기존 JSR의 유지보수 검토 과정의 일부로 진행되거나, 새로운 JSR의 맥락에서 진행되어야 합니다.
이런 관점에서 JEP를 바라보면 될 거 같기는 합니다.
'알쓸신잡' 카테고리의 다른 글
Grok vs Groq (0) | 2025.02.19 |
---|---|
AI계의 메기 - DeepSeek (2) | 2025.01.28 |
샘 앨트먼, "전통적으로 이해해온 AGI를 구축하는 방법에 대해 이제 우리는 확신을 갖고 있습니다" (0) | 2025.01.07 |
open weights 의미 (2) | 2024.10.30 |
second lost updates problem에서 second는 왜 붙였을까? (5) | 2024.10.28 |