SDKMAN!으로 JDK 17을 설치하고 IntelliJ IDEA에서 프로젝트를 만들고 첫 Hello World까지 한 번에 끝냅니다.
Java를 다시 시작하려고 하면 생각보다 먼저 막히는 지점이 있어요. “JDK는 뭘 깔아야 하지?”, “IntelliJ에서 왜 실행이 안 되지?” 같은 환경 설정 문제입니다. 이 글에서는 설치부터 실행까지, 한 번에 끊기지 않게 연결해 드릴게요.
핵심 개념: Java 개발 환경에서 진짜 중요한 건 “버전 고정”입니다
개발 환경 세팅에서 가장 중요한 포인트는 JDK를 ‘설치’하는 것 자체가 아니라, 프로젝트마다 JDK 버전을 ‘일관되게’ 쓰는 것입니다. 팀원마다 JDK 17, 21, 혹은 다른 벤더(Temurin, Oracle 등)를 섞어 쓰면, 로컬에서는 되던 코드가 CI에서 깨지거나(특히 빌드/테스트), IntelliJ에서만 빨간 줄이 생기는 일이 자주 나요.
그래서 추천하는 흐름은 이렇습니다.
- JDK는 SDKMAN!으로 설치/전환해서 버전 관리 비용을 줄입니다.
- IntelliJ에서는 Project SDK와 Language Level을 명확히 맞춥니다.
- “Hello World”로 끝내지 말고, 실행 방식(IDE 실행 vs Gradle/Maven 실행) 차이를 한 번만 확인해 두면 이후가 편해요.
아래 표는 실무에서 흔히 고민하는 “JDK 설치 방식”을 간단히 비교한 것입니다.
| 방식 | 장점 | 단점 | 추천 상황 |
|---|---|---|---|
| SDKMAN! | 버전 설치/전환이 빠름, CLI로 자동화 쉬움 | Windows는 기본 지원이 약함(WSL 권장) | macOS/Linux, 여러 JDK 버전 병행 |
| OS 패키지 매니저(brew/apt) | 설치가 단순 | 버전 전환/공존이 번거로울 수 있음 | 단일 버전만 쓸 때 |
| 벤더 설치파일(Oracle/Temurin) | GUI로 쉬움 | 버전 관리가 수동, 팀 표준화 어려움 | 개인 PC 단일 목적, GUI 선호 |
기준은 Java 17 LTS입니다. Java 21도 LTS라 새 프로젝트라면 21을 선택해도 좋지만, 이 글은 “가장 무난한 표준”으로 17을 기준으로 진행합니다.
코드 예제: SDKMAN! + IntelliJ 설정 + Hello World (복붙 실행)
아래 순서대로 하면 “설치 → 설정 → 실행”이 한 번에 이어집니다.
1) SDKMAN! 설치 (macOS/Linux)
터미널에서 실행합니다.
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk version
2) JDK 17 설치 및 기본 버전 지정
SDKMAN!에서는 JDK 배포판을 “candidate”로 관리합니다. 보통 Temurin(Adoptium) 을 많이 씁니다.
sdk list java
sdk install java 17.0.10-tem
sdk default java 17.0.10-tem
java -version
javac -version
버전 문자열(예:
17.0.10-tem)은 시점에 따라 달라질 수 있어요.sdk list java에서 최신 17 Temurin을 골라 설치해 보세요.
3) IntelliJ IDEA 설정 체크 포인트
IntelliJ에서 프로젝트를 만들 때 아래 2가지만 확실히 맞추면, 대부분의 “왜 실행이 안 되지?”가 사라집니다.
- Project SDK: 설치한 JDK 17 선택
- Language level: SDK default(17) 또는 Java 17로 맞춤
경로:
- macOS:
IntelliJ IDEA > Settings(Preferences) > Build, Execution, Deployment > Build Tools(Gradle/Maven 사용 시) - 공통:
File > Project Structure > Project
Gradle을 쓴다면(초보자도 자주 선택하는 방식), 추가로 이 설정을 권장합니다.
Settings > Build Tools > Gradle > Gradle JVM을 Project SDK(JDK 17) 로 지정- 이게 다르면 “코드는 17인데 Gradle은 11로 빌드” 같은 혼란이 생깁니다.
4) 첫 Hello World (바로 실행 가능한 단일 파일)
IntelliJ에서 새 프로젝트(“Java”)를 만들고 src/Main.java로 아래 코드를 저장한 뒤 실행해 보세요.
public class Main {
public static void main(String[] args) {
System.out.println("Hello, Java 17!");
System.out.println("Java version: " + System.getProperty("java.version"));
System.out.println("Java vendor : " + System.getProperty("java.vendor"));
}
}
- IntelliJ의 실행 버튼(▶)으로 실행해도 되고,
- 터미널에서 컴파일/실행해도 됩니다.
javac Main.java
java Main
(선택) “JDK 선택 → 컴파일 → 실행” 흐름 한눈에 보기

flowchart LR
A["JDK 설치/선택 (SDKMAN!)"] --> B["IDE(Project SDK) 설정"]
B --> C[javac 컴파일]
C --> D[java 실행]
B --> E["Gradle/Maven JVM 설정"]
E --> C
JDK 버전이 IDE와 빌드 도구에서 일치해야 결과가 안정적으로 나옵니다.
실무 팁
💡 실무에서는: “프로젝트별 JDK 고정”을 습관처럼 가져가세요
- SDKMAN!을 쓰면 프로젝트 폴더에서
sdk env init로.sdkmanrc를 만들고, 해당 디렉터리 진입 시 JDK를 자동 전환할 수 있어요. - 팀에서 “이 레포는 JDK 17”처럼 레포 단위로 기준을 고정하면, 온보딩 시간이 확 줄어듭니다.
💡 실무에서는: IntelliJ에서 빨간 줄이 보이면 “Gradle JVM”부터 확인해 보세요
- 코드는 JDK 17 문법인데, Gradle JVM이 11로 잡혀 있으면 빌드가 실패하거나 IDE 인덱싱이 꼬일 수 있습니다.
- 특히 멀티모듈/레거시 프로젝트에서 이 문제가 자주 나오니,
Gradle JVM = Project SDK를 기본값처럼 맞춰두는 게 안전합니다.
핵심 요약: SDKMAN!으로 JDK 17을 설치하고 기본 버전을 고정하세요.
IntelliJ의 Project SDK와 (Gradle/Maven 사용 시) 빌드 JVM을 같은 JDK로 맞추는 게 가장 중요합니다.
Hello World로 버전/벤더까지 출력해 보면 환경이 제대로 잡혔는지 바로 확인할 수 있어요.
다음 글: #03 변수와 타입 — 이것만 알면 된다
'JAVA' 카테고리의 다른 글
| Java 연산자와 제어문 핵심 정리 — if/switch, 반복문, 비교 연산 실수 방지 (0) | 2026.02.13 |
|---|---|
| Java 변수와 타입 — 이것만 알면 된다 (기본 타입 8가지, var, 타입 추론까지) (0) | 2026.02.13 |
| Java는 왜 아직도 쓸까? — 생태계 현황과 JDK LTS 버전 선택 가이드 (0) | 2026.02.12 |
| 📦 Java Stream의 핵심, collect() 완전 정복 (0) | 2025.06.23 |
| String null 빈값 체크 (0) | 2020.01.13 |