Direct Answer & TL;DR
- 설치 방법:
brew install --cask corretto@25한 줄이면 끝. Homebrew가 없다면 먼저 설치하세요. 나머지는 이 글에서. - 왜 Corretto인가: 공짜인데 Amazon이 실제 프로덕션에서 수천 개 서비스에 직접 쓰는 JDK입니다. Oracle SE와 동일한 TCK 인증, 무료 LTS 지원까지.
돈 내고 Oracle JDK 쓸 이유가 있나요? - JDK 25는 LTS: JDK 21 이후 차세대 장기 지원 버전. 가상 스레드 성숙화, AOT 개선, AI 친화적 API까지 탑재. 지금 배워두면 앞으로 몇 년은 먹고삽니다.
시작하며: “또 Java 버전 업데이트?”
솔직히 말하면, Java 버전을 올리는 일은 저에게 늘 미루고 싶은 일 1순위였습니다. “지금 잘 돌아가는데 뭐 하러…” 하는 그 심리. 아마 공감하시는 분들 많을 거라 생각합니다.
그런데 최근에 Spring Boot 3.x 기반 사이드 프로젝트를 정리하면서 JDK 버전을 올릴 기회가 생겼습니다. (관련 글: Spring Boot 2.7 → 4.0 마이그레이션 전략) 그때 JDK 21 LTS를 쓰다가 슬슬 JDK 25가 나왔다는 소식을 들었고, “LTS면 지금 한 번 갈아타는 게 낫겠다"는 생각에 설치해봤습니다.
배포 가이드치고 생각보다 삽질이 좀 있었는데요. 특히 JAVA_HOME 설정에서 경로를 하드코딩했다가 Homebrew 업데이트 후에 망가지는 경험을 해봐서, 이걸 동적으로 설정하는 방법을 꼭 공유하고 싶었습니다.
그래서 오늘은 Homebrew로 Amazon Corretto 25를 설치하는 전체 과정, 그리고 “왜 Corretto인가"에 대한 현실적인 이유들을 정리해봤습니다.
Amazon Corretto, 왜 써야 하는가?
설치 명령어 전에 잠깐. JDK를 배포하는 곳이 Oracle만 있는 게 아닌데, 왜 Amazon Corretto를 골랐느냐는 질문을 자주 받습니다.
Corretto의 핵심 장점
| 항목 | 내용 |
|---|---|
| 무료 LTS 지원 | Oracle JDK의 유료 LTS와 달리, Corretto는 완전 무료로 장기 지원 제공 |
| Amazon 내부 실전 검증 | AWS 수천 개의 프로덕션 서비스에 직접 사용. 실험실 JDK가 아님 |
| Java SE TCK 인증 | 공식 Java SE 표준을 통과한 완전한 호환 배포판 |
| 멀티플랫폼 지원 | macOS, Linux, Windows, Docker 이미지까지 |
| 분기별 보안 패치 | 심각한 보안 이슈는 분기 외에도 별도 패치 제공 |
| 컨테이너 최적화 | 메모리 관리 및 기동 시간 최적화 – 클라우드 네이티브 환경에 적합 |
| 오픈소스 (OpenJDK 기반) | 소스는 완전히 공개, 투명하게 관리됨 |
[!NOTE] 실제로 이런 분들께 특히 추천합니다:
- 사이드 프로젝트나 스타트업에서 라이선스 비용 없이 안정적인 JDK를 원하는 개발자
- AWS / ECS / Lambda 환경에 배포하는 경우 (Corretto는 Amazon Linux 기본 JDK)
- Spring Boot, Quarkus 등 엔터프라이즈 프레임워크를 사용하는 백엔드 개발자
JDK 25, 이번엔 뭐가 달라졌냐면
JDK 25는 JDK 21 이후 차세대 LTS(Long-Term Support) 버전입니다. 주요 변경점을 요약하면:
- 가상 스레드(Virtual Thread) 성숙화: 스레드 고정(Thread Pinning) 문제 개선, 동시성 처리 더 안정적
- Structured Concurrency (정식화 진행 중): 여러 스레드의 작업을 하나의 단위로 처리 → 에러 핸들링, 취소 관리가 훨씬 깔끔
- Scoped Values: 스레드 간 불변 데이터 공유 메커니즘.
ThreadLocal보다 효율적 - AOT 개선 (Project Leyden): 클래스 로딩과 링킹을 미리 처리. 서버 기동 시간 단축
- JFR(JDK Flight Recorder) 강화: CPU 시간 프로파일링, cooperative 샘플링 등 성능 분석 도구 개선
- AI 친화적 API: 패턴 매칭에서 Primitive 타입 지원, Vector API 등
[!TIP] JDK 25는 2025년 9월 16일 GA(정식 출시)됐습니다. Corretto 25도 Homebrew Cask에 올라와 있어 바로 설치해서 쓸 수 있습니다. LTS니까 지금 배워두면 수년간 유효합니다.
설치 전 준비: Homebrew 확인
Homebrew가 설치되어 있지 않다면 먼저 설치해야 합니다.
# Homebrew 설치 (이미 있다면 건너뛰세요)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
이미 있다면 버전만 확인해보세요:
brew --version
저는 이 단계에서 Homebrew가 오래되면 Cask 목록이 다를 수 있다는 걸 경험으로 알고 있어서, 항상 설치 전에 brew update를 습관처럼 돌립니다.
JDK 25 설치 단계별 가이드
Step 1. Homebrew 패키지 목록 최신화
brew update
이 과정이 1~2분 걸릴 수 있습니다. corretto@25 Cask가 새로 등록되었거나 업데이트됐을 수 있으니 꼭 먼저 해주세요. 건너뛰면 나중에 “cask를 못 찾겠다"는 에러를 보게 됩니다.
Step 2. Amazon Corretto 25 설치
brew install --cask corretto@25
설치가 완료되면 /Library/Java/JavaVirtualMachines/ 아래에 Corretto 25가 설치됩니다. macOS의 JVM 관리 표준 경로입니다.
[!NOTE]
--cask플래그를 반드시 붙여야 합니다.brew install corretto@25(비 cask)는 다른 패키지일 수 있습니다. Cask는 GUI 앱이나 JDK처럼.pkg방식으로 시스템에 설치하는 패키지에 사용합니다.
Step 3. JAVA_HOME 동적 설정 (핵심!)
이게 제가 가장 강조하고 싶은 부분입니다.
처음에 저는 이렇게 했습니다:
# ❌ 이렇게 하지 마세요 - 경로 하드코딩
export JAVA_HOME="/Library/Java/JavaVirtualMachines/amazon-corretto-25.jdk/Contents/Home"
이 방법의 문제는 Homebrew가 패치 버전을 업데이트하면 디렉터리 이름이 바뀌고, 이 설정이 조용히 깨집니다. 멘붕 타이밍이 딱 “새 프로젝트 빌드할 때"더라고요.
대신 macOS 내장 java_home 유틸리티를 사용하면 항상 올바른 경로를 동적으로 찾아줍니다:
# ✅ 올바른 방법 - 동적 경로 할당
echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 25)' >> ~/.zshrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.zshrc
[!TIP]
/usr/libexec/java_home -v 25는 시스템에 설치된 JDK 중 버전 25에 해당하는 올바른 홈 경로를 자동으로 찾아주는 macOS 전용 툴입니다. Homebrew로 업데이트해도 이 명령어가 항상 맞는 경로를 가리킵니다.
Step 4. 현재 터미널 세션에 즉시 적용
source ~/.zshrc
새 터미널을 열어도 적용되지만, 지금 당장 확인하려면 위 명령어로 바로 적용합니다.
Step 5. 설치 확인 및 아키텍처 검증
java -version
제 맥(M 시리즈, Apple Silicon)에서 확인한 출력입니다:
openjdk version "25.0.2" 2026-01-20 LTS
OpenJDK Runtime Environment Corretto-25.0.2.10.1 (build 25.0.2+10-LTS)
OpenJDK 64-Bit Server VM Corretto-25.0.2.10.1 (build 25.0.2+10-LTS, mixed mode, sharing)
aarch64 키워드가 안 보여서 잠깐 당황했는데, 이건 정상입니다. Apple Silicon 맥에서 실행 시 아키텍처를 좀 더 명시적으로 보고 싶다면:
java -XshowSettings:all -version 2>&1 | grep "os.arch"
# 출력: os.arch = aarch64
aarch64가 나온다면 ARM 네이티브로 잘 돌고 있다는 뜻입니다. x86_64 에뮬레이션 없이, 맥의 풀퍼포먼스로 돌아간다는 거죠.
여러 JDK 버전 관리 팁
개발 환경에서는 프로젝트마다 JDK 버전이 다를 수 있습니다. 이런 상황에서 유용한 커맨드들:
# 설치된 모든 JDK 버전 목록 확인
/usr/libexec/java_home -V
# 특정 버전으로 임시 전환 (현재 터미널 세션에서만)
export JAVA_HOME=$(/usr/libexec/java_home -v 21)
# 현재 활성 JAVA_HOME 확인
echo $JAVA_HOME
[!NOTE] 여러 JDK 버전을 자주 오가며 작업한다면 jenv나 SDKMAN!을 추가로 설치하는 것도 좋은 방법입니다. 개인적으로는 프로젝트가 많지 않아
JAVA_HOME수동 전환으로도 충분히 사용하고 있습니다.
마치며: “이왕 할 거, 잘 하자”
설치 자체야 brew install --cask corretto@25 한 줄이지만, 환경변수 설정을 제대로 해두느냐 아니냐에 따라 나중에 삽질 여부가 갈립니다. 특히 경로 하드코딩은 지금 당장은 편해 보여도 패치 업데이트 한 번에 조용히 깨지는, 조용한 암살자 같은 존재입니다.
Amazon Corretto는 “공짜로 쓸 수 있는 그냥 JDK"가 아니라, Amazon이 실제 자사 서비스에 쓰면서 검증한 프로덕션 JDK입니다. 사이드 프로젝트든, 업무 환경이든, “왜 Corretto냐"고 물어보면 이렇게 말할 수 있습니다. “AWS가 믿고 쓰니까요.”
JDK 25는 LTS입니다. 지금 배워두면 한동안은 버전 걱정 없이 개발에 집중할 수 있습니다. 다음 LTS 나올 때 또 이런 글을 쓰고 있겠지만…