[카테고리:] 미분류

  • 자바 -> 코틀린

    아래는 실제 현업에서 자바 엔지니어들이 코틀린으로 갈아타면서 “이건 진짜 자바보다 훨씬 낫다!”라고 느끼는 점만 완전판으로 모아봤습니다. (순전히 장점만, 단점은 쏙 뺐습니다)

    순위카테고리자바보다 압도적으로 나은 점 (실무 체감 순)체감 강도
    1Null 안전성NullPointerException 거의 사라짐. 기본이 Non-null, ?만 붙이면 Nullable. Safe-call(?.), Elvis(?:)로 한 줄 처리★★★★★
    2코드량 50~70% 감소Data class 한 줄로 getter/setter/equals/hashCode/toString 자동 생성. 세미콜론, getter/setter 수동 작성 안 해도 됨★★★★★
    3코루틴 (비동기 천국)스레드 대신 코루틴으로 비동기 코드가 순차적 코드처럼 보임. 안드로이드 메인 스레드 블로킹 완전 해결. RxJava보다 훨씬 직관적★★★★★
    4확장 함수기존 클래스(심지어 자바 클래스)에 새 함수 추가 가능. 예: fun String.isEmail() = …email.isEmail() 바로 사용★★★★★
    5스마트 캐스트if (obj is String) 하면 바로 obj.length 사용 가능. 명시적 캐스팅 필요 없음★★★★★
    6Data class 마법data class User(val name: String, val age: Int) → copy(), componentN(), destructuring 까지 자동 제공★★★★★
    7기본값 + Named argument함수 호출 시 매개변수 이름 쓰고 일부만 넘겨도 됨. 오버로딩 거의 필요 없음★★★★☆
    8Sealed classwhen식과 함께 쓰면 모든 케이스를 컴파일 타임에 검사 → 실수로 빠지는 케이스 없음★★★★☆
    9Type alias & Inline class긴 제네릭 타입 별칭 가능, 값 래핑 시 오버헤드 제로 (Kotlin 1.5+)★★★★☆
    10Delegation (위임)by lazy, ,by observable`, 인터페이스 위임이 언어 차원에서 지원 → Decorator 패턴 코드가 5줄로 줄어듦★★★★☆
    11문자열 템플릿"Hello $name, you have ${messages.count()} msgs" → 가독성 폭발★★★★☆
    12Collection 확장 함수list.filter { it > 0 }.map { it * 2 }.firstOrNull() → 체이닝이 훨씬 자연스러움★★★★☆
    13Flow (Reactive Stream)RxJava보다 훨씬 가볍고 직관적인 냉 스트림. Room + Flow 조합으로 DB 관찰이 3줄★★★★☆
    14Multiplatform동일 코드로 Android + iOS + Server + JS + Native 컴파일 가능 (점점 현실화 중)★★★★☆
    15컴파일 속도 (최신 기준)Kotlin 2.0 + K2 컴파일러 기준으로 Java와 거의 동급까지 따라잡음 (특히 인크리멘탈 빌드)★★★☆☆
    16최신 JVM 기능 선제 지원Java 21 virtual threads, records, pattern matching 등을 Java보다 먼저 지원 (예: Kotlin 2.0부터 context receivers 등)★★★☆☆
    17Gradle Kotlin DSLbuild.gradle.kts로 타입 세이프 빌드 스크립트 작성 가능★★★☆☆

    현업 개발자들 실제 한마디

    • “NullPointerException 때문에 디버깅하던 시간이 90% 줄었다”
    • “Data class + immutable(val) 쓰고 나서 equals/hashCode 버그가 완전히 사라졌다”
    • “코루틴 쓰고 나서 RxJava 코드 보면 눈아프다”
    • “확장 함수 때문에 유틸 클래스 거의 안 만든다”
    • “when + sealed class 쓰면 if-else 지옥에서 해방된다”

    결론:
    2025년 기준으로 안드로이드, 서버(Spring Boot), 멀티플랫폼 프로젝트라면 거의 모든 회사가 “신규 프로젝트는 무조건 코틀린”이라고 할 정도로 자바를 압도합니다.