[자바] 1. 개요 : 자바 버전은 왜 이렇게 많을까 (LTS·릴리스 주기·배포판)

자바 버전 여행 1편 - 자바 버전은 왜 이렇게 많을까

작성자

카테고리:

* 이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

(자바 버전 여행 ①)

자바를 오래 안 만지다 오랜만에 프로젝트를 잡으면 제일 먼저 부딪히는 게 버전이다. 8을 쓰라는 데도 있고, 17이 표준인 곳도 있고, 이제는 21 얘기가 나온다. 나도 처음엔 “대체 왜 이렇게 많고, 그래서 뭘 깔라는 거야” 싶었다. 이 시리즈는 그 혼란을 8부터 21까지 한 계단씩 밟아가며 정리하는 기록이다. 첫 편은 지도부터 그린다.

6개월마다 새 버전이 나온다

혼란의 출발점은 2017년이다. 그 전까지 자바는 몇 년에 한 번 큰 버전이 나왔는데, 자바 9부터 6개월 고정 릴리스로 바뀌었다. 매년 3월과 9월, 무조건 새 버전이 나온다. 그래서 9, 10, 11, 12… 숫자가 빠르게 올라간 것이다. 버전이 많아 보이는 건 자바가 산으로 가서가 아니라, 자주 나오기 때문이다.

문제는 6개월짜리 버전은 다음 버전이 나오면 지원이 끊긴다는 점이다. 회사 서비스를 반년마다 갈아탈 수는 없다. 그래서 나온 개념이 LTS다.

LTS — 오래 지원해 주는 버전

LTS(Long-Term Support)는 몇 년 동안 보안 패치와 버그 수정을 받는 ‘장수 버전’이다. 실무에서 프로덕션에 올리는 건 거의 다 이 LTS다. 지금까지의 LTS가 바로 8 · 11 · 17 · 21이고, 다음은 25다. 이 시리즈가 이 네 개를 축으로 도는 이유가 여기 있다.

timeline
    title 자바 릴리스와 LTS
    2014 : Java 8 (LTS)
    2017 : Java 9
    2018 : Java 11 (LTS)
    2021 : Java 17 (LTS)
    2023 : Java 21 (LTS)
    2025 : Java 25 (LTS)

하나 알아둘 변화가 있다. 처음엔 LTS가 3년 간격이었는데(8→11→17), 자바 17부터는 2년 간격으로 당겨졌다(17→21→25). 새 기능이 더 빨리 안정 버전으로 넘어온다는 뜻이다.

버전출시성격비고
Java 82014LTS람다·스트림. 아직도 현역이 많음
Java 112018LTS모듈·표준 HttpClient
Java 172021LTSrecord·sealed, 강한 캡슐화
Java 212023LTS가상 스레드, 패턴 매칭 완성

자바? JDK? JRE?

버전 얘기 전에 이름부터 정리하자. JDK(Java Development Kit)는 컴파일러(javac)까지 든 개발용 풀세트고, JRE는 실행만 하는 런타임이다. 자바 11부터는 JRE를 따로 배포하지 않아서, 요즘은 그냥 ‘JDK를 깐다’고 생각하면 된다. 우리가 “자바 17″이라고 부르는 것도 사실 “JDK 17″이다.

같은 자바인데 배포판이 여러 개다

여기서 한 번 더 헷갈린다. 같은 JDK 17이라도 Oracle JDK, OpenJDK, Temurin(Adoptium), Amazon Corretto, Azul Zulu처럼 만드는 곳이 여럿이다. 알맹이(소스)는 거의 같은 OpenJDK인데, 누가 빌드하고 얼마나 오래 지원하느냐가 다르다.

실무에서 중요한 건 라이선스다. Oracle JDK는 한때 상용 이용이 유료로 바뀌어 크게 데인 적이 있다(지금은 조건부 무료로 다시 풀렸지만 버전마다 조건이 다르다). 그래서 마음 편하게 무료로 쓰려면 대개 Temurin이나 Corretto 같은 OpenJDK 계열을 고른다. 나도 서버에는 Temurin을 올린다.

직접 해보기 — 내 자바 정체 확인하고 배포판 읽기

지금 내 컴퓨터의 자바가 몇 버전, 어느 배포판인지부터 손으로 확인하자.

  1. 터미널에 java -version을 친다.
  2. 첫 줄 숫자(버전)와 괄호 안 이름(배포판)을 읽는다.
  3. java --list-modules로 자바가 모듈로 쪼개져 있다는 것도 살짝 엿본다.
$ java -version
$ java --list-modules | head -5     # 자바 9+ : 모듈 목록 일부

실행해 보면 이렇게 나온다.

openjdk version "17.0.10" 2024-01-16
OpenJDK Runtime Environment Temurin-17.0.10+7 (build 17.0.10+7)
...
[email protected]
[email protected]
[email protected]

여기서 조금씩 바꿔 보자.

  • javac -version도 쳐 보고, 컴파일러가 있는지(=JDK인지) 확인한다.
  • which java(윈도우는 where java)로 실제 실행 파일 경로를 본다.

한 걸음 더 — command not found가 뜬다면 아직 자바가 없는 것 — 다음 편에서 SDKMAN으로 여러 버전을 한 번에 깐다.

✅ 확인 — 내 자바가 몇 버전·어느 배포판인지 한 줄로 말하고, LTS가 8·11·17·21이라는 걸 기억하면 통과다.

왜 6개월 주기가 됐나 — 그 전과 후

자바 9 이전엔 몇 년에 한 번 큰 릴리스라, 기능이 늦어지고 한꺼번에 몰렸다. 2017년부터 6개월 고정 주기로 바뀌어, 작은 기능이 빠르고 자주 나온다. 대신 그 사이사이의 비-LTS(9·10·12…)는 6개월만 지원돼 프로덕션엔 부적합하다. 오래 지원받는 건 LTS(8·11·17·21)뿐이라, 실무는 사실상 ‘LTS만’ 따라간다.

배포판 지도 — 다 같은 OpenJDK

배포판특징
Oracle JDK오라클, 최신 — 라이선스 확인 필요
Temurin(Adoptium)이클립스, 무난·인기
CorrettoAWS, 장기 지원
ZuluAzul
GraalVM네이티브 이미지 등 특수

대부분 같은 OpenJDK 소스에서 빌드돼 기능은 거의 같다. 라이선스·지원 정책만 다를 뿐이라, 헷갈리면 무료·무난한 Temurin이면 된다.

Oracle JDK 유료 논란 정리

자주 헷갈리는 지점. Oracle JDK는 라이선스가 몇 차례 바뀌었다. 최근엔 무료로 쓸 수 있는 조건이 다시 넓어졌지만, 상용 환경이라면 라이선스를 꼭 확인해야 한다. 이 논란에서 아예 자유롭고 싶으면 OpenJDK 배포판(Temurin 등)을 쓰면 된다 — 순수 오픈소스라 조건을 따질 일이 없다.

그래서 지금 뭘 깔까

새로 시작이면 최신 LTS(21)의 Temurin. 기존 프로젝트면 그 프로젝트가 요구하는 LTS에 맞춘다. ‘뭘 깔지 모르겠다’ 싶으면 Temurin 21이 무난한 기본값이다. 다음 편에서 여러 버전을 한 PC에서 오가는 법(SDKMAN)을 잡는다. 그러면 이 시리즈의 ‘8에선 이랬는데 17에선 이렇게’를 직접 눈으로 확인할 수 있다.

정리하면, 버전이 많아 보인 건 6개월 릴리스 때문이고, 우리가 신경 쓸 건 그중 LTS 네 개다. 다음 편에서는 이 네 버전을 한 컴퓨터에 동시에 깔고 자유롭게 오가는 법을 잡아 둔다. 그래야 앞으로 편마다 “8에선 이랬는데 17에선 이렇다”를 직접 돌려볼 수 있다.

자주 묻는 질문 (FAQ)

지금 자바는 몇 버전을 쓰는 게 좋나요?

새 프로젝트는 최신 LTS인 21(보수적이면 17)이 무난합니다. LTS는 8·11·17·21이며 특별한 제약이 없으면 최신 LTS를 고르세요.

Oracle JDK는 유료인가요?

버전·용도에 따라 다릅니다. 마음 편히 무료로 쓰려면 Temurin·Corretto 같은 OpenJDK 배포판을 권합니다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다