brunch

You can make anything
by writing

C.S.Lewis

by 앱프리너 Nov 29. 2019

Android 앱 개발 : Kotlin vs Java

어떤 개발 언어를 Android 앱 개발에 사용하는 것이 좋을까?

최근 Android 개발 커뮤니티에서 발표한 내용 중에는 2017년 구글이 소개한 Kotlin의 사용자 수는 지속적으로 증가하고 있다는 평가 내용이 소개되었다. 당신이 안드로이드 앱을 개발한다면 어떤 개발 언어를 선택할 것인가? 이 글에서 중점적으로 다룰 내용은 Kotlin 언어가 기존 Android Java에 비해서 어떤 장점을 가지고 있는지 설명하고자 한다. 현재 Kotlin 모바일 앱 커뮤니티는 계속 성장하고 있고 개발자와 기업 소프트웨어 개발자 커뮤니티 내에서 Kotlin 언어에 대한 수요가 증가하고 있다. 과거에 구글은 이미 Kotlin이 향후 안드로이드 앱 개발자가 가장 선호하는 언어가 될 것이고, 되어가고 있다고 발표했었다. 그렇다면 Kotlin 언어는 어떤 장점을 가지고 있기에 구글이 지속적으로 추천하고 있는 것일까? 구글의 입장에서 비즈니스 관점에서 볼 때 당연하게도 Oracle에게 지불해야 할 JAVA 라이선스 비용을 Kotlin 언어로 대체하면서 더 이상 지불하지 않아도 되는 전략이 있겠지만, 그것 말고 개발 언어로써 어떤 장점이 있는지 살펴보도록 하겠다.


Kotlin은 원래는 통계적 연산을 위주로 사용할 프로그래밍 언어로 탄생했으며 주로 JavaScript 및 JVM (Java Virtual Machine) 환경에서 사용된다. 문법과 로직의 구현 방식은 JavaScript와 동일하다고 설명하기도 한다. 더불어 Java 언어와 상호 운용할 수 있음을 장점이라고 소개하기도 한다. 소프트웨어 개발 프로젝트의 주요 목적은 생산성을 높이는 것이고 개발자의 언어 학습과 경험은 쉽게 이해할 수 있어야 하며 유용성과 실용성 두 가지를 모두 제공할 수 있어야 한다. 이런 측면에서 Kotlin을 Java와 함께 사용하면 과도한 개발 코드를 많이 줄일 수 있는 장점이 있다. 그래서 기존 안드로이드 개발자들과 새롭게 시작하는 안드로이드 개발자들에게 좋은 개발 환경을 제공한다고 할 수 있다. 2017년, Google이 Kotlin을 출시한 이후 단 두 번의 개발자 콘퍼런스를 개최하였음에도 Android 개발자 커뮤니티에서 지속적으로 사용자 수가 증가하는 이유가 위와 같은 장점을 개발자들이 수용했기 때문이 아닐까 생각된다. Kotlin 언어는 모든 OS 플랫폼에서 실행이 가능하고 JAVA와의 상호 운용할 수 있는 장점으로 개발코드가 모든 플랫폼에서 활용할 수 있는 재활용성으로 높이 평가받고 있다. Kotlin 1.3이 출시됨에 따라 Kotlin/Native의 향상된 기능은 다중 플랫폼 편의성을 또 다른 수준으로 향상했음을 보여주고 있다. 결과적으로 오늘날 Android 개발자는 단일 통합 개발 환경 (IDE)을 사용하여 모든 플랫폼에서 Kotlin을 개발할 수 있는 장점이 있기에 개발 시간과 노력을 절약할 수 있다.

Kotlin/Native는 컴파일러 기술 LLMV를 사용하여 Kotlin 소스를 Windows, iOS, Linux, Webassembly 및 Mac을 비롯한 여러 운영 체제 및 다중 CPU 환경에서 독립적으로 실행할 수 있는 바이너리로 빌드할 수 있다. 이러한 장점을 기반으로 현재 전 세계적으로 기업 소프트웨어 시장에서도 점점 더 많은 고객들이 Kotlin 언어를 통해서 시스템 마이그레이션을 시도하고 있거나 계획을 가지고 있다고 한다. 또한 Netflix, Airbnb, Evernote, Pinterest, Twitter 및 Trello와 같은 모바일 앱 서비스가 Android Java 기반의 앱에서 Kotlin으로 전환되고 있다고 한다. 그렇다고 세계적인 이슈가 될 만큼의 선풍적 인기를 얻고 있는 것은 아니지만 새로운 언어에 대한 시장의 반응이 꾸준히 늘고 있다는 반증으로 볼 수 있다. 그렇다면 이런 추세는 Java 시장의 종말을 의미하는 것일까? 개발자들은 이 주제에 대해 다양한 시각을 가지고 있다. Java는 현재 가장 많은 개발자와 이들을 지원하는 광범위한 오픈 소스 환경 및 라이브러리 시장을 형성하고 있는 가장 대중적인 개발 언어임에는 틀림없는 사실이다. 그러나 단점이 없는 개발 언어는 없으며 Java에는 개발자의 작업을 복잡하게 만들 수 있는 고유한 문제점을 가지고 있다. 그것은 기능과 로직의 복잡함에 따른 소스 코드의 양이 비례적으로 증가할 수 있다는 단점이다. 이런 현실에서 Kotlin의 출현은 간결함과 상호 운용성을 무기로 Java의 고유한 문제점을 해결하며 Java 생태계 전체를 향상할 것이라고 생각하고 있다.
지난 몇 년 동안 Kotlin은 Android 스튜디오에서 안정적이며 Java와 호환하여 개발할 수 있는 환경을 제공하고 있다. 그래서 앞으로 몇 년 안에 Java의 안드로이드 개발 커뮤니티는 종식될 것이라고 생각하는 개발자들이 있는 반면, 다른 개발자들은 두 가지 언어가 각각의 장점이 특별하기 때문에 공존하며 사용될 것이라고 생각하는 경우도 있다. 그렇다면 Kotlin의 강점이라고 할 수 있는 코드의 간결함과 상호 운용성은 무엇을 근거로 설명할 수 있는 것일까? 대표적인 사례로는 Java 언어에서 사용되는 Callback 함수들, Data 클래스, 그리고 Getters/Setters 코드 작성에서 확연하게 간결함을 보여준다고 한다. Kotlin이 해결한 Java의 약점은 다음과 같다.




1. 간결함

간결함이라는 장점 하나로 Kotlin을 선호하는 개발자들이 많다. 왜냐하면 Java가 가지고 있는 코드적 단점이 소스 코드의 간결함이 부족하기 때문이다. Java에서는 간결함보다 신뢰성을 더 중요하게 고려되었다. 그래서 오류 위험을 줄이기 위해 개발자 작업량을 늘리는 경우가 많다. 예를 들면, Java에서는 Bolierplate 방식의 코드 작성으로 인해서 상호 간의 코드 이해도를 떨어뜨리는 일들이 발생할 수 있고 그런 과정에서 더 많은 버그가 생길 여지가 있다. 좀 더 구체적인 코드 수준에서 설명하도록 하겠다.
다음은 Java로 작성한 간단한 계산기 기능을 구현하는 코드이다.

동일한 기능을 Kotlin 언어로 작성한다면 다음과 같다.

위의 두 가지의 코드가 차이점이 크지 않다고 말할 수 있겠지만 Kotlin이 Java보다 실행 코드 라인 절반만으로 동일한 기능을 실행할 수 있음을 비교할 수는 있다. 코드의 간결함은 소프트웨어 생산성 측면에서 매우 중요한 요소가 될 수 있고 대규모 프로젝트의 경우에서는 많은 코드 라인으로 인한 어려움이 발생할 수 있으므로 이 점은 큰 장점으로 다가올 수 있다. 가장 중요한 Kotlin의 특징은 코드 구문에 대한 이해가 쉽고 간결하다는 것을 전하고자 한다.


2. 상호 운용성

구글이 발표한 Kotlin의 핵심 목적은 상호 운용성이라고 한다. 개발 프로젝트가 시작될 때 개발자들은 단위 개발 작업에서 작성하거나 필요한 라이브러리를 상호 호환해서 사용하는 경향이 있다. 때로는 특정 기능의 모듈을 별도로 개발하여 소스코드 통합 또는 상호 운용해야 하는 경우가 발생한다. Kotlin 언어는 Java에서 필요한 독립적인 모듈을 개발하여 쉽고 문제없이 실행할 수 있는 환경을 제공하고 있다. 즉, Kotlin은 독립적인 코드 작성뿐만 아니라 Java 소스 코드와의 호환성을 기본으로 제공함을 강조하고 있다.




결국 Kotlin 언어는 모바일 앱 개발을 위한 또 하나의 언어로 자리매김하고 있음은 분명한 사실이다. Apple의 Object C언어의 복잡함을 Swift 언어로 대체해가는 것처럼 구글에서도 Android Java 언어의 부족함을 해결하고자 하는 의지가 있음이 분명하다. 필자는 이 글에서 Kotlin에 대한 장점을 설명함으로써 개발 환경의 다양성을 설명하고자 할 뿐, 어느 것이 좋다 나쁨을 따지려고 한 것은 아님을 분명히 밝힌다. 마지막으로 모바일 앱 개발을 시작하는 스타트업 회사들은 개발팀 구성에 필요한 재원과 인력 수급에 항상 부족함을 가지고 있을 것이라 생각한다. 이러한 고민을 해결하는 데 새로운 개발 환경에 대한 이해는 좀 더 나은 개발 전략을 수립할 수 있는 기회가 될 수 있음을 명심하길 바란다.

작가의 이전글 성공적인 모바일 개발 업무를 위한 가이드
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari