[F-Lab 모각코 챌린지] 38일차 - 자바의 표준화 (JCP, JSR, JEP)

F-Lab 모각코 챌린지 38일차-자바의 표준화 우리는 오픈소스 형태의 Java 를 사용하고 있다. 하지만 대부분의 글 들에서는 'Java 의 새로운 기능' 혹은 'Java 의 업데이트 정리' 라는 형태로 '공통적인' 자바의 업데이트를 기록하고 있다. 오픈소스로 운영되는 자바가, 어떻게 공통적인 업데이트 기록을 가질 수 있었을까?

[F-Lab 모각코 챌린지] 38일차 - 자바의 표준화 (JCP, JSR, JEP)

본래 Java 9~17 을 정리하려 했으나, 중간에 궁금증이 생겼다.

우리는 오픈소스 형태의 Java 를 사용하고 있다

하지만 대부분의 글 들에서는 'Java 의 새로운 기능' 혹은 'Java 의 업데이트 정리' 라는 형태로 '공통적인' 자바의 업데이트를 기록하고 있다.

오픈소스로 운영되는 자바가, 어떻게 공통적인 업데이트 기록을 가질 수 있었을까?

그 질문에 대해 답을 찾아본다.

Java 의 변화

Java 8 까지는 오라클(자바의 본래 소유권 회사는 Sun Microsystems) 이 관리하며 주기적인 무료 업데이트를 진행 했다. 물론 2006 년에 본래 소유권을 가진 회사인 썬 마이크로 시스템즈는 OpenJDK 라는 것을 발표하며 자바를 오픈소스로 만들었었다.

하지만 오라클은 Java 버전 9 부터 '상용 Java 유료화' 정책을 발표했다

개발자들은 Java 9 이후에 상용버전으로 Java 언어를 사용 할 경우 오라클에게서 상용 라이센스를 구매해야 했다

하지만 OpenJDK 가 존재하는 Java 는 결국 오픈 소스로서의 발전을 거듭했는데, 이 과정에서 많은 이해관계자들이 자바의 유지보수를 수행했다.

Java 커뮤니티(JCP)와 자바 스펙 요구서(JSR)

그렇다면, 각 이해관계자들이 어떻게 자바의 업데이트 사항을 일관적으로 맞출 수 있었을까?

Java 표준 스팩 요구서(Java Specification Request) 라는 공식문서가 자바 플랫폼에 추가된 사양 및 기술들을 명시하고 있기 때문이다.

Java Specification Request(JSR) 은 Java Community Process 라는 표준화 과정이 존재하기 때문인데 이 안에는 여러 이해관계자들이 자바에 대한 아이디어를 JSR 을 통해 제시한다. (JSR 요청 목록 확인 페이지 링크)

제시된 의견은 JCP 의 최상위 커뮤니티에서 투표를 통해 자바 버전의 표준이 정해지게 되며 이를 각 배포처(Zulu, Tencent, Oracle, JetBrains, Corretto, Microsoft) 에서 표준 스펙을 따라 만들게 된다

그렇기 때문에 자바를 버전업 하는 곳은 달라도 비슷한 스펙의 업데이트가 진행되는 것이다. (물론 세부적인 구현은 다른데, 이건 직접 찾아보자)

JDK Enhancement Proposal (JEP)

JDK Enhancement Proposal 은 Oracle 에서 주도적으로 제안되고 작성하는 개선안 이다.

JEP 는 위에서 설명한 JCP 에서 공개적으로 진행되며 스펙으로 논의 된다

JEP 는 결과적으로 Java 의 상세한 스펙을 담고 있다. 예를 들어 Java 17 에서 개선된 Sealed Classes 의 JEP 를 보면, 개선안에 대해 정말 상세히 다루고 있는 것을 볼 수 있다

JEP 409: Sealed Classes

이 제안서를 작성 한 사람인 Gavin Bierman 는 Oracle Labs UK 의 기술 컨설팅 멤버인데, 이를 보면 Oracle 의 꾸준한 관리와 JCP 의 논의. 그리고 JSR 로 인해 우리가 사용하는 Java 가 계속해서 업데이트 되고 있다는 것을 알 수 있다