안녕하세요 잼니크입니다.
이번 글에서는 리눅스 환경에서 널리 사용되고 있는 JDK(Java Development Kit)의 여러 가지 설치 방법을 정리해 보려고 합니다.
사실 리눅스에서 JDK 설치 방법은 많이 나와 있는데 현업에서 조금 민감하게 생각하는 부분에 대한 설명이 빠져 있는 경우가 많아 이 부분을 포함해서 설명하려다 보니 여러 가지 방법을 다루는 게 좋겠다는 생각이 들어 글을 작성하게 되었습니다.
간단하게 따라하실 분들은 서론 부분을 보고 필요한 부분만 체크 한 다음, 뒤로 넘어가서 따라 하시면 되고, 시간이 좀 남으신 분들은 JDK와 관련해서 한 번쯤 경험하는 일들을 적었으니 이런 일도 있구나 하고 찬찬히 읽어보셔도 됩니다.
서론: 우리가 선택할 수 있는 JDK는 무엇일까?
제가 처음 WAS(Web Application Server)를 접했을 때는 Oracle에서 제공하는 JDK를 사용했었습니다. Java라는 언어가 개발되고(Javascript랑 다른 언어입니다), Java 언어를 기반으로 동적인 웹을 위한 JSP(Java Server Page)가 개발되고, Java언어를 사용하는 플랫폼을 위한 Java SE(Java Platform, Standard Edition)이 되었고, Java SE를 기반으로 대규모 기업용웹 애플리케이션에서 필요한 기능을 추가한 JavaEE(Java Enterprise Edition, 예전에는 J2EE라고 불렀나요?)까지 확장하게 되었습니다. 그동안 Sun Microsystems에서 출시한 Java는 Oracle(그... 데이터베이스의 오라클 맞습니다)에 인수 합병되면서 크게는 OracleJDK와 OpenJDK로 나뉘고, OpenJDK 중에서 여러 커뮤니티나 회사들이 각자의 배포판을 각자의 목적에 맞게 제공하고 있습니다.
JavaEE의 경우에는 당연히 기업용이라고 딱 하고 박혀있으니 그렇다고 하지만... JavaSE의 경우 라이선스에 대해 좀 민감할 수 있습니다. (오라클이 누구인지 생각해 봅시다...) 인터넷에 OracleJDK와 OpenJDK에 대해 검색하면 수많은 우려와 라이선스 등 많은 이야기가 정리되어 있습니다.
결국 우리는 어떤 누가 제공한 어떤 JDK를 선택해야 하는가 라는 선택의 문제에 직면해야 합니다.
라이선스는 법적인 내용이고, 결국 비용문제로 연결되니까요.
또, 버전도 고려해야합니다. 어떤 프레임워크를 쓰냐에 따라 JDK 버전에 종속적이고, OpenJDK를 제외하고는 라이선스가 다른 경우도 있습니다. 특히 Java 8(또는 Java 1.8이라고 불리는)의 경우
저는 Windows의 경우 MS에서 제공하는 OpenJDK를 사용하고 있습니다. 특이한 점은 MS의 OpenJDK 설치 항목에 리눅스를 위한(?) 바이너리 설치방법도 제공하고 있습니다.
리눅스의 경우 저는 대부분 Red Hat 계열 배포판을 많이 써서 Red Hat에서 제공한 배포판을 많이 사용합니다. 다만, 이 경우 패키지로 설치를 할지, 바이너리를 받아서 환경변수 세팅을 할지 결정해야 하는데 특별한 사유가 없다면 (특히 Tomcat 같은 WAS 서버의 경우) 바이너리를 받아서 설정합니다. 왜냐하면, WAS의 경우 시작 스크립트 안에서 PATH를 잡아서 사용하는 경우가 많고, 특정 버전을 위한 JDK 업그레이드를 하는 경우도 있기 때문에 편의를 위해 저는 바이너리를 설정해 줍니다.
다른 엔지니어 분들께서는 어떤 방법이 편하신지 댓글로 달아 공유해 주시면 좋을 것 같네요!
이 문서는 앞으로 기회가 될 때마다 주기적으로 업데이트할 예정입니다.
Red Hat 계열 리눅스에서 패키지 설치
RHEL(RedHat Enterprise Linux), CentOS, Fedora, Rocky 같은 주로 rpm을 패키지로 사용하는 리눅스입니다.
패키지를 설치하기 위해 먼저 패키지 저장소를 최신으로 업데이트하고 검색합니다.
# 패키지 저장소 업데이트
dnf update
# 패키지 중 jdk 와 관린 있는 패키지 검색
dnf search jdk
정보를 보면 패키지로는 크게 4가지 Java 버전을 지원하고 있습니다. 가장 위에서부터 Java 8(Java-1.8.0), Java 11, Java 17, Java 21을 지원합니다. 하나의 버전에서 어러개의 패키지가 있는데 대부분의 경우 두 가지 중 한 가지(제경우 99% 한 가지)를 설치하면 됩니다. 만약 Java 실행만 필요할 경우 OpenJDK로 끝나는 패키지를 설치하면 되고, 이 글의 목표처럼 JDK를 설치하려면 openjdk-devel로 끝나는 패키지를 설치하면 됩니다. 아래 예제는 Java 8 OpenJDK 설치의 경우입니다. 필요에 맞게 패키지 이름을 바꿔주면 됩니다.
# Java8 OpenJDK를 설치할 경우
dnf install java-1.8.0-openjdk-devel
만약 설치하기 전 설치할 패키지에 대한 정보가 필요하면 다음과 같이 명령을 입력하면 됩니다.
# 패키지 정보 확인
# dnf info [패키지이름]
# e.g. java-1.8.0-openjdk-devel 패키지 정보를 볼 경우
dnf info java-1.8.0-openjdk-devel
패키지 정보를 보니 대충 예상은 했지만 Rocky 패키지 저장소에 있는 JDK는 Red hat 빌드인 거 같네요.
Red Hat 계열 리눅스에서 바이너리 설치
이번에는 RedHat에서 빌드한 바이너리를 가져봐서 설지 해 보겠습니다.
먼저 Red Hat OpenJDK 사이트 사이트에 들어가면 다운로드 탭이 있습니다. (https://developers.redhat.com/products/openjdk/download)
위 링크를 클릭하면 해당 위치로 바로 들어가집니다. 아래로 내려가면 Install Red Hat build of OpenJDK runtime 항목이 있고, 그 아래로 OS와 버전 별로 다운로드가 가능합니다. 다운로드하기 위해서는 Red Hat에 계정이 있어야 합니다. 개발자 계정은 무료인 데다가 있으면 언젠가는 도움이 되니 없다면 이번 기회에 하나 만들어둡시다!
아래로 내려가면 이 스크린 숏처럼 다운로드할 수 있는 부분이 나옵니다. (오! 윈도용도 있군요?!)
예제를 위해 Java 8 OpenJDK 파일을 받아 보겠습니다. 리눅스용인지 확인하시고 다운로드를 클릭하면 다음 화면으로 넘어가고 다운로드가 시작되며 디렉트 링크 주소를 알려줍니다.
리눅스에 저장하기 위해 이 주소를 복사해 wget으로 다운로드합니다.
그다음 리눅스에서 wget 명령어로 받아온 다음 암축을 풀어둡니다.
# OpenJDK Red Hat build 다운로드
wget -O java-1.8.0-openjdk-portable-1.8.0.412.b08-2.portable.jdk.el.x86_64.tar.xz [다이렉트 링크 URL]
# 압축풀기, 받은 파일이 xz 파일이라 이것에 맞게 압축을 풀었습니다
tar xf ./java-1.8.0-openjdk-portable-1.8.0.412.b08-2.portable.jdk.el.x86_64.tar.xz
저는 Java나 JDK를 포터블 바이너리로 받을 경우 /usr/local에 두는 편입니다. 환경에 맞게 경로를 수정해서 진행하시면 됩니다.
# JDK을 이동시킬 폴더를 만들고 이동
mkdir /usr/local/java
mv ./java-1.8.0-openjdk-portable-1.8.0.412.b08-2.portable.jdk.el.x86_64 /usr/local/java/
ln -s /usr/local/java/java-1.8.0-openjdk-portable-1.8.0.412.b08-2.portable.jdk.el.x86_64 /usr/local/java/jdk
# 테스트를 위해 임시로 export로 JAVA_HOME과 PATH 테스트
export JAVA_HOME=/usr/local/java/jdk
export PATH=$PATH:$JAVA_HOME/bin
# 테스트
cd $JAVA_HOME
pwd # 결과가 /usr/local/java/jdk로 나와야 함
java -version
javac -version
여기서 만약 환경변수를 전역으로 등록하려면 /etc/profile.d에 파일을 만들고 등록하면 됩니다.
# 전역 환경 변수 수정
vi /etc/profile.d/jdk.sh
# 그외 JAVA나 JDK 관련 환경 변수를 여기에 추가
export JAVA_HOME=/usr/local/java/jdk
export PATH=$PATH:$JAVA_HOME/bin
# 적용, 이거 말고 재부팅 해도 됨
source /etc/profile
참고자료
- OpenJDK의 Microsoft Build: https://learn.microsoft.com/ko-kr/java/openjdk/
- OpenJDK의 RedHat Build: https://developers.redhat.com/products/openjdk/overview
'IT > Linux' 카테고리의 다른 글
Gentoo 리눅스설치(2): 시작이 반입니다! (2) | 2024.04.25 |
---|---|
Gentoo 리눅스 설치(1): Gentoo리눅스 설치를 위한 각오! (0) | 2024.04.25 |
도메인 네임 서버 구축하기 (0) | 2023.10.22 |
Ubuntu 22.04 서버 버전 설치 (0) | 2023.07.02 |
Ubuntu 서버를 설치할 때 과정을 유심히 봐야 하는 이유 (0) | 2023.07.02 |