코틀린, 안드로이드 생태계 사로잡나

구글의 새 공식 앱 개발 언어 코틀린 탐구(상)

컴퓨팅입력 :2017/06/14 10:20    수정: 2017/06/16 11:00

구글이 코틀린(Kotlin)을 공식 안드로이드 개발 언어로 삼았다. 코틀린은 안드로이드 애플리케이션(이하 '앱') 개발자가 자바와 동급으로 눈여겨봐야 할 프로그래밍 언어가 됐다. 코틀린이 자바에 비해 현대적이고 간결하며 안전하다는 게, 두 언어를 다뤄 본 개발자들의 평가다.

코틀린은 7년 된 언어다. 다른 현대적인 언어 대비 완성도는 빠지지 않는다. 다만 현존 생태계가 아쉽다. 국내서 코틀린을 다루는 개발자 커뮤니티 규모는 아직 크지 않다. 소수 기업을 제외하면 실제 제품이나 서비스를 위한 안드로이드 앱을 코틀린으로 개발한 사례가 흔치 않다. 국내선 더 드물다.

안드로이드 마스코트 버그드로이드. [사진=Pixabay]

하지만 구글은 장기적으로 코틀린을 자바만큼 널리 쓰이는 언어로 만들려는 분위기다. 공식 언어 지정 소식을 전하며 이 언어가 안드로이드 생태계에 어울리고 기존 자바 개발자들이 쉽게 다룰 수 있다고 강조한 점에서 그런 의지가 읽힌다. 장기적으로 안드로이드용 개발언어의 무게추가 자바에서 코틀린으로 기운대도 이상하지 않다.

자바와 코틀린을 모두 접해 본 개발자들의 경험과 구글의 공식 발표를 참고해 코틀린이라는 언어의 특징과 배경을 살폈다. 코틀린이 뭔지, 어디에 쓸 수 있는지, 구글이 왜 코틀린을 밀려고 했는지, 공식 언어 지정의 실질적 의미는 뭔지, 개발자들이 코틀린을 어떻게 바라보고 어떤 기대를 갖는 게 좋을지를 상/하 편으로 나눠 짚어 봤다.

---------------------------------------

*글 싣는 순서

(상) 코틀린, 안드로이드 생태계 사로잡나

(하) 자바 대안 코틀린을 대하는 우리의 자세

---------------------------------------

■프로그래밍 언어 코틀린, 무엇인가

코틀린은 자바가상머신(JVM)에서 실행되는 오픈소스 프로그래밍 언어다. 대다수 자바 코드가 돌아가는 환경에서 코틀린의 코드도 동작한다. 2011년에 발표됐다. 최초 프리뷰는 2012년 공개됐다. 첫 정식판(1.0 버전)은 2016년 출시됐다.

인텔리J에서 안드로이드 코딩하기

젯브레인(JetBrains)이 코틀린을 개발했다. 젯브레인은 개발툴 전문 업체로 '인텔리J(IntelliJ)'라는 유료 자바 개발툴을 제공하는 것으로도 유명하다. 구글 측에 따르면 젯브레인은 코틀린1.0의 기능이 안정적으로 구동되도록 이전 버전과 호환성을 유지하는 데 주력했다.

코틀린은 자바 프로그래밍 언어를 접해 본 개발자에게 익숙하게 느껴질만한 외형을 하고 있다. 그런데 그보다 더 간결하고 현대적이다. 변수 선언이나 함수를 만드는 방식 면에서 요즘 유행하는 문법을 처음으로 선보인 게 코틀린이었다. 애플 '스위프트(Swift)'가 이를 참고한 언어다.

모바일DB 개발사 렘(Realm) 개발자 김용욱 씨는 "코틀린은 JVM에서 작동하는, 좀 더 안전하고 간결하고 현대적인 언어"라며 "좀 더 진보한 변수 선언과 함수 만드는 방식, 널포인터 다루는 방식을 유행시킨 언어"라 묘사했다. 이어 "코틀린이 (뒤늦게) 주목받은 건 젯브레인이 구글과 가까워지면서부터인 것 같다"고 평했다.

■어디에 쓸 수 있나 "모바일, 웹(?), 서버"

기존 자바 코드를 사용하던 분야는 모두 코틀린을 쓸 수 있다. JVM이 대표적이다. 자바 코드로 앱을 작성하는 안드로이드도 마찬가지다. 전에도 개발툴 안드로이드스튜디오에 플러그인을 설치해 코틀린으로 안드로이드 앱을 만들 수 있었다. 최신 안드로이드스튜디오부터는 그럴 필요가 없다.

김용욱 씨는 "코틀린은 디버깅과 컴파일 시간을 잡아먹는 별도 툴을 덜 쓰며 자체 오버헤드도 거의 없다”며 “안드로이드 모바일 환경에서 자바만 쓰던 개발자에게 좋은 대안"이라 말했다. 그는 "코틀린은 결과물 코드가 깔끔하다는 특징도 있는데, 이게 서버측 코드를 개발할 때에도 장점이 된다"고 덧붙였다.

코틀린은 2017년 3월 1일 배포된 1.1 버전이 최신이다. JVM, 안드로이드, 자바스크립트 컴파일러에서 구동된다.

코틀린 코드는 자바스크립트 인터프리터에서도 돌아간다. 브라우저 프론트엔드 구현에 쓸 수 있다는 뜻이다. 이 기능은 과거 실험적인 수준에서 지난 3월 1일 배포된 코틀린1.1 버전부터 정식 지원 수준으로 승격됐다.

코틀린으로 안드로이드가 아닌 iOS 앱도 만들 수 있게 하려는 시도도 있다. 기술 프리뷰 단계라 '지원된다'고 표현하긴 아직 이르다. 젯브레인은 지난 4월 4일 블로그를 통해 iOS 플랫폼을 LLVM 컴파일러를 사용한 네이티브 타깃 코틀린 코드 구동 환경 중 하나로 언급했다.

■구글 "코틀린, 훌륭한 언어"

이미 안드로이드 앱 개발을 위한 공식 언어로 자바가 있다. 자바 외에도 안드로이드 플랫폼에서 구동되는 코드를 짤 수 있는 언어가 더 있다. 구글은 왜 자바를 놔두고 다른 언어도 아닌 코틀린을 또다른 공식 언어로 지목했을까.

김용욱 씨는 "클로저, 스칼라가 JVM용으로 먼저 유명했던 언어인데 스칼라의 경우 무거워서 서버측에서만 써야 하는 것 아니냐는 얘기가 있다”며 “클로저든 스칼라든 '모바일 쪽에선 쓰고 싶지 않다'든지 '그루비는 루비와 비슷한데 느리다'고 인식된다"고 설명했다.

구글은 블로그 포스팅을 통해 코틀린을 공식 언어로 지정한 배경을 밝혔다.

마이크 클레론 안드로이드 플랫폼 이사는 “코틀린이 안드로이드 앱을 더욱 쉽고 즐겁게 작성할 수 있게 해줄 훌륭한 언어라고 생각”한다며 “기존 안드로이드 에코시스템에 잘 맞고 자바 프로그래밍 언어와도 완벽히 호환된다”고 평했다. 또 “아주 많은 개발자들로부터 코틀린 언어가 너무 좋다는 얘기를 들었다”며 “안드로이드 팀에서 활동하는 다수의 구글 개발자도 이와 비슷한 얘길 했다”고 덧붙였다.

컴퓨터 프로그래밍 언어 소스코드 화면. [사진=Pixabay]

클레론 이사는 코틀린의 장점으로 꼽히는 기능과 특성을 샘플 코드와 함께 소개했는데, 그중 Nullable을 설명하면서 "코틀린 컴파일러는 널(null) 값을 유지할 수 있는 변수를 명시적으로 선언해야 한다"며 "따라서 런타임에 더 이상 널포인터익셉션이 발생하지 않는다"고 강조했다.

널포인터익셉션은 프로그램이 작동할 때 코드상의 변수가 실재하지 않는 값을 참조해서 발생하는 오류를 가리킨다. 자바 개발자들이 매우 빈번하게 겪는 문제다. 이를 예방하려면 코드에 이런저런 예외 처리를 추가해야 하는데, 자바에선 그 결과물이 과도하게 길어지곤 한다. 코틀린은 이를 보완한 언어다.

또 코틀린은 '람다' 등 자바 언어로 쓰기 어려웠던 최신 기술을 쉽게 활용할 수 있게 해준다. 자바에선 최신 기술을 활용하기 위해 그걸 지원하는 별도 툴과 보조 기술을 추가해야 했다. 이는 개발 결과물의 디버깅과 컴파일 시간을 늘려 준다. 코틀린을 쓰면 이를 감수할 필요가 없다.

■또다른 구글-오라클 '자바 소송' 변수설

코틀린을 보급하려는 구글의 진짜 목적은 딴 데 있을 수 있다는 관점이 있다. 코틀린을 자바 대신 주 안드로이드 개발 언어로 삼아, 안드로이드 생태계를 위협하는 오라클과의 자바 소송 피해를 최소화하려는 포석일 수 있다는 견해다. 과연 그럴까.

오라클과 구글의 자바 전쟁은 안드로이드를 만든 구글이 자바 지적재산권을 침해했다는 오라클의 소송으로 2010년 시작됐다.

양사는 지난 2010년 자바를 만든 썬을 인수한 오라클의 제소로 소송전을 시작했다. 오라클이 구글에 자바 지적재산권 침해 혐의를 제기했다. 침해 결과물로 지목된 게 안드로이드였다. 이를 빌미로 오라클은 구글에 거액의 라이선스료를 요구했다.

그간 구글이 승소하면 오라클이 불복, 항소하는 식으로 싸움이 이어졌는데 언젠가 양측이 합의하지 않겠느냐는 관측도 있다. 구글이 이를 염두에 두고 있다면 오라클에 라이선스료를 낼 여지가 없는 차세대 안드로이드 로드맵을 세울 수 있다.

관련기사

사실 안드로이드 플랫폼 기술 변화를 이런 ‘소송 리스크’에 결부시키는 관점도 새롭진 않다. 구글이 2014년 안드로이드 킷캣 버전부터 ART라는 새 앱 런타임을 선보였을 때, 2015년말 안드로이드 누가 버전부터 오라클 자바API 호환 라이브러리를 오픈소스버전인 오픈JDK로 바꾼다고 했을 때도 나왔다. 코틀린 공식 언어 지정에 따른 추론은 과거의 논리를 이어받은 것인데, 전보다 설득력이 크진 않다.

김용욱 씨는 "구글과 오라클 소송은 API 문제인데, 안드로이드 앱 개발 언어로 코틀린을 쓴다고 자바API를 안 쓰는 게 아니다"라며 "(오라클과의 분쟁을 피하려면) 구글은 코틀린과 함께 기존 여러 자바API 클래스의 대안을 만들어서 모든 개발자에게 '이제 이걸 쓰라'고 해야 하는데, 이렇게 API를 다 새로 만들고 사람들이 문제 없게 쓸 수 있을 때까지 적어도 3~4년은 걸릴 것"이라고 말했다.