코틀린(Kotlin)은 Intellij IDEA라는 통합 개발 환경으로 유명한 젯프레인즈(JetBrains)에서 개발된 언어입니다.
처음으로 코틀린이 발표되었을 땐 코틀린 언어가 안드로이드 앱을 개발할 수 있다는 것이 알려지며 많은 관심을 받았었죠.
여기에서 Intellij IDEA는 안드로이드 스튜디오의 기반이며 코틀린 언어를 공식적으로 지원하고 있습니다.
그러면 코틀린은 과연 어떤 용도로 만들어졌을까?
- Kotlin/JVM: 자바 가상 머신에서 동작하는 애플리케이션을 만들 수 있어요.
- Kotlin/JS: 자바스크립트로 웹 브라우저에서 동작하는 애플리케이션을 만들 수 있어요.
- Kotlin/Native: LLVM 컴파일러를 이용하여 여러 플랫폼을 타깃으로 하는 애플리케이션을 만들 수 있어요.
자바도 코틀린처럼 OS에 종속적이지 않다는 특징이 있다.
OS에 종속받지 않고 실행되기 위해선 OS 위에서 자바를 실행시키는 무언가가 필요하다.
그 무언가가 바로 JVM이다.
즉 코틀린은 멀티플랫폼 언어입니다.
크로스 플랫폼 또는 멀티 플랫폼은 여러 가지의 플랫폼에서 동작할 수 있다는 것을 뜻하는 용어이다.
- 위키백과 -
먼저 코틀린으로는 자바 애플리케이션이나 안드로이드 애플리케이션을 만들 수 있다.
그리고 JS(Java Script) 기반의 코틀린은 데이터베이스부터 서버, 클라이언트까지 다루는 풀 스택(Full-Stack) 웹 개발이 가능하다.
Native 기반의 코틀린은 LLVM 컴파일러를 통해 아래 플랫폼들을 타깃으로 타깃으로 삼아 코드를 작성할 수 있다. 쉽게 말해 Android, iOS Application, 임베디드, IoT(Internet of Things)등을 타깃으로 한 애플리케이션을 만들 수 있다.
- 애플 iOS 환경(arm32, arm64, emulator x86_64)
- 애플 맥 OS 환경(x86_64)
- 안드로이드 환경(arm32, arm64)
- 윈도우 환경(MinGW x86_64)
- 리눅스 환경(x86_64, arm32, MIPS, MIPS little-endian)
- 웹 전용 환경(wasm32)
그리고 코틀린은 자바와 완벽하게 호환된다. 따라서 자바 코드를 완전히 바꾸지 않고도 자바와 혼용하여 부분적으로 사용할 수 있다.
자바 코드를 마이그레이션 한다면 모든 것을 한 번에 바꾸는 것이 아닌 부분적으로 바꿔나갈 수 있기에 부담을 조금 줄일 수 있다.
코틀린 하면 안드로이드와 자바만 떠올렸지만
위에서 나온 것처럼 사실 코틀린은 플랫폼에 중립적인 언어로 사용할 수 있다.
👍 코틀린의 장점
코틀린은 오류를 미리 잡을 수 있는 정적 언어이다.
코틀린은 프로그램이 컴파일될 때 자료형을 검사하여 확정하는 정적 언어이다.
따라서 자료형 오류를 초기에 발견할 수 있어 프로그램의 안정성이 좋아진다.
NPE에서 자유롭다.
혹시 NPE라고 불리는 NullPointerException에 대해 들어보신 적 있나요??
NPE는 프로그램이 실행되는 중에 발생하는 오류이기 때문에 언제 어디서 어떻게 발생할지 알 수 없다.
오랫동안 프로그래머의 골치를 아프게 만드는 범인이지만 코틀린은 이를 예방할 수 있다.
보통 개발자들은 코틀린처럼 NPE를 예방하는 특성을
NPE에서 자유롭다.
라고 말한다.
표현이 간결하다.
코틀린은 여러 가지 생각된 표현이 가능한 언어로 다른 언어보다 훨씬 간결하고 효율적으로 코딩할 수 있다.
다른 도서들에선 이러한 특성들을 잘 살려서 코드를 짤 때 코틀린스럽게 코딩하기라는 표현이 있었다.
함수형 프로그래밍과 객체 지향 프로그래밍이 모두 가능하다
함수를 변수에 저장하거나 함수를 다른 함수의 매개변수로 넘길 수 있는 함수형 프로그래밍과 클래스를 사용하는 객체 지향 프로그래밍을 둘 다 할 수 있다.
이러한 특징을 '다중 패러다임 언어'라고 부른다.
세미콜론을 생략할 수 있다.
코드를 작성할 때 줄 마지막에 사용하던 세미콜론(;)을 생략할 수도 있다.
구글에서 코틀린을 지정한 이유는?
배경
현재 전 세계적으로 많이 사용하는 자바라는 언어는 제임스 고슬링(James Gosling)이라는 분이 만들었으며 무료이다.
초기에는 썬 마이크로시스템즈(Sun Microsystems)라는 곳에서 관리하였다.
하지만 썬 마이크로시스템즈가 오라클에 인수되고, 제임스 고슬링이 회사를 떠나며 오라클이 자바 JDK(Java Development Kit)의 개발과 관리를 전적으로 주도하게 된다.
인수 이후 오라클은 특정 자바 JDK에 대해 유료화 정책을 시작한다.
하지만 구글은 자바 JDK를 통해 안드로이드의 핵심 프레임워크와 여러 서비스를 이미 개발한 상태였고,
오라클은 특정 자바 JDK들을 사용한 API(Application Programming Interface)에 대해 천문학적인 금액의 특허 사용료를 요구했다.
하지만
구글은 이를 거부했고 구글과 오라클은 긴 시간 동안 법정 소송을 벌여왔다.
자바 언어와 JDK
자바 언어 자체는 무료로 사용할 수 있습니다.
하지만 자바 언어로 프로그램을 실행하기 위해서는 SDK(Software Development kit)인 자바 JDK가 필요하다.
자바 바이트코드를 실행하기 위해서는 JVM이 필요한데,
오라클은 Oracle JDK와 JVM의 특정 기능을 사용할 때 라이선스를 지불하는 정책을 시행하고 있다.
결국 구글은 이러한 분쟁을 피하기 위해 자체적인 가상 머신(DalvikVM, ART)을 만들거나 새로운 SDK를 제작하는 등의 조치를 취했고,
최종적으로 자바 언어를 대체하기 위해 코틀린을 안드로이드 공식 언어로 채택하게 되었다.
Do it! 코틀린 프로그래밍의 내용을 기반으로 정리하였습니다.
마무리
2년간 코틀린으로 안드로이드 앱을 개발하며, 안드로이드에 많은 공부를 했지만 정작 해당 언어를 잘 알지 못하는 것 같아 코틀린에 대해 정리해 보았습니다. 훌륭한 개발자가 되려면 트렌트에 항상 따라가고 하는 것도 좋지만, 언어의 아주 기초가 되는 내용부터 아주 심화되는 내용까지 알고 있어야 비로소 훌륭한 개발자가 될 수 있을 것이라고 생각합니다. 항상 끊임없이 노력하겠습니다.
'Kotlin' 카테고리의 다른 글
코틀린에서 타입 확인하기 (0) | 2023.01.22 |
---|---|
코틀린의 스마트 캐스트(Smart cast)란? (0) | 2023.01.21 |
코틀린에서 null을 관리하는 방법 [Do it! 코틀린 프로그래밍] (0) | 2023.01.08 |
코틀린의 자료형 [Do it! 코틀린 프로그래밍] (0) | 2023.01.08 |
코틀린은 어떻게 실행될까 [Do it! 코틀린 프로그래밍] (0) | 2023.01.01 |