본문 바로가기

SW개발/개발환경

Apple silicon 맥북에 Homebrew로 Java8 설치하기

#Oracle에서 제공하는 기본 OpenJDK에서 Apple Silicon을 지원하지 않음

이미지는 DALL·E 3를 이용해 생성 (출처 : https://www.bing.com/images/create/ebb0b0eab2bdec82aceca784/1-65f6614fb3c94fe18d6e3f32c474e2fc?id=iGfAJedy2l2eiGrb1s4Igg%3d%3d&view=detailv2&idpp=genimg&idpclose=1&thId=OIG2.gF1EyC1QNljEAgj8s4PR&FORM=SYDBIC)

 

Java8의 운명이 얼마 남지 않았다. (사실 지났다고 봐야 하는지...)

Oracle의 Java SE Support Roadmap 문서에 따르면 2014년 3월이 GA였고 Premier Support가 2022년 3월로 종료되었다. 다만, 2030년까지 연장지원되며 이 기간 이후에는 지원이 종료된다. Oracle Java의 경우이지만 Java를 Oracle이 구매해 버린 이상 OpenJDK를 통한 지원도 잘 될지 알 수 없다고 판단하기로 한다.

 

Java8을 마지막으로 이후의 Long-term Support (LTS) 릴리즈는 최대 지원기한을 5년으로 하고 있다.

Oracle Java SE 지원 로드맵

 

이미 개발되어 운영되고 있는 많은 프로젝트들이 Java8로 운영되고 있기 때문에 새로운 Apple Silicon 맥북에는 당연히 Java8 릴리즈가 설치되어야 한다.

그래서, Homebrew를 이용해 기본적인 OpenJDK8을 다운로드하여 설치하려고 했다.

$ brew search jdk

==> Formulae
openjdk ✔               openjdk@11              openjdk@17              openjdk@8               jd                      mdk                     cdk

==> Casks
adoptopenjdk                                             microsoft-openjdk                                        sapmachine-jdk
homebrew/cask-versions/adoptopenjdk8                     homebrew/cask-versions/microsoft-openjdk11               semeru-jdk-open
gama-jdk                                                 homebrew/cask-versions/microsoft-openjdk17               homebrew/cask-versions/semeru-jdk11-open
graalvm-jdk                                              oracle-jdk                                               homebrew/cask-versions/semeru-jdk17-open
homebrew/cask-versions/graalvm-jdk17                     oracle-jdk-javadoc                                       homebrew/cask-versions/semeru-jdk8-open
jdk-mission-control                                      homebrew/cask-versions/oracle-jdk17

 

위와 같이 검색하면 "openjdk@8"이 검색되고 당연히 이 버전을 설치해 보았다.

$ brew install openjdk@8
Running `brew update --auto-update`...
==> Auto-updated Homebrew!
Updated 3 taps (homebrew/cask-fonts, homebrew/cask-versions and homebrew/core).
==> New Casks
font-jacquard-24                           font-jersey-20                             font-jersey-25                             font-micro-5-charted
font-jacquard-24-charted                   font-jersey-20-charted                     font-jersey-25-charted

openjdk@8: The x86_64 architecture is required for this software.
Error: openjdk@8: An unsatisfied requirement failed this build.

 

"Error"문구와 함께 설치가 되지 않는다.

openjdk8 릴리즈는 x86 기반에서만 작동 가능하다니...

 

그래서 다른 방법을 찾아보게 되었다.

여러 가지 Apple Silicon 대응 릴리즈가 많이 있다.

우선 Eclipse에서 지원하는 Temurin 버전을 알아보았다. brew 설치가 가능했다.

$ brew install homebrew/cask-versions/temurin8
==> Downloading https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u402-b06/OpenJDK8U-jdk_x64_mac_hotspot_8u402b06.pkg
Already downloaded: /Users/green/Library/Caches/Homebrew/downloads/aa6f1ead19ed962107171bba6e75d3e997569b2279ec7c1a0abaa64002e9f5cb--OpenJDK8U-jdk_x64_mac_hotspot_8u402b06.pkg
==> Installing Cask temurin8
==> Running installer for temurin8 with sudo; the password may be necessary.
Password:
installer: Package name is Eclipse Temurin
installer: Installing at base path /
installer: The install was successful.
🍺  temurin8 was successfully installed!

 

하지만 설치된 버전은 "OpenJDK8U-jdk_x64_mac_hotspot_8u402b06.pkg"

Apple Silicon 빌드가 아니다.

 

Temurin 공식 홈에서도 지원되지 않는 것으로 표기된다.

출처 : https://adoptium.net/supported-platforms/
Apple Silicon에서 Temurin 8릴리즈는 지원되지 않는다. (출처 : https://adoptium.net/supported-platforms/)

 

그런데, 설치도 잘 되고 심지어 실행도 잘 된다. 

어떻게 된 거지?

 

뭐 어떻게 해서 되는 건지는 잘 모르겠다. "Rosetta 2"인가 싶지만 "ps"명령어로 살펴본 결과로는 그렇지는 않아 보인다.

Eclipse에서 기본 JRE를 "temurin-8"로 지정하고 "Tomcat"서버를 띄우면 아래와 같이 root 프로세스가 Eclipse 프로세스를 띄우고 Eclipse 프로세스가 temurin8을 기동 하는 것을 확인할 수 있다.

PID 2238 Eclipse 프로세스
PID 46715 temurin-8 프로세스

"이건 뭔가~?" 싶지만 더 깊이 파보지는 않기로 했다.

동일하게 공식 지원은 되지 않지만 설치되고 실행도 되는 버전들이 있었다.

# Apple Silicon을 공식 지원하지 않지만 Homebrew를 통해 설치되고 실행도 되는 버전들...

1. Eclipse temurin-8
2. IBM semeru-jdk8-open

 

아무튼 "aarch64" 빌드가 아니라 찜찜하니 더 알아본다.

공식적으로 Apple Silicon을 지원하는 Java8 버전들이 있다.

 

#Solution 1 : Azul Zulu

미국기업 "Azul Systems"가 만들고 배포하는 OpenJDK인 zulu가 있다.

Azul은 대형 컴퓨팅 리소스를 요구하는 Java Application을 위한 특화된 하드웨어와 소프트에어를 만들어오다 최근에는 소프트웨어만 공급하는 기업이라고 한다. (출처 : Wikipedia : https://en.wikipedia.org/wiki/Azul_Systems)

$ brew install homebrew/cask-versions/zulu8
==> Downloading https://cdn.azul.com/zulu/bin/zulu8.76.0.17-ca-jdk8.0.402-macosx_aarch64.dmg
Already downloaded: /Users/green/Library/Caches/Homebrew/downloads/74f8db5bb08f7cf4568a77eef50e5d0e2009772c2904201fe41f08363fab15ba--zulu8.76.0.17-ca-jdk8.0.402-macosx_aarch64.dmg
==> Purging files for version 8.0.402,8.76.0.17 of Cask zulu8
==> Installing Cask zulu8
==> Running installer for zulu8 with sudo; the password may be necessary.
Password:
installer: Package name is Azul Zulu JDK 8.76.0.17
installer: Installing at base path /
installer: The install was successful.
🍺  zulu8 was successfully installed!

 

#Solution 2 : Amazon Corretto

뭐 설명이 필요 없는 "Amazon"이 만들고 배포하는 OpenJDK로 corretto가 있다.

$ brew install homebrew/cask-versions/corretto8
==> Downloading https://corretto.aws/downloads/resources/8.402.08.1/amazon-corretto-8.402.08.1-macosx-aarch64.pkg
########################################################################################################################################################################################## 100.0%
==> Installing Cask corretto8
==> Running installer for corretto8 with sudo; the password may be necessary.
installer: Package name is Amazon Corretto 8
installer: Installing at base path /
installer: The install was successful.
🍺  corretto8 was successfully installed!

 

#Solution 3 : Tencent Kona

중국 기업 텐센트가 제공하는 OpenJDK로 kona가 있다.

Kona는 Homebrew에서 제공되지 않는다.

Kona Github : https://github.com/Tencent/TencentKona-8

 

이상과 같이 세 개의 대안을 제시해 보았다.

 

나는 zulu와 corretto를 설치하고 주로 zulu를 사용해 보기로 한다.