Kotlin에 대해 - LOG.INFO

이번에 내가 다니는 대학교 연구실에서 안드로이드 어플리케이션을 개발하는 일을 맡게 되었다. 코드가 Kotlin으로 되어 있어 새로이 Kotlin을 배우게 되었고, 배우면서 알게된 점을 정리해보았다.

Kotlin이란?

Kotlin은 Jetbrain에서 고안한 JVM 위에서 돌아가는 statically typed 프로그래밍 언어다. 구글과 오라클의 오랜 Java전쟁의 여파로 2017 구글IO 에서 안드로이드의 공식 언어로 Kotlin을 지정하게 되었다. Kotlin의 목표는 풀스택 웹 개발이라고 한다. Android와 iOS앱, Spring과 같은 백엔드 그리고 임베디드와 IoT등 모든 개발을 다양한 플랫폼에서 Kotlin만으로 개발할 수 있도록 하는 것이라고 하며 이번 발표 이후에도 안드로이드에만 집중하지않고 꾸준히 발전할 것이라고 한다.

장점

  • Java와 100% 호환이 되어 기존의 방대한 Java의 Library, Framework들을 손 쉽게 갖다 쓸 수 있다.
    • Ant, Maven, Gradle과 같은 빌드 시스템을 사용할 수 있다.
    • 이로써 가장 큰 장벽을 넘은 셈
  • Java 개발자들을 수 없이 괴롭혀 왔던 NPE(Null Pointer Exception)에서 자유롭다.
  • Java의 Boilerplate코드들을 줄여주고 간결한 코드를 작성할 수 있는 문법을 제공한다.
    • getter / setter의 번거로움을 줄여준다.
    • 함수를 class 밖에서 선언할 수 있다. (편리성, 자유도)
  • Functional Programming 지원

한계

그렇다고 Kotlin이 은탄환은 아니며 다음과 같은 단점이 존재한다.

  • 느린 빌드 속도
    • 코틀린은 보통 빌드 속도의 25%, 클린 빌드의 40%라고 한다.
  • 아직 크고 있는 코틀린
    • 음.. 이게 제일 무섭다
  • 적은 레퍼런스
    • ㅠ…

꼬리를 물고 물어~~~

  • 정적 타입? 동적 타입?
    • 정적 타입 : ‘타입’ 즉 자료형을 컴파일 시에 결정하는 것
      • 컴파일 시에 자료형에 맞지 않은 값이 들어있으면 컴파일 에러가 발생
      • C, C#, C++, Java, Kotlin
      • 장점
        • 컴파일 시에 타입에 대한 정보를 결정하기 때문에 속도 향상
        • 타입 에러로 인한 문제점을 초기에 발견할 수 있어 타입의 안정성↑
    • 동적 타입 : 컴파일 시 자료형을 정하는 것이 아니고 실행 시에 결정
      • JavaScript, Ruby, Python, SmallTalk
      • 장점
        • Run time까지 타입에 대한 결정을 끌고 갈 수 있기 때문에 많은 선택의 여지가 있음
      • 단점
        • 인터프리터 언어는 배우기는 쉬우나 실행 도중에 변수에 예상치 못한 타입이 들어와 Type Error 를 뿜는 경우가 생길 수 있음

참고문헌