백엔드기술/개발언어

JDK17 이제는 AdoptOpenJDK 대신 Eclipse Temurin 사용

RevFactory 2021. 10. 17. 01:00

바쁘신분들을 위한 링크

AdoptOpenJDK (8, 11, 16) - https://adoptopenjdk.net/

Eclipse Temurin (8, 11, 16, 17, 18) - https://adoptium.net/temurin/releases/

 

지난 2021년 9월  14일 JAVA LTS(Long Term Support)인 JDK 17 GA 가 릴리즈되었다.

JDK17은 향후 최대 2029년 9월까지 업데이트가 제공될 예정이다.

참고로 다음 LTS는 JDK21 (2023년 9월)이 될 것으로 예상된다.

 

2018년 오라클의 정책 변경에 따라 Oracle JDK 바이너리에 적용되던 BCL 라이선스가 바뀌어 이를 사용하려면 라이선스 구독이 필요하다. 따라서 대안으로는 OpenJDK 레퍼런스 소스 코드를 기반으로 제작된 여러 밴더사에서 제공중인 바이너리를 사용할 수 있으며, Azul Platform, Amazon Corretto, ReadHat OpenJDK, AdoptOpenJDK 가 그 대표적인 예이다.

 

이 중에서 커뮤니티 기반 빌드인 AdoptOpenJDK 가 많이 쓰이는데, AdoptOpenJDK 의 최근 변화에 대해 알아보고 JDK 17 사용 방법을 살펴보고자 한다.

 

AdoptOpenJDK 에서 Eclipse Adoptium 으로 이전

https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/

2021년 8월 2일 AdoptOpenJDK 가 Eclipse Adoptium 으로 이전되었다.

Eclipse Adoptium 는 최상위 프로젝트(TLP)를 의미하며, Eclipse Temurin 에서 Java SE 런타임을 진행한다.

Eclipse Temurin 은 오라클 SE TCK(Technology Compatibility Kit)와 Eclipse AQAvit 테스트를 통과했다.

Azul Platform Core OpenJDK 지원 구독을 통해 Temurin 에 대한 상용 지원이 가능하다고 한다.

기존의 AdoptOpenJDK 웹사이트와 AdoptOpenJDK API는 당분간 유지할 예정이나, 빠른 시일내에 Eclipse Adoptium 으로 이전할 것을 권장하고 있다.

 

Openj9 빌드

Adoptium은 OpenJ9 기반 또는 GraalVM 기반 런타임을 릴리즈하지 않는다. AdoptOpenJDK 에서 OpenJ9이 인기가 많았었는데 이는 IBM 에서 직접 제공하는 빌드를 통해 해결 할 수 있다고 한다. 현재 AdoptOpenJDK API에 'adoptopenjdk'의 최신 'Hotspot' 빌드를 요청하면 최신 Temurin 빌드를 제공하고 'adoptopenjdk'의 'openj9' 빌드를 요청하면 IBM 빌드를 제공하고 있다.

 

DockerHub도 Eclipse Temurin 으로 이전

Dockerhub의 기존 AdoptOpenJDK 저장소는 2021년 8월 1일부로 Deprecated 되었다.

이후 빌드된 바이너리 이미지를 사용하기 위해서는 Eclipse Temurin 저장소를 사용해야 한다.

 

제공되는 이미지를 사용하는 경우,

FROM eclipse-temurin:11
RUN mkdir /opt/app
COPY japp.jar /opt/app
CMD ["java", "-jar", "/opt/app/japp.jar"]

이미지를 제공하지 않는 배포를 사용하는 경우,

# Example
FROM <base image>
ENV JAVA_HOME=/opt/java/openjdk
COPY --from=eclipse-temurin:11 $JAVA_HOME $JAVA_HOME
ENV PATH="${JAVA_HOME}/bin:${PATH}"

 

OpenJDK 11 이후 JRE는 제공하지 않음

Eclipse Temurin 저장소에서 JRE는 더 이상 제공되지 않는다고 한다.

JRE 사용을 위해서는 아래와 같이 jlink 를 이용한 방법으로 가능하다.

 

jlink 를 이용한 JRE 사용 샘플

# Example of custom Java runtime using jlink in a multi-stage container build
FROM eclipse-temurin:11 as jre-build

# Create a custom Java runtime
RUN $JAVA_HOME/bin/jlink \
         --add-modules java.base \
         --strip-debug \
         --no-man-pages \
         --no-header-files \
         --compress=2 \
         --output /javaruntime

# Define your base image
FROM debian:buster-slim
ENV JAVA_HOME=/opt/java/openjdk
ENV PATH "${JAVA_HOME}/bin:${PATH}"
COPY --from=jre-build /javaruntime $JAVA_HOME

# Continue with your application deployment
RUN mkdir /opt/app
COPY japp.jar /opt/app
CMD ["java", "-jar", "/opt/app/japp.jar"]

 

 

Reference

- https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/

 

Good-bye AdoptOpenJDK. Hello Adoptium!

AdoptOpenJDK has moved to Eclipse Adoptium. A few words on how we are supporting the transition to Eclipse Temurin.

blog.adoptopenjdk.net

- https://blog.adoptium.net/2021/09/eclipse-temurin-17-available/

 

Eclipse Temurin 17 Available

Adoptium is excited to announce the immediate availability of Eclipse Temurin 17.

blog.adoptium.net

- https://hub.docker.com/_/adoptopenjdk

 

Adoptopenjdk - Official Image | Docker Hub

Get more out of Docker with a free Docker ID Sign up for a Docker ID to gain access to all the free features Docker has to offer, including unlimited public repositories, increased container image requests, automated builds, and much more. Sign Up ✕

hub.docker.com

- https://www.ciokorea.com/t/21999/%EA%B0%9C%EB%B0%9C%EC%9E%90/203519

 

이클립스 재단, ‘테무린 자바 SE 바이너리’ 출시

이클립스 재단(The Eclipse Foundation)의 어댑티움(Adoptium) 프로젝트가 ‘이클립스 테무린(Eclipse Temurin) 자바 SE 바이너리’의 첫 번째 릴리즈를 출시했다. 이는 인텔 64비트 프로세서 기반 윈도우, 리눅

www.ciokorea.com

- https://www.azul.com/blog/eclipse-temurin-new-distribution-of-openjdk/

 

Eclipse Temurin: A New Distribution of OpenJDK

It’s incredible that, twenty-six years after it was first released, Java is still one of, if not the most, popular software platforms in the world. 

www.azul.com

- https://kevin-park.medium.com/springboot-java17-with-jlink-ec0242910c36

 

Springboot Java17 with jlink

안녕하세요. Kevin 입니다.

kevin-park.medium.com