본문 바로가기

Kotlin

[Kotlin] Kotlin의 등장 배경, Java와의 차이점, 장점과 단점

728x90

코틀린( Kotlin ) 등장 배경

자바는 1990년대에 만들어진 성공적인 프로그래밍 언어입니다.

하지만 시간이 지나면서 몇 가지의 한계가 드러나기 시작했습니다.

 

자바의 한계

  1. 장황한 문법: 보일러플레이트 코드(중복되는 코드를 많이 작성하는 문제)가 많아, 간단한 작업도 길고 복잡한 코드로 작성해야 합니다.
  2. NullPointException: 자바에서 NPE 문제가 빈번하게 발생을 하며 개발자들이 흔히 겪는 문제입니다.
  3. 현대적 기능 부족: 프로그래밍 언어에서 흔히 지원하는 람다 표현식, 함수형 프로그래밍, 확장 함수, 코루틴 같은 기능이 부족합니다.
  4. 개발 속도 한계: 대규모 애플리케이션 개발 시 자바는 간결한 코드를 지원하지 않아 생산성에 제약이 있습니다.

 

제트브레인즈(JetBrains)의 역할

코틀린은 제트브레인즈(JetBrains)라는 소프트웨어 개발 도구를 만드는 회사에서 개발했습니다.

JetBrains는 IntelliJ IDEA라는 유명한 IDE(통합 개발 환경)를 만드는 회사로, 자바 개발에 오랫동안 종사한 경험이 있었습니다. JetBrains는 자바 개발자들이 겪는 문제점을 아주 잘 알고 있었고, 이를 해결하기 위해 코틀린을 개발했습니다.

 

코틀린 개발 목표

제트브레인즈는 코틀린을 개발할 때 이러한 목표를 세웠습니다.

  1. 자바와 완벽한 상호 운영성
    • 기존의 자바 코드와 완전히 호환되며, 자바로 작성된 라이브러리와 프로젝트에 쉽게 통합될 수 있어야한다.
  2. 더 간결한 문법
    • 자바에 비해 더 간결하고 읽기 쉬운 코드를 제공해야한다.
  3. Null 안전성
    • NPE 문제를 원천적으로 해결할 수 있는 기능을 포함해야 한다.
  4. 개발 생산성 향상
    • 불필요한 코드를 줄이고 코드를 쉽게 작성하고 유지 관리할 수 있어야 한다.

 

안드로이드 개발과의 연결

코틀린은 개발된 초기에 JVM에서 실행되는 자바 대체 언어로 주로 서버 개발에 주목을 받았으나 구글이 안드로이드의 공식 개발 언어로 코틀린을 채택하면서 폭발적인 인기를 얻게 되었습니다.

자바를 기반으로 한 안드로이드 개발에서 코틀린의 간결하고도 안전한 Null처리 기능이 특히 큰 장점으로 부각되었습니다.

 

 

오픈소스 언어

코틀린은 오픈소스로 개발되었으며, GitHub에서 소스 코드를 공개했습니다. 이로 인해 많은 개발자들과 커뮤니티가 코틀린 개발에 참여할 수 있었고, 빠르게 기능을 개선하고 새로운 도구와 라이브러리를 추가하는 데 기여했습니다.

 

 

 

 

코틀린 장점

  1. 간결함
    • 자바에 비해 코드가 훨씬 간결합니다.
    • 불필요한 보일러플레이트 코드(예: 세터와 게터, equals, hashCode 등)를 제거하고, 더 직관적으로 코드를 작성할 수 있게 해줍니다.
  2. Null 안전성
    • NullPointerException을 방지하는 기능이 내장되어 있습니다.
    • 컴파일 시에 null 관련 오류를 미리 잡아내며 이를 통해 더 안정적인 코드를 작성할 수 있습니다.
  3. 람다 표현식 지원
  4. 스마트 캐스팅
    • 타입 검사 후에 자동으로 변수를 적절한 타입으로 캐스팅하는 기능을 제공합니다.
    • 이를 통해 불필요한 타입 캐스팅을 줄일 수 있습니다.
  5. 확장 함수
    • 기존 클래스에 직접적인 수정 없이도 메서드를 추가할 수 있습니다.
    • 예를 들어, String이나 List 같은 자바 클래스에 새로운 함수를 추가할 수 있어 코드의 가독성을 높입니다.
  6. 코루틴(Coroutines)
    • 비동기 프로그래밍을 쉽게 구현할 수 있는 코루틴 기능을 제공하여, 성능 저하 없이 간결하게 비동기 처리를 할 수 있습니다.

 

코틀린 단점

  1. 러닝 커브
    • 자바에 익숙한 개발자들에게는 코틀린의 새로운 문법과 개념들(특히 함수형 프로그래밍 스타일과 코루틴)이 적응하기 어려울 수 있습니다.
  2. 컴파일 속도
    • 코틀린은 자바보다 컴파일 시간이 더 오래 걸리는 경우가 있습니다.
    • IntelliJ 내부의 컴파일은 점진적이며 자바만큼 빠르지만 Gradle을 통한 컴파일은 점진적이지 않기때문에 속도가 느립니다.
    • 컴파일을 Gradle이 아니라 IntelliJ 로 변경하여 컴파일하면 해결 할 수 있습니다.
    • 이는 특히 대규모 프로젝트에서 느껴질 수 있는 단점입니다.
  3. 라이브러리 호환성 문제
    • 대부분의 자바 라이브러리와 호환되지만, 일부 특수한 경우에는 호환성 문제나 불안정한 동작을 겪을 수 있습니다.
    • 즉, 완벽하게 호환되지 않습니다만 대부분의 라이브러리는 호환이 가능합니다.
  4. 안드로이드 외의 사용 사례 제한
    • 코틀린은 안드로이드 개발에 많이 사용되지만, 안드로이드 외의 분야(예: 서버 사이드, 데스크톱 애플리케이션)에서는 아직 자바만큼 널리 사용되지 않습니다.
    • 다만, Gradle, Spring 등에서도 코틀린을 지원하며 점차 확산되고 있습니다.
728x90

'Kotlin' 카테고리의 다른 글

[Kotlin] 여러 가지 타입 변환  (0) 2024.09.26
[Kotlin] 배열 사용, 출력 방법  (3) 2024.09.26
[Kotlin] 변수 선언  (3) 2024.09.25