본문 바로가기

Android(Kotlin) Study A부터 Z까지 등반

Java, Kotlin 그리고 객체지향에 대해서

JAVA

자바는 대표적인 OOP의 예이다. 객체라는 것을 접하게 되며, 객체간의 관계를 통해서 하나의 제품을 위해서 부품을 만드는 과정이 될 수 있다.

 

간단하게 설명하자면 “차”라는 제품을 만들기 위해서는 타이어, 엔진, 연료, 배기관 등이 있다. 이것에서도 볼트, 너트, 고무, 등으로 또 쪼개질 수 있으며, 이들은 각각 클래스이다. 다 합쳐서 “차”라는 제품을 만들기 위해선 공장에서 뽑아내어야한다(객체화). 이게 객체지향의 끝이냐? 아니다. 차도 결국엔 현대차, 기아차, 외제차등으로(상속) 분류가 되어 각 회사의 요구에 따라 추가되거나, 바뀔 수 있어야 하고(Overriding, Overloding), 각각의 회사마다도 차 종류가 다양하기 때문에(다형성) 객체들만 잘 만들어둔다면, 재사용성이 강조되는 프로젝트를 구현할 수 있을 것이다. 또한 경주 게임을 한다고 했을 때 도로 위에 차들은(이번엔 차를 객체로 두겠다.) 서로 한 엔진의 명령으로 움직이는 것이 아니다. 간단하게 말하자면, 서로 원하는 시속과 방향이 있을 것이다. 하지만 우리는 게임이라는 프로그램 안에서 돌려야 하기 때문에 각각이 서로 다르게 움직여야 할 것이다(MultiThread). 이 모든 것을 지원해주는 것이 JAVA였다. 이전에는 Eclipe라는 프로그램으로 안드로이드까지 돌렸다(젤리빈? 키켓? 정도까지는 거의 이클립스로만 했던 기억이 나네요) 현재는 Android Studio라는 좋은 IDE로 개발을 할 수 있다.

Kotlin

JAVA의 호환성을 가지면서 등장한 것이 Kotlin이다(MultiThread는 코루틴 등으로 제공). JAVA를 대체, 확장을 목적으로 만들었기 때문에 기본적으로 표현 방식이 사용자에 맞게 만들어졌으며, 코드도 더 간결해지며 이해하기도 쉽다. 보통 Kotlin을 공부한다는 것은 Android 때문이라고 생각한다. 따라서 바로 앱으로 접했으면 각각의 언어에 대해서 크게 차이를 느끼지 못했을 수도 있다. 왜냐하면 안드로이드는 자바를 기반으로 나왔기 때문에 문법이나 구조가 자바를 따라야 했다.

그래서 생각보다 함수형 프로그래밍으로 되어있는 것을 많이 접하지 못하고, Nullable, Type추론 등의 기능으로만 접해왔을 가능성이 있다. 하지만 코틀린으로 사용했을 때 이전에는 파일로 나뉘었던 객체들이 함수의 묶음만으로도 구현이 가능하다. 자바스크립트(vanilla.js, Vue.js, React.js) 등을 했다면 이치는 같기 때문에 더 이해하기 쉽다고 생각한다.

다음은 공식문서에서 언급하는 코틀린만의 이점이다.

  • 표현력이 높고 간결함: 적은 노력으로 많은 작업을 할 수 있습니다. 상용구 코드를 적게 사용하면서도 아이디어를 풍부하게 표현할 수 있습니다. Kotlin을 사용하는 전문 개발자 중 67%가 Kotlin을 통해 생산성이 높아졌다고 말합니다.
  • 더 안전한 코드: Kotlin에는 null 포인터 예외와 같은 일반적인 프로그래밍 실수를 방지하는 데 도움이 되는 여러 언어 기능이 있습니다. Kotlin 코드가 포함된 Android 앱은 다운될 가능성이 20% 낮습니다.
  • 호환성: Kotlin에서 자바 기반 코드를 호출하거나 자바 기반 코드에서 Kotlin을 호출합니다. Kotlin은 자바 프로그래밍 언어와 100% 호환되므로 프로젝트에서 Kotlin을 원하는 만큼 사용할 수 있습니다.
  • 구조화된 동시 실행: Kotlin 코루틴을 사용하면 비동기 코드를 차단 코드처럼 쉽게 사용할 수 있습니다. 코루틴은 네트워크 호출부터 로컬 데이터 액세스에 이르기까지 백그라운드 작업 관리를 크게 단순화합니다.
  • 우리 엔지니어들은 Kotlin이 제공하는 언어 기능을 즐기고 있으며 현재 60개 이상의 Google 앱이 Kotlin을 사용하여 구축되었습니다. 여기에는 지도, 홈, Play, 드라이브, 메시지와 같은 앱이 포함됩니다. Google Home 팀 의 성공 사례 중 하나는 새로운 기능 개발을 Kotlin으로 마이그레이션하여 코드베이스 크기가 33% 감소하고 NPE 충돌 횟수가 30% 감소한 것입니다.

이외에도 문법을 다루고 싶지만, 그러기에는 좋은 예제들이 많기에 자바로 성공했던 안드로이드는 무엇이고, 그것을 대체하기 위한 언어인 코틀린에 대해서 알아봤다. 다음에는 동등성 동일성에 대해서 간단히 포스팅 해보겠다.