안드로이드 앱 개발은 Java? Kotlin?
안녕하세요.
휴몬랩 초보 안드로이드 앱 개발자(Ho Park)가 작성하는 초보 안드로이드 앱 개발자를 위한 글 입니다.
이 글은 초보 개발자 기준으로 개인적인 생각과 경험을 바탕으로 작성되었습니다.
안드로이드 앱 개발자라면 Java로 앱을 개발해야 할지 Kotlin으로 개발을 해야할지 누구나 한 번쯤은 고민해 보았을 겁니다. 그렇다면 한번 어느 언어가 더 구미가 당기는지 알아볼까요?
● Java 는 썬마이크로시스템즈에서 개발되어 2009년 오라클에게 자바에 대한 권리 및 유지보수를 맡기게 되었습니다.
● Kotlin 은 2011년 JetBrains (소프트웨어 개발업체)에서 공개한 프로그래밍 언어입니다.
2010년에 시작한 오라클과 구글의 자바 라이센스에 관련하여 길고 긴 전쟁을 아시나요?
오라클은 2010년 구글이 자바 저작권을 침해했다는 이유로 소송을 시작했습니다. 구글이 안드로이드 운영체제를 개발하면서 자바 API 37개를 허락 없이 무단으로 복제해 쓴 것을 문제 삼았죠.
2012년 1심은 구글이, 2014년 2심은 오라클이 각각 이겼으며 2016년 두 번째 1심에서는 다시 구글이 이겼지만 결국 마지막에 웃은 쪽은 오라클이었습니다.
그로 인해 저 또한 Java를 쓰고 있었지만 Kotlin으로 개발을 해야 하나 심각한 고민에 빠졌었죠..
이미 자바에 익숙해져 있었기에 쉽게 코틀린을 접할 수 없었지만 최근에 진행된 프로젝트를 코틀린을 접하게 되면서 이제는 더 이상 자바를 쓸 수 없을 정도로 매우 쉽고 자연스럽게 코틀린에 익숙해지고 말았습니다!!
여러가지 이유가 있지만 그중에서도 제가 Java보다 Kotlin이 더 익숙해지게 된 이유 몇가지를 골라보았습니다~~
그렇다면 어떤 면에서 Kotlin이 Java보다 뛰어난지 알아볼까요~~?! 슝슝슝
1. 간결함
개인적으로 이 부분이 가장 Kotlin을 사용해야 하는 이유가 아닐까 생각됩니다. 자바에서 사용하던 불필요한 반복적인 코드들을 다 없애고 다른 외부 라이브러리 사용 없이 간결하고 깔끔하게 코드 정리가 가능하게 만들어진 것이 바로 코틀린입니다. 이것은 코드에 오류가 생길 확률을 낮춰주고 속도마저 훨씬 빠르다는 것을 의미하기도 하죠.
참고로 코틀린 지원 라이브러리 (KTX, Anko)는 자바에서 한번 간결하게 만든 코드들을 더 간결하고 짧게 만들어줍니다. 아쉽게도 Anko Library는 더 이상 지원을 하지 않겠다고 얼마 전에 발표되었죠.. ToT
Toast 메시지를 띄우는 걸 비교해 보았을 때:
Java - Toast.makeText(this.getApplicationContext(), R.string.toast message, Toast.LENGTH_SHORT).show();
Kotlin - Toast.makeText(context, R.string.toast_message, Toast.LENGTH_SHORT).show()
KTX - toast(R.string.toast_message)
결과적으로 한 번도 쓰지 않은 개발자는 있을지 몰라도 한 번만 쓴 개발자는 없을 정도로 매우 편리합니다.
2. 안정성
자바에서는 거의 높은 확률로 ‘Null Pointer Exception’의 오류를 만나게 되지만 코틀린에서는 기본적으로 변수를 ‘null’로 설정할 수 없기 때문에 ‘null pointer Exception’이 발생하지 않습니다. 오류가 생기기 전에 1차적으로 방지를 하는 코틀린!
3. 상호운용성
코틀린은 자바와 100% 상호운용이 가능합니다. 작은 프로젝트에서 큰 프로젝트에 이르기까지 여태껏 자바로 개발을 하였더라도 코틀린으로 전환하는 것이 가능합니다. 무조건 바로 교체하기보다는 개발자의 전문지식과 체계적인 기획으로 단계별로 시작하는 것이 매우 바람직하며 Java에서 Kotlin으로 Kotlin에서 Java 언제든지 바꿔가며 내 입맛대로 개발이 가능합니다.
4. 창의성
자바는 코틀린보다 매우 오래된 프로그래밍 언어입니다. 아직도 많은 개발자들이 자바를 사용하고 있으며 자바 예제는 셀 수 없을 정도로 많이 찾아볼 수 있는 반면 코틀린 예제는 해마다 점점 느는 추세이긴 하지만 아직까지도 현시점을 기준으로 했을 때 자바보다 못하죠. 여기서 중점은 어찌 보면 이미 구식이 된 자바보다는 Modern Language에 가까운 코틀린을 사용함으로써 더 창조적으로 언어를 사용할 수 있을지 않을까 라는 의문이 듭니다. 막연히 이미 존재하는 코드들을 가져다가 쓰기보다는 개발자가 처음 언어를 배울 때처럼 더 많이 고민하고 고통스러워하듯이 새로운 사고방식과 코딩 능력을 키워나가는 것은 더 다재다능한 개발자로 만들어 준다고 저는 굳게 믿고 있습니다.
5. 발전가능성
혹시 게임 좋아하시나요? 게임을 하다보면 맘에 안드는 부분이 생기는데 게임사에 이부분을 고쳐달라고 요청하면 들어주는 곳이 있고 아닌 곳도 있습니다. 보통은 유저와 소통하는 게임은 롱런을하고 그렇지 않은쪽은 금방 문을 닫기 마련이죠. 마찬가지로 코틀린은 모두가 함께 만들어나가고 있는 언어입니다. 오랜 기간 동안 여러 오픈소스 안드로이드 개발자들이 불편해하던 문제에 대한 해결책들을 모아서 개발된 언어이기도 하지요. 현재까지도 여러 안드로이드 개발자들의 불편사항 또는 개선사항을 바탕으로 지속적인 업데이트를 하고 있기에 많은 개발자들의 사랑을 받고 있습니다.
6. 구글의 first-class support for Kotlin
마지막으로, 2017년 구글은 Kotlin을 1급 지원 언어로 선포했습니다. 오랜 시간 동안 오라클과 법정싸움 끝에 패했지만 구글은 처음부터 이렇게 될 수도 있겠구나 싶었을 정도로 매우 빠르게 Kotlin을 공식 언어로 채택하고 이제는 모든 우선적인 지원을 Kotlin으로 몰아주겠다고 합니다. 2019년 구글 I/O에서도 다시 한번시대를 알리며 Kotlin을 강조하였고 향후 구글에서 만드는 라이브러리들은 Kotlin으로 배포할 것임을 알렸습니다.
이미 말씀드렸지만 구글은 이미 오래전부터 탈자바를 시도해왔고 마침내 코틀린이라는 언어와 함께 안드로이드 공식 언어로 새로운 도약을 해 나아가고 있습니다. 추후에는 Go-Lang까지 안드로이드 공식 언어로 선택한다고 하는데.. 고뤵?
혹시 아직도 안드로이드 앱 개발을 어떤 언어로 시작해야 하는지 고민하는 분이 계신가요? 그렇다면 저는 고민할 것 없이 코틀린을 권유하겠습니다. 자바가 익숙했고 아는 것이라곤 자바가 모든 것이었던 제가 불과 몇 달 만에 코틀린 팬이 된 것처럼 그만큼 매력적인 언어라고 생각됩니다. 거기에 이제 구글에서 날개까지 달아줬으니 코틀린을 안 쓰면 손해가 아닐까요?
이제 어떤 언어를 쓸지 정했으니 앞으론 코틀린에 대해서 중점적으로 포스팅하겠습니다 :)
Reference
https://dzone.com/articles/why-kotlin-is-the-future-of-android-app-developmen