🎯 Kotlin이란?
📖 정의
Kotlin은 JetBrains에서 개발한 현대적이고 실용적인 프로그래밍 언어입니다. Java와 100% 상호 운용이 가능하며, Android 공식 언어로 채택되었습니다. 간결하고 안전하며, 개발자 생산성을 높이는 것을 목표로 합니다.
🎯 비유로 이해하기
Kotlin은 업그레이드된 도구
Java = 오래된 믿음직한 공구함
├─ 안정적이고 신뢰할 수 있음
├─ 하지만 무겁고 복잡함
└─ 매번 장황한 코드 필요
Kotlin = 최신 전동공구
├─ Java의 모든 기능 포함
├─ 더 가볍고 사용하기 쉬움
├─ 안전장치(Null Safety) 기본 탑재
└─ 같은 작업을 더 빠르게
💡 주요 특징
1. 간결함 (Concise)
├─ 보일러플레이트 코드 최소화
├─ Java보다 코드량 40% 감소
└─ 읽기 쉬운 문법
2. 안전함 (Safe)
├─ Null 안전성 내장
├─ NullPointerException 방지
└─ 타입 안전성
3. 상호 운용성 (Interoperable)
├─ Java 코드와 100% 호환
├─ 기존 Java 라이브러리 사용 가능
└─ 점진적 마이그레이션 가능
4. 다중 플랫폼 (Multiplatform)
├─ JVM (Java Virtual Machine)
├─ Android
├─ JavaScript
├─ Native (iOS, Desktop)
└─ 하나의 코드로 여러 플랫폼
🆚 Java vs Kotlin
같은 기능, 다른 코드
데이터 클래스 비교:
// Java - 장황함
public class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public boolean equals(Object o) {
// ... 20줄 정도의 equals 코드
}
@Override
public int hashCode() {
// ... 5줄 정도의 hashCode 코드
}
@Override
public String toString() {
return "User{name='" + name + "', age=" + age + "}";
}
}
// Kotlin - 간결함
data class User(val name: String, val age: Int)
Null 안전성 비교:
// Java - Null 체크 필수
String name = user.getName();
if (name != null) {
int length = name.length();
}
// Kotlin - 안전한 호출
val length = user.name?.length
🚀 어디에 사용하나요?
Android 앱 개발
├─ Google의 공식 권장 언어
├─ Jetpack Compose
└─ 대부분의 신규 Android 앱
백엔드 개발
├─ Spring Boot
├─ Ktor (Kotlin 전용 프레임워크)
└─ 마이크로서비스
멀티플랫폼 앱
├─ Kotlin Multiplatform Mobile (KMM)
├─ iOS와 Android 동시 개발
└─ 코드 공유
데스크톱 애플리케이션
├─ IntelliJ IDEA (Kotlin으로 개발됨)
└─ Compose Desktop
🎓 학습 로드맵
이 시리즈는 Kotlin을 처음 시작하는 분들을 위한 완벽한 가이드입니다:
1단계: 시작하기
- 왜 Kotlin인가? - Kotlin을 배워야 하는 이유
- IntelliJ 설치 - 개발 환경 준비
- Gradle 설정 - 프로젝트 설정
- 첫 프로젝트 - Hello World!
2단계: 기초 문법
- 변수 - val과 var
- 타입 시스템 - Int, String, Boolean 등
- 문자열 - 문자열 다루기
- 연산자 - 사칙연산, 비교, 논리 연산
- if와 when - 조건문
- 반복문 - for, while
3단계: 함수
4단계: 객체지향
5단계: 고급 기능
💻 간단한 예제
Hello World
fun main() {
println("Hello, Kotlin!")
}
변수와 타입
fun main() {
val name = "홍길동" // 불변 변수 (권장)
var age = 25 // 가변 변수
age = 26 // OK
// name = "김철수" // 컴파일 에러!
println("이름: $name, 나이: $age")
}
함수
fun add(a: Int, b: Int): Int {
return a + b
}
// 표현식 형태 (더 간결!)
fun multiply(a: Int, b: Int) = a * b
fun main() {
println(add(5, 3)) // 8
println(multiply(4, 7)) // 28
}
클래스
class Person(val name: String, var age: Int) {
fun introduce() {
println("안녕하세요, $name입니다. ${age}살입니다.")
}
}
fun main() {
val person = Person("홍길동", 25)
person.introduce() // 안녕하세요, 홍길동입니다. 25살입니다.
}
Null 안전성
fun main() {
var name: String = "Kotlin"
// name = null // 컴파일 에러!
var nullableName: String? = "Kotlin"
nullableName = null // OK
// 안전한 호출
println(nullableName?.length) // null
// Elvis 연산자
val length = nullableName?.length ?: 0
println(length) // 0
}