OpenJDK

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

OpenJDK는 썬 마이크로시스템즈가 2006년에 발표하고 2007년에 릴리스한 오픈 소스 자바 플랫폼 구현체이다. 핫스팟 가상 머신, 자바 클래스 라이브러리, 자바 컴파일러(javac) 등을 포함하며, 다양한 운영 체제와 아키텍처를 지원한다. 썬은 OpenJDK를 통해 자바를 자유 소프트웨어로 전환하려 했으며, IBM, 애플, SAP 등 여러 기업이 개발에 참여했다. 현재는 오라클, 아마존, 마이크로소프트 등 다양한 조직에서 OpenJDK 빌드를 제공하고 있으며, IcedTea 프로젝트를 통해 자유 소프트웨어 배포판에 번들로 제공되기도 한다.

OpenJDK - [IT 관련 정보]에 관한 문서
기본 정보

이미지 준비중입니다.

OpenJDK 로고
개발선 마이크로시스템즈(오라클이 인수)
개발자오라클, OpenJDK 및 Java 커뮤니티, 레드햇, 아줄 시스템즈, IBM, 마이크로소프트, 아마존, 애플, SAP
최초 릴리스2007년 5월 8일
운영체제리눅스, FreeBSD, macOS, 마이크로소프트 윈도우, 오픈인디아나, OpenVMS; 일부 기타 포팅 진행 중
프로그래밍 언어C++ 및 자바
장르자바 플랫폼 개발 키트
라이선스GPL-2.0-only와 링킹 예외
웹사이트OpenJDK 공식 웹사이트
추가 정보
지원 상황오라클사에서 개발 중
📚 더 읽어볼만한 페이지
  • 자바 가상 머신 - 핫스팟 (가상 머신)
    핫스팟은 오라클의 자바 런타임 환경에 포함된 가상 머신으로, 반복되는 코드 영역을 최적화하는 JIT 컴파일러이며, 1999년 출시 후 GNU GPL 라이선스로 사용 가능하다.
  • 자바 가상 머신 - 안드로이드 런타임
    안드로이드 런타임(ART)은 안드로이드 운영 체제에서 애플리케이션 실행을 위한 런타임 환경이며, AOT 컴파일을 통해 실행 효율성을 높이고 전력 소비를 줄이는 장점을 가진다.
  • 자바 (프로그래밍 언어) - 자바 애플릿
  • 자바 (프로그래밍 언어) - 자바FX
    JavaFX는 자바 기반의 UI 구축 플랫폼으로, 다양한 플랫폼을 지원하며 풍부한 UI 기능들을 제공하고, Java 8부터 JDK에 포함되었다가 JDK 11부터 분리되어 관리된다.
  • 자유 가상화 소프트웨어 - LXC
    LXC는 리눅스 커널의 cgroup과 네임스페이스 격리 기능을 이용하여 운영 체제 수준의 가상화를 제공하는 기술로, IBM 연구원들이 개발했으며 보안 강화 및 LXD 컨테이너 관리자 프로젝트를 통해 발전해왔다.
  • 자유 가상화 소프트웨어 - 커널 기반 가상 머신
    커널 기반 가상 머신(KVM)은 리눅스 커널의 가상화 확장 기능으로, CPU와 메모리 가상화를 지원하며 QEMU와 함께 완전한 가상화 솔루션을 구성하고 다양한 관리 도구를 제공한다.

2. 역사

썬 마이크로시스템즈가 자바원 2006에서 자바를 오픈 소스 소프트웨어로 만들겠다고 발표하면서 OpenJDK 프로젝트가 시작되었다. 이후 레드햇, 마이크로소프트와 Azul Systems, BellSoft, 구글등 여러 회사 및 커뮤니티의 지속적인 개선을 거치면서 발전하였다.

2010년 10월 11일에는 아파치 하모니 프로젝트의 주요 참여자였던 IBM오라클과 함께 OpenJDK 프로젝트에 참여하기로 결정하고, 하모니에서 OpenJDK로 개발 노력을 전환하기로 하면서 OpenJDK 프로젝트에 큰 변화를 가져왔다.

2010년 11월 12일 애플은 오라클과 함께 Mac OS X용 OpenJDK 프로젝트를 발표했다. 2011년 7월에는 SAP AG가 공식적으로 OpenJDK 프로젝트에 합류하였다.

2.1. 썬 마이크로시스템즈의 약속과 초기 릴리스

썬 마이크로시스템즈는 자바원 2006에서 자바를 오픈 소스 소프트웨어로 만들겠다고 발표했고, 2006년 10월 25일, 오라클 오픈월드 컨퍼런스에서 조나단 슈워츠는 핵심 자바 플랫폼을 30~60일 이내에 오픈 소스로 공개할 것이라고 말했다.

2006년 11월 13일, 썬은 핫스팟 가상 머신과 자바 컴파일러를 GNU GPL에 따라 자유 소프트웨어로 출시했으며, 2007년 3월까지 자바 런타임 환경을 포함한 JDK의 나머지 부분도 GPL 하에 공개할 것이라고 약속했다. 단, "썬이 GPL 하에 소스 형태로 공개할 권한이 없는 몇몇 구성 요소는 제외"되었다. 리처드 스톨만은 이를 두고 그가 자바와 자바로 작성된 프로그램에 대해 주장해 온 벤더 종속적인 "자바 트랩"을 종식시키는 것이라고 말했다.

2.2. 클래스 라이브러리 릴리스

Sun은 2007년 상반기에 거의 전적으로 자유 및 오픈 소스 코드를 기반으로 하는 자바 개발 키트(JDK)를 출시하겠다는 약속에 따라, 2007년 5월 8일에 자바 클래스 라이브러리의 전체 소스 코드를 GPL 하에 공개했다. 단, 제3자에 의해 Sun에 라이선스되었고 Sun이 GPL 하에 소프트웨어 재라이선스할 수 없는 일부 제한적인 부분은 제외되었다. 포함된 유료 부분 목록에는 자바 그래픽 사용자 인터페이스(GUI)의 몇몇 주요 구성 요소가 포함되었다. Sun은 나머지 독점 소프트웨어 구성 요소를 대체 구현으로 대체하고 클래스 라이브러리를 완전히 자유롭게 만들 계획이라고 밝혔다.

2007년 5월에 처음 출시되었을 때, OpenJDK 클래스 라이브러리의 4%가 유료로 남아 있었다. 2008년 5월에 OpenJDK 6가 출시될 때까지, 1% 미만(자바 사양의 일부가 아닌 단순 네트워크 관리 프로토콜(SNMP) 구현)이 남아 있었고, 이로 인해 바이너리 플러그 없이 OpenJDK를 빌드할 수 있게 되었다. 바이너리 플러그 요구 사항은 2009년 4월 b53의 일부로 OpenJDK 7에서 제거되었다.

이것은 썬 마이크로시스템즈와 OpenJDK 커뮤니티의 작업으로 가능해졌다. 각 유료 부분은 자유 및 오픈 소스 소프트웨어로 출시되거나 대체 소프트웨어로 교체되었다. 2010년 12월부터 소위 "바이너리 플러그"가 모두 오픈 소스 소프트웨어 대체품으로 교체되어 전체 JDK가 오픈 소스가 되었고 "바이너리 플러그"는 더 이상 필요하지 않게 되었다.

2.3. 커뮤니티 개선 사항

2007년 11월 5일, 레드햇은 썬(Sun)과 계약을 맺고, 썬의 광범위한 기여자 계약(Red Hat 엔지니어가 모든 썬 주도 자유 및 오픈 소스 소프트웨어 프로젝트에 참여하는 것을 포함) 및 썬의 OpenJDK 커뮤니티 기술 호환성 키트(TCK) 라이선스 계약(OpenJDK 기반 프로젝트가 Java SE 6 사양을 준수하는지 여부를 결정하는 테스트 스위트에 대한 회사 접근 권한 부여)에 서명했다.

2007년 11월, OpenJDK에 Porters Group이 생성되어 OpenJDK를 다양한 프로세서 아키텍처 및 운영 체제로 포팅하는 노력을 지원했다. Kurt Miller와 Greg Lewis가 이끄는 BSD 포팅 프로젝트와 Landon Fuller가 이끄는 Mac OS X 포팅 프로젝트(BSD 기반)는 Porters Group을 통해 OpenJDK에 합류하는 데 관심을 표명했다. 2008년 1월 현재, 두 프로젝트 모두 메일링 리스트 토론에 참여하고 있다. Porters Group에서 정식화될 예정인 또 다른 프로젝트는 Bryan Varner가 이끄는 Haiku Java 팀이다.

2007년 12월, 썬은 OpenJDK의 개정 관리를 TeamWare에서 Mercurial로(나중에 Git 및 GitHub로) 이전하여 오픈 소스 커뮤니티에 공개하는 절차를 밟았다.

OpenJDK는 코드 기여를 수락하는 데 비교적 엄격한 절차를 가지고 있었다. 제안된 모든 기여는 다른 OpenJDK 커미터가 검토해야 하며, 기여자는 Sun/Oracle 기여자 계약(SCA/OCA)에 서명해야 했다. 바람직하게는 버그가 수정되었음을 보여주는 jtreg 테스트도 있어야 했다. 처음에는 외부 패치 제출 프로세스가 느렸고, 2008년 9월까지 코드베이스에 대한 커밋은 썬 엔지니어만 수행했다. 이 프로세스는 개선되었으며, 간단한 패치 및 OpenJDK 7에서 OpenJDK 6으로의 백포트는 며칠이 아닌 몇 시간 내에 이루어질 수 있게 되었다.

2011년에는 OS/2에 대한 OpenJDK 6.0의 비공식 포트가 처음 출시되었다. 이 포트는 OS/2 파생 제품인 ArcaOS에 포함되어 있다.

2013년 9월 25일, 마이크로소프트(Microsoft)와 Azul Systems는 협력하여 Windows Azure 클라우드 사용자를 위한 OpenJDK 빌드인 Zulu를 만들었다. Azul은 버그 수정 및 개선 사항을 OpenJDK 프로젝트에 다시 기여하며, 여러 프로젝트 커미터를 직원으로 두고 있다. 레드햇2017년 초에 OpenJDK 6 리더십에서 사임했고, 이후 Azul Systems가 이를 이어받았다.

2016년 4월부터 GitHub의 ojdkbuild 프로젝트에서 오라클(Oracle Corporation) JDK 업데이트에 맞춰 릴리스되는 Microsoft Windows용 OpenJDK의 지원되지 않는 커뮤니티 빌드가 있다. 빌드 8u151부터 MSI 설치 프로그램은 IcedTea-Web 프로젝트를 기반으로 하는 Java Web Start를 사용하기 위한 선택적 구성 요소를 제공한다.

2020년에는 Itanium 플랫폼의 OpenVMS로 OpenJDK 8을 포팅한 버전이 출시되었다.

프로젝트가 시작된 이후 OpenJDK에 대한 외부 기여 수가 증가하고 있다. 2018년 9월에 출시된 OpenJDK 11은 외부 수정의 20%를 받았으며, 3개가 커뮤니티에서 기여한 17개의 새로운 JEP(기능)를 가져왔다. 즉, JEP 315: "Aarch64 Intrinsics 개선"(BellSoft 기여), JEP 318: "Epsilon: No-Op 가비지 수집기"(레드햇) 및 JEP 331: "낮은 오버헤드 힙 프로파일링"(구글 기여).

2.4. IBM, 애플, SAP의 참여

2010년 10월 11일, 아파치 하모니 프로젝트의 주요 참여자였던 IBM오라클과 함께 OpenJDK 프로젝트에 참여하기로 결정하고, 하모니에서 OpenJDK로 개발 노력을 전환했다. IBM의 리눅스 및 오픈 소스 담당 책임자인 밥 수터(Bob Sutor)는 자신의 블로그에 "IBM은 아파치 하모니 프로젝트에서 OpenJDK로 개발 노력을 전환할 것"이라고 게시했다.

2010년 11월 12일, 애플은 오라클과 함께 Mac OS X용 OpenJDK 프로젝트를 발표했다. (이는 애플이 자체 Java 런타임 포트를 폐지한 지 불과 3주 후의 일이었다.) 애플은 Mac OS X에서 Java SE 7 구현에 필요한 대부분의 핵심 구성 요소, 도구 및 기술을 제공할 것이라고 밝혔다. 여기에는 32비트 및 64비트 HotSpot 기반 자바 가상 머신, 클래스 라이브러리, 네트워킹 스택 및 새로운 그래픽 클라이언트의 기반이 포함되었다.

2011년 1월 11일, Mac OS X 포트 프로젝트가 OpenJDK에서 생성되었고, 애플은 이 프로젝트에 첫 번째 공개 코드 기여를 했다. 초기 애플의 기여는 OpenJDK BSD 포트를 기반으로 구축되었다.

2011년 7월, SAP AG는 공식적으로 OpenJDK 프로젝트에 합류했다고 발표했다.

3. 구성 요소

가상 머신(HotSpot), Java 클래스 라이브러리, 그리고 자바 컴파일러(javac)가 OpenJDK의 주요 구성 요소이다.

Oracle Java에 포함된 웹 브라우저 플러그인과 Web Start는 OpenJDK에 포함되지 않는다. 썬 마이크로시스템즈는 이전에 이러한 구성 요소들을 오픈 소스로 공개하려 했지만, 썬과 오라클 모두 이 계획을 실행하지 못했다. 현재 사용 가능한 무료 플러그인 및 Web Start 구현은 IcedTea 프로젝트에서 제공하는 것과 [https://openwebstart.com/ OpenWebStart]가 있다.

OpenJDK 9 이상에서는 GraalVM (JEP 295)을 사용하여 AOT 컴파일을 지원한다. 실험적인 플래그를 통해 Graal JIT (JEP 317)를 사용할 수 있다.

4. OpenJDK 버전

OpenJDK는 처음에는 JDK 7 버전에만 기반을 두었다.

JDK 10부터는 자바 SE 플랫폼의 오픈 소스 참조 구현을 제작하는 노력이 JDK 프로젝트로 이전되었다. 과거의 JDK 릴리스 프로젝트와는 달리, 이 장기 실행 프로젝트는 모든 향후 JDK 기능 릴리스를 생성하고 엄격한 시간 기반 모델에 따라 6개월마다 기능 릴리스를 출시한다.

4.1. 지원 JDK 버전 (한국어판)

OpenJDK는 처음에는 자바 플랫폼의 JDK 7 버전에만 기반을 두었다.

JDK 10 이후, Java SE 플랫폼에 대한 오픈 소스 레퍼런스 구현을 만드는 프로젝트가 JDK 프로젝트로 이관되었다. 하나의 기능 릴리스를 공개하고 바로 종료하는 과거의 JDK 릴리스 프로젝트와는 달리, 새로운 프로젝트에서는 장기간 활동하는 프로젝트를 통해 미래의 JDK 기능 릴리스를 모두 만들고, 6개월마다 새로운 버전의 기능 릴리스를 공개하는 엄격한 시간 기반 릴리스 모델을 사용하는 방침으로 전환했다.

다음은 여러 다른 버전의 OpenJDK 및 JDK 프로젝트의 개발 브랜치이다.

👆
좌우로 밀어서 보기
프로젝트
JDK 프로젝트 릴리스 24
JDK 프로젝트 릴리스 23
JDK 프로젝트 릴리스 22
JDK 프로젝트 릴리스 21
JDK 프로젝트 릴리스 20
JDK 프로젝트 릴리스 19
JDK 프로젝트 릴리스 18
JDK 프로젝트 릴리스 17
JDK 프로젝트 릴리스 16
JDK 프로젝트 릴리스 15
JDK 프로젝트 릴리스 14
JDK 프로젝트 릴리스 13
JDK 프로젝트 릴리스 12
JDK 프로젝트 릴리스 11
JDK 프로젝트 릴리스 10
OpenJDK 9 프로젝트. 이는 JDK 9의 기초가 되고 있다.
OpenJDK 8u 프로젝트. 이는 JDK 8을 기반으로 하며, 기존의 Java 8 릴리스의 업데이트를 생성한다.
OpenJDK 8 프로젝트. 이는 JDK 8의 기초가 되었으며, 2014년 3월 18일에 릴리스되었다.
OpenJDK 7u 프로젝트. JDK 7을 기반으로 하며, 기존의 Java 7 릴리스의 업데이트를 생성한다.
OpenJDK 6 프로젝트. 이는 JDK 7을 기반으로 하며, 자바 6의 오픈 소스 버전을 제공하기 위해 수정된 것이다. 레드햇은 OpenJDK 6의 리더를 사임했고, 2017년 초에 아줄 시스템즈에 인수되었다.

5. OpenJDK 빌드

오라클이 LTS 릴리스에 대한 업데이트를 더 이상 허용 라이선스로 출시하지 않게 되면서, 여러 다른 조직들이 자체 빌드를 일반 및 장기 지원 조건으로 제공하기 시작했다. 많은 리눅스 배포판은 자체 패키지 관리자를 통해 자체 빌드를 제공하며, 마이크로소프트 윈도우도 포함한다.

👆
좌우로 밀어서 보기
빌드조직LTS허용 라이선스TCK 테스트빌드 수정되지 않음상업적 지원
AdoptOpenJDK
(2021년 Adoptium에서 Eclipse Temurin으로 이동)
선택 사항선택 사항 (IBM)
알리바바 드래곤웰(Alibaba Dragonwell)알리바바아니오아니오아니오
아마존 코레토(Amazon Corretto)아마존선택 사항 (AWS에서)
아줄 줄루(Azul Zulu)Azul Systems아니오선택 사항
벨소프트 리베리카 JDK(BellSoft Liberica JDK)BellSoft아니오선택 사항
이클립스 테뮤린(Eclipse Temurin)Adoptium아니오선택 사항 (아줄, IBM, 레드햇)
IBM Java SDK
(버전 11에서 IBM Semeru Runtime Certified Edition으로 이동)
IBM아니오아니오
IBM Semeru Runtime Certified EditionIBM아니오선택 사항 (IBM)
IBM Semeru Runtime Open EditionIBM아니오아니오선택 사항 (IBM)
젯브레인 런타임(JetBrains Runtime)JetBrains아니오아니오아니오
마이크로소프트 빌드 오브 OpenJDK(Microsoft Build of OpenJDK)Microsoft아니오선택 사항 (Azure에서)
ojdkbuild
(단종됨)
아니오아니오
OpenLogic OpenJDKOpenLogic아니오아니오선택 사항
GraalVM Community EditionGraalVM아니오아니오
오라클 GraalVM Enterprise Edition오라클아니오아니오
오라클 자바 SE(Oracle Java SE)오라클아니오아니오
오라클 OpenJDK오라클아니오아니오아니오
레드햇 빌드 오브 OpenJDK(Red Hat build of OpenJDK)Red Hat아니오
SAP SapMachineSAP아니오선택 사항 (SAP 제품용)
텐센트 코나JDK(Tencent KonaJDK)Tencent아니오선택 사항

6. IcedTea 및 소프트웨어 배포판 포함

레드햇은 2007년 6월, OpenJDK를 자유 소프트웨어 구성 요소만으로 빌드할 수 있도록 IcedTea 프로젝트를 시작했다. 이는 OpenJDK를 페도라 및 기타 자유 리눅스 배포판에 포함하기 위한 필수 조건이었다. 당시 OpenJDK는 클래스 라이브러리의 일부 제약이 있는 구성 요소와 빌드 시스템 문제로 인해 자유 소프트웨어만으로 빌드하는 것이 불가능했다. IcedTea는 OpenJDK를 부트스트래핑하고, GNU Classpath의 코드로 제약적인 부분을 대체하여 이 문제를 해결했다.

2007년 11월, 레드햇은 Sun Contributor Agreement와 OpenJDK 커뮤니티 TCK 라이선스에 서명하여, IcedTea 프로젝트와 페도라 리눅스 배포판, JBoss 애플리케이션 서버 기술의 통합을 더욱 긴밀하게 연계했다.

2008년 5월, 페도라 9 및 우분투 8.04 배포판은 자유 및 오픈 소스 코드를 기반으로 하는 IcedTea 6을 포함했다. 페도라 9는 OpenJDK7이 아닌 Sun의 OpenJDK6 소스를 기반으로 IcedTea6과 함께 제공된 최초의 버전이었으며, IcedTea 대신 OpenJDK라는 패키지 이름을 사용한 최초의 버전이었다. 우분투는 처음에 IcedTea7을 패키징했다가 나중에 IcedTea6으로 변경했다. IcedTea6 패키지는 데비안용으로도 생성되어 "Lenny"에 포함되었다. 2008년 7월, 데비안은 불안정한 상태에서 OpenJDK-6을 받아들였고, 나중에 안정 버전에 포함되었다. OpenJDK는 openSUSE, 레드햇 엔터프라이즈 리눅스CentOS와 같은 RHEL 파생 제품에서도 사용할 수 있게 되었다.

2008년 6월, 레드햇은 IcedTea 6을 사용하여 빌드된 페도라 9의 OpenJDK용 패키지화된 바이너리가 TCK 테스트를 통과했으며 완전한 호환 Java 6 구현이라고 주장할 수 있다고 발표했다. 2009년 7월, 우분투 9.04용 IcedTea 6 바이너리 빌드는 Java SE 6 TCK의 모든 호환성 테스트를 통과했다.

2008년 8월 이후, OpenJDK 7은 macOS 및 기타 BSD 변형에서 사용할 수 있게 되었다.

안드로이드 누가에서 OpenJDK는 현재 단종된 아파치 하모니를 모바일 운영 체제의 소스 코드에서 Java 라이브러리로 대체했다. 구글은 Harmony를 통해 저작권이 있는 Java API의 재구현을 사용한 혐의로 오라클과 법적 분쟁을 벌였다. 구글은 이러한 변경이 Android의 Java와 다른 플랫폼 간에 보다 일관된 플랫폼을 만들기 위한 것이라고 밝히면서, 오라클이 GPL에 따라 라이선스를 부여함으로써 OpenJDK 코드 사용을 승인했다고 주장하며 소송으로 인해 이러한 전환이 이루어졌다고 인정했다.