본문 바로가기

Android/Kotlin

코틀린은 무엇인가?

코틀린은 젯브레인스에서 만든 프로그래밍 언어다. 2016년에 정식 발표 되었다.

코틀린은 자바에서 실행되는 새로운 프로그래밍 언어다.

코틀린은 간결하고 실용적이며 자바 코드와의 상호운용성을 중시한다.

현재 자바가 사용 중인 곳이라면 코틀린을 사용할 수 있다.

 

대표적으로 안드로이드 개발, 서버 사이드 개발에서 코틀린을 사용할 수 있다.

특히 안드로이드는 기존 자바에서 코틀린으로 공식언어를 교체하였다.

현재 최신 라이브러리인 Jetpack Compose는 코틀린으로 만들어져 있다.

 

코틀린은 타입 추론을 지원하는 정적 타입 지정 언어다.

소스코드를 간결하게 유지할 수 있다.

 

//Java
int size = 5;
String name = "Kotlin"
float rate = 3.14f

//Kotlin
var size = 5
var name = "Kotlin"
var rate = 3.14f

 

코틀린은 객체지향 프로그래밍의 패러다임도 가지고, 함수형 프로그래밍의 패러다임도 가진다.

코틀린에서는 함수를 사용해 수준 높은 추상화가 가능하다. 함수형 프로그래밍에서는 만들어 지고 나면 내부 상태가 바뀌지 않는다. 이를 불변성이라 한다. 불변성을 보장하기 때문에 다중 스레드 애플리케이션 개발을 더 쉽게 할 수 있다.

 

코틀린은 안정성이 높다. 대표적으로 NullPointerException을 없애기 위해서 노력한다.

실행 시점에 NullPointerException이 발생할 수 있는 코드를 금지한다.

 

var text1: String? = null //null을 허용한다. 즉, null이 될 수 있다.
var text2: String = ""    //null을 허용하지 않는다. 즉, null이 될 수 없다.

text1 = ""       //허용
text1 = null     //허용

text2 = null     //불허

 

다른 예외로 ClassCastException이 있다. 어떤 객체를 다른 타입으로 캐스팅하기 전에 미리 타입을 검사하지 않으면 ClassCastException이 발생할 수도 있다. 자바에서는 타입 검사를 생략이 가능하지만, 코틀린에서는 타입 검사와 캐스트가 한 연산자에 의해 이루어진다. 타입의 객체가 검사가 완료되면 별도로 캐스팅하지 않고 그 객체의 필드나 함수를 사용할 수 있다.

 

//Java
int value = 123456789;
value.toUpperCase() //타입 검사 없이 바로 사용 가능, 타입 검사를 생략하여 Exception발생률 상승

//Kotlin
if (value is String) //타입 검사
   val s = value.toUpperCase() //캐스팅 하지않고 String타입의 메서드를 바로 사용

 

 

코틀린을 처음 사용하면 마치 스크립트 언어를 다루는 듯한 느낌이 난다.

타입 추론의 변수 생성방식이 자바스크립트에서 변수 생성방식과 동일하다.

iOS의 스위프트 언어와도 닮아있다.

 

앞서 잠깐 언급했듯이 안드로이드도 기존 개발방식을 완전히 뒤엎는 새로운 개발 방식을 지원하는 Jetpack Compose 라이브러리가 출시(2021.07 정식 릴리즈)되었다. 업계 전반적으로 선언형 UI 프로그래밍 방식을 지양하는 것 같다. 

iOS의 Swift UI, 구글의 Flutter가 안드로이드의 Compose와 동일한 개발 패러다임을 가지고 있다.

 

코틀린 컴파일러는 안드로이드 API를 특별히 지원한다. 코틀린의 다양한 라이브러리는 안드로이드에서 사용할 수 있게 통합될 수 있는 함수를 제공한다.

 

안드로이드 개발자에게 코틀린은 필수다. 기존 개발자는 물론이거니와 지금 시작하는 개발자도 코틀린은 필수다.

그렇다면 자바는? 자바도 필수다. 자바와 코틀린 둘다 아는 개발자 자바를 모르고 코틀린만 아는 개발자 누가 경쟁력이 있어 보이는가? 누가봐도 전자일 것이다. 실무에서 아직 자바로 짜여진 코드가 많기 때문에 자바를 알아야 경쟁력이 있다고 말하고 싶다.

'Android > Kotlin' 카테고리의 다른 글

Kotlin 뒤로 버튼을 한번 더 누르면 종료됩니다.  (0) 2022.11.02
코틀린 널에 대해서  (0) 2022.10.26
코틀린 원시 타입  (0) 2022.10.26
코틀린 object  (0) 2022.10.26
코틀린 클래스, 코틀린 프로퍼티  (0) 2022.10.26