- [Kotlin] Kotlin이란 무엇일까?2025년 09월 02일
- ZaMan
- 작성자
- 2025.09.02.:02

Kotlin은 Jetbrain에서 개발한 현대적이고 범용적인 언어로, 자바와 완전히 호환되면서 자바보다 더 간결하고 안전한 코드를 작성할 수 있는 것이 특징입니다.
탄생 배경
Java의 한계
Java는 1995년에 개발돼서 오랜 기간동안 쓰이다 보니 한계가 드러났습니다.
보일러플레이트 코드
단순한 작업도 너무 많은 코드를 써야 합니다.
예시) getter/setter, equals, hashCode 등Null 안정성 부족
Java의 가장 큰 단점중 하나는 NullPointerException(NPE)로 많은 버그가 null 때문에 발생합니다.
컴파일 속도
컴파일 속도가 느려서 대규모 프로젝트에서는 개발 생산성이 떨어집니다.
이런 한계들로 인해 Java를 사용하며 제품을 개발한 Jetbrain에서는 직접 더 나은 언어를 만들자라는 결심으로 코틀린을 2016년에 정식으로 출시하였습니다.
Kotlin의 장점
코틀린은 단순하게 Java를 대체할려는 것이 아닌, Java 개발자들이 자연스럽게 옮겨올 수 있도록 설계하였습니다.
Java와 운영성
자바에서 사용하는 List<String> 같은 Java 표준 라이브러리를 코틀린에서 그대로 사용이 가능하고, 같은 프로젝트에서 .java와 .kt를 동시에 사용해도 정상적으로 작동합니다.
즉, 기존 프로젝트들 다 갈아엎지 않고 코틀린 도입이 가능해졌습니다. 그래서 많은 프로젝트에서 리스크 없이 코틀린으로 전환이 가능합니다.
간결성
Java는 작은 기능에도 코드를 너무 많이 작성해야하는 단점이 있습니다.
예시로, 데이터를 담는 DTO나 엔티티 클래스는 **필드 생성자, getter/setter 등을 다 작성해야 합니다.
코틀린에서는 이거를 data class를 도입해서 해결을 하였습니다.
data class User(val name: String, val age: Int)그리고 val과 var 키워드를 통해 자동으로 getter/setter를 생성해줍니다.
결과적으로 코드 길이가 줄고 가독성이 높아져서 유지보수가 쉬워집니다.
안정성
Java의 최대 문제는 NullExceptionPointer(NPE)입니다.
코틀린에서는 타입 시스템 자체에서 null 여부를 구분합니다.
String // null 불가 String? // null 허용컴파일 시점에서 null 가능성을 체크하여 런타임 오류를 방지합니다.
?.과 ?:로 간결하고 안전하게 null 처리가 가능합니다.// name이 null이면 length 값에 0 대입 val length = name?.length ?: 0결과적으로 null로 인하여 발생하는 런타임 오류를 줄여줍니다.
Kotlin 왜 잘 안쓸까?
이미 Java로 만들어진 프로그램이 많다
현재 Java로 만든 프로그램이 대부분이고, 코틀린으로 다 변경을 하기에는 시간과 돈이 많이 듭니다.
그래서 회사들은 "바꿀 필요가 있나?"라는 생각으로 Java를 계속 쓰는 경우가 많습니다.
Java 개발자는 구하기 쉽다
코틀린은 출시된지 자바에 비해서 별로 안됐습니다.
그래서 코틀린은 아직 배우는 사람이 자바보다 적어서 새 직원을 뽑기 어렵기 때문에 Java를 많이 사용합니다.코틀린도 불편한 점이 있다
코틀린을 Java 라이브러리랑 섞어서 사용하면 충돌이 발생할 수도 있습니다.
특히 JPA는 Java 기준으로 만들어져서 코틀린을 사용하면 꼬일 때도 있습니다.Java도 발전을 하고 있다
Java도 가만히 있는 것이 아닌 var, record, 람다 같은 것을 지원하면서 코틀린과의 차이를 점점 줄이고 있습니다.
코틀린은 짧고 편리하고 안전하지만, Java가 이미 널리 쓰이고 있고, 만만치 않게 발전을 하고 있어서 두 언어의 장단점을 따져봤을때 Java가 좋은지 코틀린이 좋은지는 정확하게 정할 수 없을 것 같습니다.
다음글이전글이전 글이 없습니다.댓글