Kotlin
무엇인가
Kotlin은 JetBrains가 만든 현대적인 정적 타입 언어로, Java Virtual Machine 위에서 실행되며 Java와 완전히 상호 운용된다. Google은 Kotlin을 Android 개발의 선호 언어로 채택했으며, 서버 측 코드, 멀티플랫폼 공유 로직, 심지어 네이티브나 JavaScript로의 컴파일에도 사용된다. 간결하고 안전하며 실용적인 것을 지향한다 — 군더더기 없는 Java라 할 수 있다.
강점
- 타입 시스템에 내장된 null 안전성으로 대부분의
NullPointerException충돌을 제거한다. - 간결함: 데이터 클래스, 확장 함수, 스마트 캐스트가 보일러플레이트를 극적으로 줄인다.
- 매끄러운 Java 상호 운용 — 어떤 Java 라이브러리든 사용하고, 파일 단위로 점진적으로 마이그레이션할 수 있다.
- 읽기 쉬운 비동기 및 동시성 코드를 위한 일급 코루틴 지원.
- Kotlin Multiplatform으로 Android, iOS, 백엔드 전반에 걸쳐 비즈니스 로직을 공유할 수 있다.
트레이드오프
- 대규모 프로젝트에서는 컴파일이 Java보다 느릴 수 있다.
- JVM은 네이티브 언어 대비 런타임과 일부 시작 오버헤드를 의미한다.
- Multiplatform과 Kotlin/Native는 성숙해지고 있지만 JVM 타깃만큼 실전 검증이 되지는 않았다.
- 일부 고급 기능(코루틴, DSL)은 학습 곡선이 있다.
언제 사용하는가
새로운 Android 앱이라면 무엇이든 Kotlin을 선택하고, Java보다 더 안전하고 간결한 코드를 원하는 JVM 백엔드 서비스에도 고려해보라. JVM 생태계가 맞는 곳이라면 어디서든 강력한 기본값이다.
바이브 코딩 적합성
Kotlin은 AI 어시스턴트와 잘 맞는다. 간결한 관용구 덕분에 생성하고 검토할 코드가 적고, null 안전성이 실수를 컴파일 타임에 드러내기 때문이다. 모델에게 var보다 불변 val을 선호하고, 모델 클래스에는 데이터 클래스를 사용하며, 수동 스레딩 대신 코루틴으로 suspending 함수를 작성하도록 요청하라. Android를 타깃으로 할 때는 Kotlin을 Jetpack Compose와 짝지어 UI와 로직이 하나의 현대적 언어를 공유하도록 하라.
data class User(val name: String, val active: Boolean = true)
fun activeNames(users: List<User>): List<String> =
users.filter { it.active }.map { it.name }
fun main() {
val users = listOf(User("Ada"), User("Lin", active = false))
println(activeNames(users))
}