티스토리 뷰

Kotlin Logo

# 1. Kotlin? Why?


코틀린에 대해 짧막하게 소개하면 다음과 같습니다.

 

코틀린은 JVM에서 동작하는 프로그래밍 언어로서, 2011년 9월, JetBrain 사가 공개했습니다. 확장자는 .kt 또는  .kts 를 사용합니다. 또한 19년 5월 7일 이후로 구글의 안드로이드 앱 개발에서 선호하는 언어가 되었습니다!

여기서 주요한 포인트는 바로 구글에서 이 언어에 대해 관심을 가지고 내부적인 프로젝트에 적극적으로 활용하기 시작했다는 점 입니다. 이말인 즉, 앞으로의 reference 문서들은 코틀린 기반으로 작성된 코드를 통해 배포될 것이며 현재는 Java와 혼용되지만 주요 코드는 Kotlin으로만 작성되어 Release 될 수 있다는 것입니다.

 

따라서 아래와 같은 이유로 Kotlin 관련 포스팅을 시작합니다.

 

1. 생산성 향상

2. 트렌드

3. 동기부여

 

 

# 2. 생산성 향상


구글에서 왜 코틀린을 주 언어로 가져가기 시작했을까요? 첫번째 이유는 바로 Java 코드와 완벽 호환을 보장한다는 것입니다. 무슨말이냐 하면, 이 코틀린을 사용하기 위해서 굳이 기존의 Java 코드를 수정할 필요가 없다는 것입니다. 물론, .java 파일 안에 코틀린 문법을 적용하는 일은 불가능하지만 자바로 작성된 클레스 안에서 코틀린으로 작성된 object의 기능을 어떠한 수정 없이 사용이 가능하다는 것이지요. 어떻게 이런일이 가능할까요? 그 이유는 코틀린의 컴파일 과정을 살펴보면 알 수 있습니다.

kotlin compiler (kotlinc)의 빌드 과정 / 출처 : https://workingdev.net/images/kotlin-compilation-process.png

코틀린의 입문서적으로 잘 알려져있는 Kotlin in Action은 코틀린 코드 컴파일에 대해 아래와 같이 설명하고 있습니다.

 

코틀린 컴파일러는 자바컴파일러가 자바 소스코드를 컴파일할 때와 마찬가지로 코틀린 소스코드를 분석해서 .class 파일을 만들어낸다. 만들어진 .class 파일은 개발 중인 앱 유형에 맞는 표준 패키징 과정을 거쳐 실행될 수 있다.
. . .
코틀린 컴파일러로 컴파일한 코드는 코틀린 런타임 라이브러리에 의존한다. 런타임 라이브러리에는 코틀린 자체 표준 라이브러리 클래스와 코틀린에서 자바 API 의 기능을 확장한 내용들이 들어있다. 코틀린으로 컴파일한 앱을 배포할 때는 런타임 라이브러리도 함께 배포해야 한다.

출처: Kotlin in Action / 지은이: Dmitry Jemerov, Svetlana Isakova / 옮긴이: 오현석 / 에이콘 출판사

짧게 요약하자면, 자바와 컴파일 과정이 비슷하지만 다른 컴파일러(kotlinc)를 사용하며 실행 시점에 런타임 라이브러리를 통해 앱이 실행이 된다 쯤으로 정리할 수 있겠습니다. 

이렇게 호환성에 대한 설명은 마쳤지만 아래와 같이 생각할지도 모르겠습니다.

So What?

그래서 어쩌라는 말이지요. 익숙한 자바로 작성해도 잘 돌아가는데 구글은 왜 코틀린을 적극적으로 사용하려고 할까요? 이제부터 핵심입니다. 구글이 코틀린을 사용하는 진짜 이유는 바로... 자바는 늙었고 코틀린은 젊기 때문입니다.

 

Data Class로 비교해본 java와 kotlin / 출처 : https://www.xenonstack.com/blog/kotlin-andriod/

여기서 늙다와 젊다는 이 프로그래밍 언어가 세상에 알려지고 사용된지 얼마나 되었는지에 대한 이야기가 아닙니다. 덩치가 커질대로 커진 자바는 최근 개발 트렌드에 맞게 밑단부터 수정하기가 어렵습니다. 호환성을 고려해야 하기 때문이죠. 이와같은 이유로 편의를 위한 라이브러리들을 통해 개발자들의 니즈를 충족시키며 발전해왔습니다. 하지만 4년전에 태어난 코틀린은 설계 시점부터 개발자들의 목소리에 귀를 기울이며 밑단부터 새롭게 짜여졌습니다. 뿐만아니라 같은 로직을 구현해도 보다 직관적이고 간결하게 구현이 가능합니다. 여기서 직관적이라는 말은 Data Class를 보면 바로 느낌이 오실겁니다. 여하튼 정리하면 위와같은 이유로 구글은 코틀린을 적극 도입하고 있습니다.

 

말이 너무 길어졌죠? 자세한 내용은 앞으로의 포스팅을 통해 풀어나보겠습니다.

 

 

# 3. 트렌드


Kolin vs Java / 출처: https://learnworthy.net/kotlin-vs-java-which-one-is-better-for-android-app-development/

대한민국 국민이라면 의무적으로 고등학교까지 교육을 받아야 하며, 요즘은 유치원 때 부터, 필수 과목으로 영어를 가르칩니다. 왜 국가에서는 영어교육을 의무화 했을까요? 다들 아시겠지만 영어가 세계 공용어이기 때문입니다. 이 언어를 알면 세계 어느곳에 가도 기본적인 의사소통이 가능합니다.

 

이 이야기를 개발에 적용해봅시다. 저희는 개발자이지요? 개발자는 어떤 언어로 이야기를 하나요? 바로 프로그래밍 언어로 대화를 합니다. 여기서 대화는 언어적 소통을 이야기 하는것이 아닙니다. 코드를 보고 이 로직을 구현한 개발자가 어떤 의도로 이런 로직을 구현했고 input에 따른 output을 추측할 수 있습니다.

 

범위를 조금 더 좁혀서 안드로이드 개발에 적용해봅시다. 최근 안드로이드 개발 언어의 트렌드는 코틀린입니다. 새로운 라이브러리와 많은 스니펫들이 코틀린으로 작성되고 있습니다. 이런 상황에서 코틀린을 모르면 어떻게 될까요? 소통이 안되겠지요. 다른 사람의 코드를 보고 이해할 수 없습니다. 따라서 현 안드로이드 개발자 포지션에 있다면 코틀린은 반드시 익혀야 할 것입니다.

 

 

# 4. 동기부여


이 글을 보고계신 분들 중에 포스팅을 작성해본 경험이 있으신 분들이 계신지요? 경험이 있다면 공감하시겠지만 이렇게 공개적으로 노출되는 글을 적을 때는 많은 고민과 노력이 필요합니다. 이게 시간낭비 일까요? 아닙니다. 글을 쓰면서 정확한 내용을 공유하기 위해 다시금 알고있던 내용을 찾아보게 되며, 이 과정을 통해 필자의 머릿속에 포스팅 내용이 촥촥촥 정리가 됩니다. 뿐만아니라 다음 글도 써야겠다는 약간의 책임감이 생기고 이는 지속적인 학습으로 이어지곤 합니다. 

 

출처 : 네이버 웹툰, 대학일기

이 포스팅은 저에게 큰 동기를 부여해주며 앞으로의 자기개발에 도움이 되리라 확신합니다. 저는 아직 건물주가 아니니 계속 공부를... 또르르..

 

 

 

# 마치며


가능하면 짧으면서 핵심만 전달할 수 있는 글을 쓰려고 노력하는데 말이 많은 저같은 사람은 쉽지 않은 것 같습니다. 이번 포스팅도 짧고 굵게 쓰고싶었으나 주저리 주저리 말이 길어진 것 같네요. 여하튼 앞으로 코틀린 관련 내용들을 이 블로그에 간단하게 정리해볼 생각입니다. 기대해주세요!

 

 

* 하트 버튼과 구독하기 그리고 광고를 클릭해주시면 포스팅을 이어나가는데 힘이 됩니다!

댓글