
Java 말고 Kotlin?
Kotlin은 Intellij IDEA의 개발사 JetBrains에서 2011년에 공개한 오픈소스 프로그래밍 언어이다. 2017년에 구글이 안드로이드의 공식 언어로 Kotlin을 추가하였다. 2019년 1월부터는 구글 내부에서 개발하는 안드로이드 프로젝트에서 Java대신 Kotlin을 사용한다. 안드로이드 외에 스프링 프레임워크, 톰캣, JavaScript, Java EE, HTML5, iOS, 라즈베리파이 등을 개발할 때도 사용할 수 있다.
대상 플랫폼
- 서버 : 웹 어플리케이션의 백엔드
- 안드로이드 : 모바일 어플레케이션
- iOS, 데스크탑 어플리케이션, 자바스크립트
특징
안드로이드 홈페이지에서 구글은 Kotlin의 특징을 다음과 같이 정의하고 있다.
- 표현력이 높고 간결함 : 소스코드 작성 시 간결한 문법을 제공
- 더 안전한 코드 : @Nullable과 @NonNull이 유형에 포함되어있어 NullPointerException을 방지
- 상호운용 가능 : 자바 프로그래밍 언어와 100% 호환
- 구조화된 동시 실행 : 비동기 프로그래밍을 간소화하여 네트워크호출, 데이터베이스 업데이트와 같은 작업을 간단하고 효율적으로 만듬
자바 프로그래밍 언어와 100% 호환되는데 자바보다 더 간결하게 작성할 수 있다. 그리고 NullPointerException으로 인한 프로그램 강제 종료를 예방할 수 있다.
Kotlin의 철학
실용성
- 연구를 위한 언어로 개발된 것이 아니라 다른 프로그램밍 언어가 채택한 성공적인 방법과 기능을 사용한다.
- 자바에서 사용한 익숙한 프로그래밍 스타일이나 기법을 사용할 수 있다.
- 때문에 코틀린은 도구를 강조한다. IDE의 자동화된 도구를 사용하여 생산성이 높아지도록 도와준다.
간결성
- 코드가 간결하기 때문에 기존코드를 읽는 시간이 줄어든다.
- 자바에 존재하는 여러 가지 번거로운 준비코드를 묵시적으로 제공한다.
- 라이브러리 함수를 호출할 때 람다를 지원하여 작은 코드블록으로 쉽게 전달할 수 있다.
안전성
- JVM을 사용함으로서 메모리 안정성을 보장하고, Buffer Overflow를 방지하고 동정 메모리 할당 오류를 예방한다.
- 정적 타입 지정 언어로서 어플리케이션 안정성을 보장한다.
- null이 될 수 없는 값을 추적하여 실행 시에 NullPointerException이 발생할 수 있는 연산을 사용하는 코드를 금지한다.
- 타입 검사와 캐스트가 한 연산자에 의해 이루어져 ClassCastException을 방지한다
iOS 앱을 개발 할 수 있을까?
Kotlin으로 iOS앱을 개발 할 수 있다고 하는데 그럼 구글에서 Flutter를 왜 만든 것 일까? 의문이 들었다. Kotlin Native는 Swift와 마찬가리로 LLVM을 통해 컴파일 되고 Cocoa Touch frameworks를 사용할 수 있다고 한다. 이는 iOS용 어플리케이션이 개발 가능하다는거지 Flutter처럼 멀티플래폼 개발을 지원한다는 의미가 아니다. Flutter 처럼 하나의 소스코드로 여러개의 플랫폼에서 동작이 되지 않는다. 이러한 문제를 해결하기 위해 Kotlin은 KMM(Kotllin Multiplatform Mobile)이라는 것 제공하고 있다. 그러나 아직 알파 버젼으로 Kotlin 홈페이지에서도 향후 변경될 수 있다고 한다. 아직 상용으로 사용하기에는 무리가 있어 보인다. 때문에 Kotlin으로 iOS 앱을 개발 할 수 있을까?의 답은 가능하지만 아직 시간이 더 필요하다가 될 수 있다.
출처
코틀린 공식 사이트(https://kotlinlang.org)
안드로이드 개발자 사이트(https://developer.android.com/kotlin?hl=ko)