Kotlin (코틀린)

[Kotlin] 코틀린 입문 / 코틀린이란? / 코틀린 특징

Oscar:) 2024. 5. 4. 17:37

 

 

 

OscarStory.. 코틀린으로 진화..!

 

 

 

 

사실 2~3년 전까지만 해도 검색 결과들이 자바를 사용한 레퍼런스가 대부분이었고,

안드로이드 공식문서에서조차 자바로 짜여진 예제를 더 많이 찾아볼 수 있었다.

 

그 당시에도 많은 개발자들이 자바 → 코틀린으로 넘어가는 분위기를 느끼긴 했지만,

그래도 필자는 근본에 충실해야 한다는 생각에 자바와 관련된 포스팅 위주로 업로드 해왔었다.

 

 

 

하지만, 이젠 확실히 달라졌다고 단언할 수 있다.

공식문서에서도 코틀린을 Default 언어로 채택하여 예제 업데이트도 우선적으로 적용하며,

대부분의 검색 결과도 코틀린 레퍼런스가 압도적으로 많아진 상황이다.

 

빠르게 변화하는 만큼 빠르게 적응해야 하고, 신기술에 민감해야 하는 개발자라는 사람이

근본이라는 이유로 자바를 붙잡고 있을 이유는 더 이상 합당하지 않다는 것이다.

 

현재 날짜 기준으로 안드로이드 관련 채용 공고만 둘러보아도

코틀린과 자바가 9:1 정도 비율을 유지하고 있다는 것을 확인할 수 있을 것이다.

자바만 공부하고, 사용해서는 일자리를 구하기도 어려운 상황이 된 것이다.

 

 

조금 과장하자면, 어디가서 '안드로이드 개발을 자바로 합니다!' 라고 하는 순간

당신은 도태된 개발자로 낙인찍히는 세상이 온 것이다.

 

 

 

사실 위 이유만으로는 코틀린이 무조건 좋다고 이야기할 수 없다.

많은 개발자들이 코틀린으로 넘어갔다면, 그럴만한 또다른 이유가 있었다는 것이다.

코틀린을 아직도 사용해보지 않은 사람이 있다면, 직접 사용해보고 스스로 판단했으면 한다.

 

 

 

 


 

 

 

서론이 너무 길었고, 이제 코틀린에 대해 알아보자.

 

 

코틀린?

 

 

 

 

IntelliJ를 개발한 회사 JetBrains에서 공개한 언어이다.

JVM 기반의 언어이기에 JVM 바이트코드로 컴파일되며 자바와 100% 호환성을 자랑한다.

 

100% 호환이라는 것은 정말 대단한 일이 아닐 수가 없다.

자바로 작성한 모든 동작을 코틀린으로 완벽 대체할 수 있다는 말이다.

 

그렇기에 한 프로젝트 내에서 자바와 코틀린을 함께 적용할 수도 있고,

코틀린이 빠르게 자바를 대체할 수 있었던 이유 중 하나이기도 하다.

 

 

일반적으로는 JVM 환경에서 사용되나, JavaScript, iOS 등을 개발할 때 사용할 수도 있다.

하지만 구글의 안드로이드 앱 개발에서 압도적인 사용률을 보일 뿐이다.

 

코틀린은 2016년에 출시되었고, 구글은 2017년부터 안드로이드 공식 지원 언어로 추가했으며

2019년부터는 안드로이드 개발을 위한 공식 언어로 지정했다.

 

 

기타)

- 코틀린은 발트해 핀란드만에 위치한 러시아의 '코틀린 섬'에서 따온 이름이다.

- 코틀린 파일 확장자는 .kt를 사용한다.

- JetBrains 사는 코틀린이라는 언어가 IntelliJ IDEA 판매를 상승시켜주길 희망한다고 했다.

 

 


 

코틀린의 대표적인 특징

 

 

코틀린의 특징을 몸소 느끼려면, 아무래도 자바와 비교한 특징을 알아보는 것이 효율적일 것이다.

 

코틀린을 사용해본 대부분의 사람들은 자바와 비교해서 '편하다'는 언급을 많이 한다.

그럼 어떤 점에서 편하다는 것일까?

 

 

✅ 문법이 훨씬 간결해졌다.

- 세미콜론 생략

- new 연산자 삭제

- getter · setter 삭제

- 연산자 사용성 ↑

- for문 · switch문 개선 등

 

이야기하자면 정말 많다.

위 내용에 대해서는 직접 사용해보며 별도로 포스팅할 예정이기에 더 이상 자세히 다루지 않겠다.

 

 

 

✅ 타입 추론 지원

자바에서는 기본적으로 변수의 타입을 선언해야 하지만,

코틀린에서는 타입을 선언할 필요가 없다.

 

 

Java 예시)

int age = 29;
String name = "오스카";
ArrayList<Person> person = response.body();

 

Kotlin 예시)

val age = 29
var name = "오스카"
val person = response.body()

 

 

val, var 을 사용하며 별도로 타입은 선언하지 않는 모습이다.

val, var 에 대해서도 별도로 포스팅할 예정이다.

 

 

 


 

 

간결함과 편리함 다음의 특징으로는 안정성을 이야기할 수 있다.

 

 

✅ NPE를 극도로 싫어한다

코틀린의 여러 특징 중에서도 가장 핵심적인 내용이라 볼 수 있다.

코틀린은 NullPointerException을 없애기 위해 많은 노력을 했다.

 

구조적으로 타입 시스템은 null이 될 수 없는 값을 추적하여

런타임 시 NPE 가능성이 있는 코드를 금지한다.

 

따라서 ?, !! 등의 문법을 사용하여 이를 확실히 구분해주곤 한다.

해당 문법에 대해서도 별도 포스팅으로 업로드하겠다.

 

 

 

✅ 런타임 시점의 오류를 싫어한다

 

기존에 런타임 시 감지될 오류를 컴파일 시점에 더 많이 검사하여 많은 오류를 방지해준다.

사실 이 특징은 위 NPE 추적에 관련된 내용도 포함한다고 볼 수 있다.

 

런타임 시점의 오류는 사용자가 앱을 사용중일 때 발생할 수 있는 오류를 이야기하며,

컴파일 시점의 오류는 개발자가 앱을 빌드할 때 발생하여 미리 확인할 수 있는 오류를 뜻한다.

 

즉, 런타임 시점의 오류가 더 위험하다고 볼 수 있다.

 

 

물론 코틀린을 사용한다고해서 모든 방면에서의 오류를 예방해주는 것은 아니지만,

자바와 비교했을 때 현저히 낮아졌다는 이야기다.

 

 

 


 

 

이외에도 실용성상호운용성을 이야기할 수 있다.

 

실용성은 JVM 기반으로 개발되었기에 이미 검증된 기능에 의존했다는 것이 핵심이고,

상호운용성은 Java와 100% 호환된다는 이야기다.

 

이 내용들은 위에서 어느정도 언급했으므로 생략하겠다.

 

 

 


 

 

 

 

본인도 코틀린을 처음 접할 때는 꺼려했지만 막상 사용해보니,

이제는 자바가 불편하다고 느끼는 사람 중 한 명이다.

 

그렇기에 오늘 이후로 안드로이드 관련 예제는 모두 코틀린으로 업로드할 예정이다.