한빛출판네트워크의 ‘나는 리뷰어다 2022’에 선정되고 나니 인스타그램 광고 알고리즘이 바뀌었는지 이지스퍼블리싱에서 진행하는 서평단 이벤트 광고도 뜨길래 신청해봤더니 감사하게도 또 당첨되어 쓰게 되는 책 리뷰.
요즘 앱 개발에 관심이 생겨서 잘 됐다 싶었다(이 이후에 스위프트 책도 당첨되어 iOS & 안드로이드 앱 개발 관련 도서 모두를 갖게 되었다. 누가 보면 킹갓제네럴올마이티 개발자 같지만 실제로는 아기 개발자👶라 살짝 머쓱하고)
1. 코틀린(Kotlin)이란?
코틀린(Kotlin)이라는 프로그래밍 언어는 젯브레인(Jetbrains)에서 개발한 언어. 젯브레인사는 IDE를 등을 개발하던 회사로, 기존 시스템을 조금 더 모던한 프로그래밍 언어로 재편하고 싶었으나 기존 시스템이 대부분 자바로 짜여 있어(70% 정도가 자바 코드였다고 한다) 자바와 호환되는 프로그래밍 언어를 만들게 되었다고 한다.
코틀린(Kotlin)의 가장 큰 특징은 자바(Java)와 100% 호환이 가능하다는 점이다.
이는 .kt, 혹은 .ktx로 끝나는 코틀린 코드를 컴파일하게되면, .java로 끝나는 자바 코드를 컴파일했을 때와 마찬가지로 JVM(Java Virtual Machine)이 이해할 수 있는 .class 파일, 즉 자바 바이트 코드로 변환되기 때문이다. 코틀린의 또 다른 특징은 코틀린은 자바 외에 자바스크립트(Javascript)로도 컴파일이 가능하다는 점이다. 따라서 코틀린으로 코드를 작성한 후, JS로 컴파일해 React.js나 Node.js로도 활용이 가능하다.
코틀린(Kotlin)은 오픈소스로 2012년 릴리즈 되었고, 2017년부터 큰 각광을 받기 시작했는데, 그 이유는
구글이 키노트에서 안드로이드 팀에서 코틀린을 최우선 지원(공식 지원) 하기로 발표했기 때문. 심지어 19년도에는 구글이 코틀린을 안드로이드 개발을 위한 메인 언어로 지정하게 되면서 안드로이드 네이티브 앱 개발자에게는 필요 불가결한 프로그래밍 언어가 되었다. 현재는 안드로이드 공식문서의 예제 코드도 코틀린으로 제공되고 있다.
2. 코틀린의 장단점
이렇게 안드로이드 앱을 제작할 때 빼놓을 수 없게 된 코틀린의 장단점을 간단하게 정리해보면 아래와 같다.
장점 1. 간결한 문법 & 높은 사용성
애초에 코틀린이 상대적으로 오래된 프로그래밍 언어인 자바의 단점을 극복하고자 만들어진 언어인 만큼 문법이 간결하고 복잡한 구문 없이 코드를 직관적으로 짧게 짤 수 있다.
이는 코틀린에서는 보일러 플레이트 코드(Boilerplate code) 들을 기존보다 줄일 수 있기 때문. 보일러 플레이트 코드란 꼭 필요한 기능이지만 반복적인 코드를 필요로 해 중복되면 많은 양의 코드들을 양산하게 되는 코드를 말하는데, 이런 코드 중복을 최소화 함으로써 간결하고 가독성 좋은 코드를 짤 수 있는 것이다.
장점 2. 기존 라이브러리와의 호환성
위에도 설명했듯이 코틀린은 기존 자바 프로그램과 호환을 염두에 두고 개발이 되었기 때문에, 자바와 100% 호환된다.
쉽게 말하면, 한 프로젝트 내에 코틀린과 자바 파일이 혼용되어 있다고 해도 작동한다는 뜻이다. 실제로 코틀린을 실제로 개발하는 팀의 영상을 보니 자바 코드 베이스에 신규 코드는 코틀린으로 짜서 올리고, 기존 코드들을 서서히 전환해 나가고 있었다.
장점 3. Null Safe 언어
자바로 기존에 개발을 해본 사람들은 알겠지만 NPE(NullPointException)이라는 오류를 자주 마주치게 된다.
코틀린은 Nullable과 Non-nullable이라는 개념을 가지고 있어 null이 발생하지 않도록 만들어준다. (다만 코틀린 단독 사용이 아닌 자바 라이브러리와 함께 사용할 경우에는 여전히 NPE가 발생하게 된다)
단점 1. 컴파일 속도가 느리다
코틀린도 컴파일 후에는 자바 바이트 코드로 변환되기 때문에 실행환경(Runtime)에서는 자바와 성능이 동일하나, 컴파일할 때는 자바보다 느리다.
당연한 것이, 코틀린은 자바 바이트 코드로 변환할 때 먼저 코틀린 파일을 자바로 변환 후, 자바 바이트 코드로 변환하게 되는데, 코틀린을 자바 파일로 변환한다는 하나의 단계가 추가되니 추가 시간이 소요될 수밖에 없다.
작은 프로젝트의 경우에는 크게 문제가 되지 않는 듯 하지만, 프로젝트가 거대한 곳의 경우에는 성능에 확연한 차이가 보인다고 한다.
단점 2. Unit Test가 용이하지 않다
코틀린을 이용해 코드를 작성하고 컴파일하여 얻은 자바 바이트 코드(. class파일)는 기본적으로 수정이 불가한 Final 형식으로 나오게 된다.
Unit Test를 작성할 때는 Mocking이라는 기법을 사용하게 되는데, Mocking은 실제 돌아가는 코드 대신 임의의 결과물을 반환하게 하도록 변조해 사용하게 된다.
하지만 Mocking 기법에서는 런타임에서 바이트코드를 변경을 하게 되는데, Java 스펙 상 Final Modifier가 들어있으면 런타임에서 코드 변조가 불가능해 코틀린을 사용한 코드로는 Unit Test가 어려워진다. ByteBuddy 등의 기술을 사용하면 변조가 가능하도록 바꿔줄 수 있으나 추가 공수가 발생하게 된다.
단점 3. 자바에 비해 학습 생태계가 작은 편
이 점은 프로그래밍이 만들어진 지 무려 25년이 지난 자바에 비해 코틀린은 2011년 만들어진 신생 언어이기 때문에 어쩔 수 없는 부분. 역사가 자바의 반 정도밖에 되지 않을 정도로 짧기 때문에 필연적으로 코틀린의 생태계도 아직 작을 수밖에 없다.
하지만 코틀린은 안드로이드 앱 프로그래밍에서 활발히 사용되는 만큼 향후에는 많이 개선될 것으로 보인다.
3. Do it! 깡샘의 안드로이드 앱 프로그래밍 with 코틀린(개정판) 책의 장점
코틀린의 특징과 장단점을 이해한 뒤, 실제로 코틀린을 이용해 안드로이드 앱을 만들어 보고 싶은 분들은 이 깡샘의 안드로이드 앱 프로그래밍 with 코틀린 책을 살펴보는 것을 권하고 싶다.
일단 내가 안드로이드 책 서평에 당첨되었다는 소식을 같은 프로젝트 팀원 분께 알려드리니 그분이 “혹시 깡쌤 책이에요?”라고 바로 여쭤보셨다 ㅋㅋ 알고 보니 이 이전 프로젝트에서 코틀린을 다루셨었는데 학습에 많은 도움을 받으신 모양. 그만큼 안드로이드 앱 개발 학습에서는 아주 유명하신 분이라고.
책은 코틀린 개발 환경 구성부터 기초 문법, 실제 프로젝트 실습까지 코틀린을 이용한 안드로이드 앱 개발에 필요한 지식을 망라하고 있어 코틀린을 처음 접하는 개발자도 한 스텝 한 스텝 책을 따라가며 코틀린을 학습할 수 있다.
내가 이 책에서 가장 좋았던 점은 거의 매년 개정판을 출시해서 안드로이드 개발에 필요한 최신 라이브러리들을 바로바로 업데이트해 최신 버전을 학습할 수 있다는 점과,
저자 분이 직접 운영하시는 블로그에서도 책 출간 이후에 업데이트된 정보들을 올려주시거나 직접 질문, 피드백을 남길 수 있다는 점이었다.
나는 아직 앱 개발은 겉핥기로 들어가는 수준이고 자바 학습이 우선순위가 높아 본격적으로 배우지는 않았지만, 실제로 코틀린을 이용해 안드로이드 앱 개발을 하려고 하는 학습자들에게는 책 학습에서 오는 한계점을 약간은 극복할 수 있는 점이 아닐까 싶다(그리고 블로그에 찾아보니 이 책을 바탕으로 한 저자 직강도 있다고 한다).
아래는 저자 블로그 링크.
"이지스퍼블리싱에서 서평단 활동을 위해 책을 제공받아 작성된 서평입니다."
'Review' 카테고리의 다른 글
[나는 리뷰어다 2022]’MLOps 도입 가이드’ 리뷰 (0) | 2022.07.02 |
---|---|
[나는 리뷰어다 2022]'찐 UXer가 알려주는 UX/UI 실무 가이드’ 리뷰 (0) | 2022.04.24 |
[나는 리뷰어다 2022]'소프트웨어 아키텍처 101’ 리뷰 (1) | 2022.03.31 |
[서평단 리뷰]Do it! 스위프트로 아이폰 앱 만들기 입문 - 개정 6판 (0) | 2022.03.07 |
[나는 리뷰어다 2022]'무던한 개발자를 위한 모던한 자바스크립트' 리뷰 (0) | 2022.02.22 |