Kim-Baek 개발자 이야기

Kotlin 시작하기 | 왜 Kotlin인가? 개발환경 설정부터 Hello World까지 본문

개발/java basic

Kotlin 시작하기 | 왜 Kotlin인가? 개발환경 설정부터 Hello World까지

김백개발자 2025. 12. 21. 00:34
반응형

이 글을 읽으면: Java 개발자가 Kotlin을 배워야 하는 이유와 5분 만에 첫 프로젝트를 시작하는 방법을 알 수 있습니다. IntelliJ 설치부터 Hello World까지 단계별로 따라하세요.


📌 목차

  1. 들어가며 - 왜 Kotlin을 배워야 할까?
  2. Kotlin vs Java - 코드량이 40% 줄어든다?
  3. 개발 환경 설정 - IntelliJ IDEA 설치
  4. 첫 프로젝트 만들기 - 5분이면 충분합니다
  5. Hello World 작성 및 실행
  6. 변수 선언 맛보기 - val과 var
  7. 마무리 - 다음 편 예고

들어가며 - 왜 Kotlin을 배워야 할까?

솔직히 말하면, 저도 처음엔 회의적이었습니다.

5년간 Java로 Spring Boot, JPA, Stream API까지 다 익혔는데... "굳이 Kotlin을 배워야 하나?" 싶었죠.

그런데 팀에서 신규 프로젝트를 Kotlin으로 시작하기로 결정했고, 떠밀리듯 배우기 시작했습니다.

첫 코드를 작성하고 충격받았습니다.

// Java - 20줄
public class User {
    private final Long id;
    private final String name;
    private final String email;
    
    public User(Long id, String name, String email) {
        this.id = id;
        this.name = name;
        this.email = email;
    }
    
    public Long getId() { return id; }
    public String getName() { return name; }
    public String getEmail() { return email; }
    
    @Override
    public boolean equals(Object o) { /* 생략 */ }
    
    @Override
    public int hashCode() { /* 생략 */ }
    
    @Override
    public String toString() { /* 생략 */ }
}
// Kotlin - 1줄
data class User(val id: Long, val name: String, val email: String)

"이게... 가능하다고?"

같은 기능인데 코드량이 20배 차이가 났습니다.


Kotlin vs Java - 코드량이 40% 줄어든다?

Kotlin을 배워야 하는 5가지 이유를 실제 코드로 보여드리겠습니다.

1️⃣ NullPointerException 컴파일 타임 차단

Java의 고질적인 문제:

// Java - 언제 터질지 모르는 NPE
String name = user.getName();  // user가 null이면? 💥
int length = name.length();    // name이 null이면? 💥

Kotlin의 해결법:

// Kotlin - 컴파일 에러로 미리 차단
val name: String? = user?.name  // ?로 null 가능성 명시
val length = name?.length ?: 0  // null이면 0 반환

컴파일 타임에 NPE를 99% 방지합니다.

2️⃣ Boilerplate 코드 제거

Java의 불편함:

// Java - 매번 작성해야 하는 getter/setter
private String name;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

Kotlin의 간결함:

// Kotlin - 자동 생성
var name: String

getter/setter가 자동으로 생성됩니다.

3️⃣ 문자열 처리가 Python처럼 편리

Java:

// Java - 지저분한 문자열 결합
String message = "이름: " + name + ", 나이: " + age + "세";

Kotlin:

// Kotlin - 문자열 템플릿
val message = "이름: $name, 나이: ${age}세"

4️⃣ Java와 100% 호환

기존 Java 프로젝트에 점진적으로 도입 가능합니다.

  • 같은 프로젝트에 .java와 .kt 파일 공존 ✅
  • Java 라이브러리 그대로 사용 가능 ✅
  • Spring Boot, JPA 등 기존 프레임워크 완벽 지원 ✅

5️⃣ 업계 표준으로 자리잡음

  • Android 공식 언어 (Google 권장)
  • Spring 공식 지원 (Spring Boot 가이드에 Kotlin 추가)
  • JetBrains (IntelliJ 개발사) 직접 개발

개발 환경 설정 - IntelliJ IDEA 설치

1단계: IntelliJ IDEA 다운로드

Community 버전은 무료입니다!

➡️ IntelliJ IDEA 다운로드

  • Windows / Mac / Linux 모두 지원
  • Community Edition 선택 (무료)
  • Ultimate Edition은 Spring Boot 등 추가 기능 (유료)

2단계: Kotlin 플러그인 확인

IntelliJ IDEA 2023 이상은 Kotlin이 기본 내장되어 있습니다.

확인 방법:

Settings (Ctrl + Alt + S) 
→ Plugins 
→ "Kotlin" 검색 
→ 설치 확인

3단계: JDK 설치 확인

Kotlin은 JVM 위에서 돌아가므로 JDK가 필요합니다.

Settings → Build, Execution, Deployment → Build Tools → Gradle
→ Gradle JVM: 17 이상 권장

JDK가 없다면:

  • Adoptium (무료)
  • 또는 IntelliJ에서 자동 다운로드 가능

첫 프로젝트 만들기 - 5분이면 충분합니다

1단계: 새 프로젝트 생성

IntelliJ IDEA 실행
→ New Project
→ Kotlin 선택

2단계: 프로젝트 설정

  • Name: kotlin-tutorial
  • Location: 원하는 경로
  • Language: Kotlin
  • Build System: Gradle (Kotlin DSL)
  • JDK: 17 이상
  • Add sample code: 체크

3단계: 프로젝트 구조 확인

kotlin-tutorial/
├── src/
│   ├── main/
│   │   └── kotlin/
│   │       └── Main.kt        ← 여기에 코드 작성
│   └── test/
│       └── kotlin/
├── build.gradle.kts            ← Kotlin DSL
└── settings.gradle.kts

Hello World 작성 및 실행

Main.kt 파일 열기

src/main/kotlin/Main.kt 파일을 열어보세요.

fun main() {
    println("Hello World!")
}

이게 전부입니다!

Java와 비교

// Java - 복잡함
public class Main {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}
// Kotlin - 간결함
fun main() {
    println("Hello World!")
}

Kotlin 특징 분석

항목 Java Kotlin

키워드 public static void fun
클래스 필요 ✅ 필수 ❌ 불필요
파라미터 String[] args 필수 생략 가능
세미콜론 필수 (;) 생략 가능
출력 함수 System.out.println println

실행하기

방법 1: IntelliJ 버튼

  • main() 함수 왼쪽 ▶️ 버튼 클릭

방법 2: 단축키

  • Windows: Ctrl + Shift + F10
  • Mac: Cmd + Shift + R

방법 3: 터미널

./gradlew run

출력 결과

Hello World!

변수 선언 맛보기 - val과 var

기본 변수 선언

fun main() {
    val name = "규철"      // 불변 (Java의 final)
    var age = 30          // 가변
    
    println("이름: $name, 나이: $age")
    
    age = 31              // ✅ 가능
    // name = "Kim"       // ❌ 컴파일 에러!
}

Java와 비교

// Java
final String name = "규철";
int age = 30;

System.out.println("이름: " + name + ", 나이: " + age);

age = 31;              // OK
// name = "Kim";       // 컴파일 에러

핵심 차이점

기능 Java Kotlin

불변 변수 final 키워드 val 키워드
가변 변수 기본값 var 키워드
문자열 결합 + 연산자 $변수 템플릿
타입 추론 ❌ 명시 필수 ✅ 자동 추론

실행 결과

이름: 규철, 나이: 30

마무리 - 다음 편 예고

오늘 배운 것 ✅

  • Kotlin이 Java보다 코드량 40% 적은 이유
  • IntelliJ IDEA 설치 및 프로젝트 생성
  • Hello World 작성 및 실행
  • val, var 변수 선언
  • 문자열 템플릿 ($변수)

다음 편에서 배울 것 📚

2편: 변수와 타입 완벽 이해 | val vs var, 타입 추론, Nullable

  • val과 var의 심화 차이
  • 타입 추론 vs 명시적 타입 선언
  • nullable과 non-nullable의 차이 (? 연산자)
  • Java 개발자가 놓치기 쉬운 함정들

실습 과제 💪

  1. IntelliJ에서 Kotlin 프로젝트 생성
  2. 본인 이름과 나이를 출력하는 코드 작성
  3. val과 var의 차이 직접 테스트

자주 묻는 질문 (FAQ)

Q: Java를 모르는데 Kotlin부터 배워도 되나요?
A: 가능하지만 Java 기초 개념(클래스, 인터페이스 등)이 있으면 더 좋습니다.

Q: Android 개발 안 하는데도 배울 가치 있나요?
A: 네! Spring Boot 백엔드 개발에서도 점점 많이 사용됩니다.

Q: 회사에서 Java만 쓰는데 배워야 하나요?
A: 개인 프로젝트나 이직 준비에 유용하고, 최신 문법을 배우면 Java 코드도 개선됩니다.


관련 글


💬 댓글로 알려주세요!

  • Kotlin을 배우려는 이유는 무엇인가요?
  • Java에서 가장 불편했던 점은?
  • 이 글이 도움이 되셨나요?

 

반응형
Comments