코틀린의 특징, 코틀린과 자바의 차이는 무엇일까?

개발된 장소에 가까운 섬의 이름이 유래인 코틀린(Kotlin). 최근 안드로이드 애플리케이션 개발에서 새로운 공식 프로그래밍 언어로 채택된 코틀린은 구글(Google)사에서 적극적으로 권장하고 있습니다.

그렇다면 기존의 안드로이드 개발 주력 언어였던 자바(Java)와는 어떠한 차이가 있고 어떤 특징, 장점, 장래성을 가지고 있을까요? 그리고 실제 코딩에 있어서 주의점에는 어떤 것이 있을까요? 간단히 알아보도록 하겠습니다.

코틀린(Kotlin)이란?

코틀린 프로그래밍 언어
로고

코틀린은 체코의 소프트웨어 개발사인 JetBrains에서 2011년에 개발한 Java 가상머신 동작 기반의 객체 지향 프로그래밍 언어입니다.

안드로이드 개발로 주목받는 코틀린

코틀린은 2017년, 구글에서 안드로이드 개발 언어로 공식 채택 되었고, 그 이후로 대부분 안드로이드 앱 개발 용도로 사용되며, 다른 분야에서의 사용은 미미한 편입니다.

웹, 서버 개발 가능

물론 안드로이드 외에도 웹개발이나 서버 측의 개발도 가능합니다. 아직까지 큰 점유율을 보이고 있지는 않으나, 서버 사이드 프레임워크인 스프링(Spring)을 코틀린으로 개발하려는 시도는 계속 되고 있습니다.

코틀린과 스프링 프레임워크 조합을 이용하면 어느테이션 기반의 라우팅과 컨트롤러를 정의함으로써 웹개발도 할 수 있게 됩니다.

코틀린의 다섯 가지 특징, 자바와 비교

코틀린이 안드로이드 앱개발 공식 언어로 채택된 배경에는 많은 이유가 존재합니다. 앞으로 안드로이드 네이티브앱 개발에 종사한다면, 자바와의 차이와 관계성을 제대로 파악해 두는 것이 중요합니다.

1. 코틀린은 함수의 자료형 선언을 뒤에 둔다.

자바나 C언어 등 많은 프로그래밍 언어는 함수의 자료형을 앞에 두는 것을 규칙으로 하고 있습니다. 그러나 코틀린의 경우에는 UML, SQL과 같이 뒤에 둡니다. 그렇게 함으로써 함수 이름과 매개 변수 이름을 먼저 볼 수 있기에 가독성이 향상되는 효과를 얻게 됩니다.

fun add(a:Int, b:Int) : Int {
      return a + b
}

2. 코틀린은 세미콜론(;)을 생략할 수 있다.

자바에서는 문장의 끝에 반드시 세미콜론을 넣어야 하고, 넣지 않으면 에러 표시가 생기면서 컴파일 실패가 발생하게 됩니다. 하지만 코틀린에서는 생략할 수 있습니다.

세미콜론을 생략하는 것으로 코드의 가독성 향상, 간략화, 주석을 이용한 쉬운 유지보수 등의 효과를 기대할 수 있게 됩니다.

다만, 한 줄에 복수의 코드를 사용하려면 세미콜론이 필요합니다. 코틀린에서는 세미콜론을 아예 배제하는 것이 아닌, 사용하는 곳이 적을뿐이라는 점을 주의하세요.

3. if 및 switch 처리

코틀린에서는 if와 switch의 사용이 자바와는 다릅니다. 코틀린의 조건 분기는 if에서도 가능하지만, 이 때의 if문은 값을 리턴할 수 있다는 점을 염두해야 합니다.(하단의 예시 코드 참조)

또한, 코틀린에서는 switch문에 의한 조건 분기가 존재하지 않고, when 문법이 이를 대체합니다. when 문법이 더 심플하고, 더욱 직관적이라는 특징이 있습니다.

fun main() {
    val a = 1
    val b = 2
    
    val bigValue = if(a > b) a else b
    
    println(bigValue)
}
fun main() {
    val num = 100
    val str = when(num) {
        in 50 until 100 -> "A" // 50 ~ 99 
        in 50..100 -> "B" // 50 ~ 100
        else -> "C"
    }
    println(str)
}

4. 코틀린의 변수 선언은 val과 var 2개

코틀린의 변수 선언에서는 val과 var 두 가지를 사용할 수 있습니다.

  • val : 변수의 내용을 나중에 변경할 수 없으며, 상수로 취급
  • var : 변수의 내용을 선언 후에도 자유롭게 변경 가능

상황에 따라 val과 var를 구분해서 사용하는 것이 큰 특징입니다.

5. 코틀린은 람다식을 사용할 수 있다.

익명 함수를 의미하는 람다식을 사용할 수 있는 것은 코틀린의 큰 메리트입니다. 함수를 따로 정의하지 않고, 코드에 익명 함수를 만들어서 가독성을 높일 수 있다는 점에서 함수형 프로그래밍의 특징 또한 지니고 있습니다.

람다식은 또한 고차 함수에서 인자로 전달하거나 결과값으로 반환할 수도 있습니다.

fun main() {
    val add = fun(a: Int, b: Int): Int = a + b

    println(add(1, 2))
}
fun main() {
    val add = fun(a: Int, b: Int): Int = a + b

    println(second(add))
}

fun second(addFunc:(Int, Int)->Int) : Int {
    return addFunc(3, 2);
}

코틀린의 네 가지 장점

코틀린이 가지는 다양한 특징은 안드로이드 개발에 있어서 많은 이점을 가져옵니다. 자바의 메리트를 계승하면서도 자바가 안고 있던 과제들을 해결할 수 있는 코틀린의 장점들을 살펴보겠습니다.

1. 자바보다 코드가 간결하고 가독성이 좋다.

자바에서 복수의 행을 필요로 하는 코드도 코틀린에서는 짧고 심플하게 표현할 수 있습니다. 따라서 코딩 작업 시간을 단축시켜서 생산성을 높일 뿐만 아니라, 추후의 유지보수도 더욱 용이하게 만들어 줍니다.

2. 자바와 상호 작용

코틀린은 자바와 100% 호환됩니다. 그 때문에 자바의 소스 코드가 있으면, 그대로 코틀린으로 변환해서 사용할 수도 있고 이후의 소스코드를 코틀린으로 이어서 작성하는 것도 가능합니다.

자바와 코틀린은 프로그래밍 언어로서 공유하고 있는 부분이 많기 때문에, 어느 한 쪽을 습득하고 있으면 다른 쪽의 습득도 쉬운 편입니다.

3. 높은 안전성

코틀린은 현업에서 이용되고 있는 최신형 범용 언어로서 사용되는 문법들을 가져왔기 때문에, 안정적이고 별도 예외처리 없이도 버그가 발생하기 어려운 코드를 자연스럽게 작성하도록 해줍니다.

예를 들어 자바에서 빈번하게 발생하던 NullPointException을 방지하기 위해서, 코틀린에서는 Null 위험성이 있는 변수를 참조하려 한 것만으로도 명령 프롬프트 에러를 출력하게 됩니다. 이러한 코틀린의 구조가 자바에 비해서 안전성이 높다고 평가되는 이유입니다.

4. 지속적인 업데이트와 지원

상단에서도 언급한 부분으로, 코틀린은 구글에서 권장하고 있는 언어이기 때문에 코틀린을 사용하는 개발자는 구글의 지속적인 업데이트와 개발 지원을 받을 수 있습니다.

일반적인 오픈소스 프로그래밍 언어였던 코틀린은 구글에 의해 안드로이드 개발의 공식 언어로 자리매김하면서 이미 많은 부분이 최신 트렌드에 맞게 바뀌기도 하였습니다.

코틀린 사용에 주의점이 있다면?

코틀린은 안드로이드 개발에 있어서 많은 기대를 받고 있고, 안정성도 있는 언어이지만, 다음과 같은 측면에서는 주의해야 할 점도 있습니다.

1. 자바에 비해 부족한 문서의 양

코틀린은 안드로이드 개발에 있어서 결국 자바의 후발주자나 다름없기 때문에, 참조할 수 있는 웹사이트나 문서의 수는 10년간 축적되어온 자바에 비해 적은 편입니다.

하지만 이는 시간이 지남에 따라 점점 해결될 문제이고 23년 기준으로도 코틀린에 관해 상당한 수의 정보가 올라온 상태이며, 학습 자료는 구글에서도 지속적으로 올리고 있습니다.

2. 활용이 비교적 적다.

본격적으로 사용된 지 얼마 되지 않았기에, 코틀린 개발자를 채용하는 기업은 비교적 적은 편입니다. 안드로이드 초창기부터 개발된 프로젝트들은 따로 리팩토링을 진행하지 않는 한, 여전히 자바를 사용한 유지보수를 할 것입니다. 다만, 이는 안드로이드 스튜디오 자체적으로 코틀린 마이그레이션 기능을 제공하고 있기 때문에 변화의 여지가 늘었습니다.

게다가 활용되는 분야 또한 안드로이드로 한정되었다고 봐도 무방할 것입니다.

하지만 안드로이드 개발에 있어서는 코틀린이 이미 주류가 되었다고 봐도 될 정도이니, 코틀린의 장래성은 긍정적으로 봐도 좋을 것 같습니다.

마치며

구글이 코틀린을 채택하게 된 배경에 있어서는 자바의 저작권을 가진 오라클과의 소송이라는 어두운 면도 있겠으나, 자바에 비해 뛰어난 부분을 인정하고 우수하다는 것 또한 인정했다는 이유도 있을 것입니다. 그리고 이러한 구글의 판단은 추후 다른 기업들의 판단에도 영향을 줄 여지가 있을 수 있습니다.

이미 iOS 개발에서는, 이전의 Objective-C를 새로운 언어인 Swift가 뛰어넘었던 것처럼 안드로이드 진영에서도 후발의 Kotlin이 선발의 Java를 제치는 것은 예상되는 일이며, 현재진행형일지도 모릅니다.

새로운 변화에 적응하고 엔지니어로서의 스킬을 높여서 더욱 멋진 앱을 만들어보도록 합시다!

평점

Leave a Comment