What we have to do is to be forever curiously
testing new opinions and courting new impressions

우리가 해야 할 일은 끊임없이 호기심을 갖고
새로운 생각을 시험해보고 새로운 인상을 받는 것

어떤 JDK를 써야 할까

  • JDK란
  • JDK 종류
  • SDKMan을 통한 JDK 목록/설치/관리
  • release 주기


JDK란

JDK(Java Development Kit)는 자바 프로그래밍 언어를 사용하여 소프트웨어를 개발할 때 필요한 도구들을 포함하는 개발 환경

JDK에는 자바 컴파일러, 디버거, 자바 API 라이브러리 등이 포함

개발자는 JDK를 사용하여 자바 언어로 작성된 코드를 컴파일하고 실행할 수 있으며, 자바 애플리케이션, 앱렛, 서블릿 등을 개발


JDK 종류

1. Adoptium Eclipse Temurin(강력 추천)

이클립스 재단의 Adoptium은 고품질의 Java 제품을 만들기 위한 프로젝트로 Adoptium Working Group에는 MS, IBM ,RedHat 등 쟁쟁한 오픈소스 기업들이 참여 중

Adoptium에서 개발하는 JDK는 Eclipse Temurin이라 부르는데 local, 운영, CI 환경 모두에 권장하는 제품

Termurin은 고품질에 벤더 중립적이고 TCK 테스트도 통과

2. Azul Systems JDK(권장)

검증된 Java 기술 전문 회사인 Azul Systems이 만드는 JDK로 Zulu는 무료로 사용할 수 있는 제품

예산이 있거나 전문 기술 지원을 받고 싶다면 상용 제품인 Azul Zing 구매해서 사용

3. Oracle JDK(비추천)

오라클 JDK는 자주 라이센스가 바뀌는데 17 버전은 Oracle No-Fee Terms and Conditions(NFTC) 라이센스

이 라이센스는 Internal Business operations는 무료로 사용할 수 있는데 문제는 이게 무엇인지 명확하게 정의되지 않음(라이센스 위반 여지)

4. Alibaba JDK(?!)

중국 정부랑 일한다면 사용


SDKMan을 통한 JDK 목록/설치/관리

Local이나 개발서버라면 SDKMan을 사용해서 JDK를 관리하는 게 좋음

SDKMan이란

SDK(Software Development Kit) Manager CLI는 커맨드 라인에서 다양한 종류의 Open JDK와 ant, gradle, maven등 Java기반 개발 도구를 설치하고 관리할 수 있게 해주는 command line 유틸리티

yum이나 apt, brew같은 패키지 매니저에 등록된 Open JDK는 벤더가 다양하지 않고 업데이트가 자주 되지 않으며 하나의 버전밖에 사용하지 못하는 단점이 있음

SDKMan은 RVM(Ruby Version Manager)처럼 다양한 벤더와 버전의 Open JDK를 사용할 수 있게 해주며 Linux와 OSX, Solaris 등 여러 Unix 계열 운영체제를 지원

SDKMan 설치

SDKMAN은 의존성 최소화를 위해 shell script로 작성

curl과 zip/unzip만 있으면 잘 동작

먼저 sdkman 을 curl 로 설치

$ curl -s https://get.sdkman.io | bash

쉘의 환경 설정 파일(Ex: .bash_profile)의 맨 밑에 다음 내용을 추가하고 명령행에서도 실행(또는 logoff 후 다시 login)

source "$HOME/.sdkman/bin/sdkman-init.sh"

제대로 설치되었는지 다음 명령어로 확인

$ sdk version

SDKMAN 5.11.5+713

JDK 목록 보기

list(축약: l) 명령으로 설치 가능한 개발 도구와 버전 정보를 확인

$ sdk l

-------------------------------------------------------------------------------
Apache ActiveMQ (Classic) (5.16.2)                  https://activemq.apache.org/
...

특정 제품의 목록을 보려면 list 뒤에 제품명을 입력하면 되며 다음 명령은 지원하는 gradle 버전을 출력

$ sdk l gradle

7.2 61. 6.2
...

다음 명령으로 지원하는 OpenJDK 목록을 확인

$ sdk list java

================================================================================
Available Java Versions
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 AdoptOpenJDK  |     | 16.0.1.j9    | adpt    |            | 16.0.1.j9-adpt      
               |     | 16.0.1.hs    | adpt    |            | 16.0.1.hs-adpt      
               |     | 11.0.11.j9   | adpt    |            | 11.0.11.j9-adpt     
               |     | 11.0.11.hs   | adpt    |            | 11.0.11.hs-adpt     
               |     | 8.0.292.j9   | adpt    |            | 8.0.292.j9-adpt     
               |     | 8.0.292.hs   | adpt    |            | 8.0.292.hs-adpt     
 Alibaba       |     | 11.0.9.4     | albba   |            | 11.0.9.4-albba      
               |     | 8.5.5        | albba   |            | 8.5.5-albba         
 Amazon        |     | 16.0.1.9.1   | amzn    |            | 16.0.1.9.1-amzn     
               |     | 11.0.11.9.1  | amzn    |            | 11.0.11.9.1-amzn    
               |     | 8.292.10.1   | amzn    |            | 8.292.10.1-amzn   
...

눈여겨볼 부분은 Version 과 Dist 를 결합한 Identifier 이며 설치시에 꼭 필요

sdkman

JDK 설치

설치하려면 install java 명령어뒤에 Identifier 를 기술

Adoptium Eclipse Temurin

whichjdk.com에서 추천하는 JDK 구현물인 Temurin을 설치하려면 다음 명령을 실행

먼저 버전 목록을 확인

$ sdk l java |grep -i tem


 Temurin       |     | 17.0.0       | tem     |            | 17.0.0-tem          
               |     | 16.0.2       | tem     |            | 16.0.2-tem          
               |     | 11.0.12      | tem     |            | 11.0.12-tem         
               | >>> | 8.0.302      | tem     | installed  | 8.0.302-tem 

LTS 버전인 8, 11, 17을 설치

$ sdk i java 8.0.302-tem
$ sdk i java 11.0.12-tem  
$ sdk i java 17.0.0-tem

AdoptOpenJDK

AdoptOpenJDK는 다음 명령어로 설치

$ sdk i java 8.0.292.j9-adpt

11버전은 다음 명령어로 설치 가능

$ sdk i java 11.0.11.j9-adpt

JDK 버전 관리

기본 버전 설정

default 명령으로 사용할 기본 버전을 설정

$ sdk default java 8.0.292.hs-adpt

Default java version set to 8.0.292.hs-adpt

현재 버전 보기

current 명령으로 현재 기본 버전을 확인

$ sdk current

Using:

gradle: 7.0.2
java: 11.0.11.9.1-amzn

사용 버전 지정

use 명령으로 사용할 버전을 지정

다음은 기본 Java를 MS의 OpenJDK 11로 설정

$ sdk use java 11.0.11.9.1-ms

JDK 개발도구 설치

gradle

list gradle 명령으로 설치 가능한 버전을 확인

$ sdk l gradle

================================================================================
Available Gradle Versions
================================================================================
 > * 7.3                 6.2.1               4.6                 2.7            
     7.3-rc-5            6.2                 4.5.1               2.6            
     7.3-rc-3            6.1.1               4.5                 2.5            
     7.3-rc-2            6.1                 4.4.1               2.4            
     7.3-rc-1            6.0.1               4.4                 2.3            
     7.2                 6.0                 4.3.1               2.2.1          
     7.2-rc-3            5.6.4               4.3                 2.2  

install gradle 명령어로 설치할 버전을 지정하여 설치

$ sdk i gradle 7.3

maven

list maven 명령으로 설치 가능한 버전을 확인

$ sdk l maven

================================================================================
Available Maven Versions
================================================================================
     3.8.4                                                                      
     3.8.3                                                                      
     3.8.2

install maven 뒤에 설치할 버전을 지정하여 설치

$ sdk i maven 3.8.4

tomcat

install tomcat 뒤에 설치할 버전을 지정하여 설치

$ sdk i tomcat 9.0.40


Release 주기

새로운 기능을 추가한 major 버전은 1년에 2번, 3월과 9월에 발표, 추가로 분기별로 버그 픽스 업데이트

3년마다 9월에 발표되는 버전은 LTS(Long-Term Support)릴리스로 최소 3년 간 지원

그래서 JDK는 LTS인 8, 11, 17 중 고르는 게 좋음


태그: ,

카테고리:

업데이트:

댓글남기기