티스토리 뷰
본 포스팅의 내용은 [깡샘의 코틀린 프로그래밍]을 공부하고 작성자가 생각을 정리하기 위해서 작성한 글이므로 더욱 자세한 내용을 알고 싶으신 분은 [깡샘의 코틀린 프로그래밍]을 강력 추천합니다!!
코틀린이란?
코틀린은 인텔리제이로 유명한 젯브레인의 오프소스 그룹에서 개발하였다. 2016년에 발표되었고 안드로이드 개발에 사용할 수 있게 되면서 주목받기 시작하였고 2017년 5월에는 구글 I/O 행사에서 안드로이드의 공식 언어로 코틀린을 지정하였다.
코틀린의 특징
1. 자바, 안드로이드 100% 호환
코틀린을 알고나서 자바와 100% 언어 호환이 된다는 것이 가장 놀랐다. 코틀린으로 개발된 코드는 컴파일러에 의해 자바 클래스 파일로 빌드되어 자바의 실행환경인 JVM을 그대로 사용하여 동작하기 때문에 가능하다고 한다.
심지어 같은 프로젝트 내에서도 자바와 코틀린을 혼용해서 작성할 수 있고 두 언어를 변환해주는 자동화 도구도 있다고 한다. (성능은 보장 못 하므로 결국 코틀린, 자바 둘 다 공부가 필요하다.)
JVM 기반 언어가 코틀린이 처음이 아니었다는 것도 놀람. (feat. Groovy, Scala)
100% 자바 호환성이라서 자바 개발자들이 금방 익히기 쉬울거라고 생각한다. API에 대한 학습은 따로 필요가 없지만 기초 문법이나 지원하는 기능에서는 자바보다는 오히려 스칼라나 스위프트와 비슷한 부분이 많다고 한다.
2. 자바, 안드로이드, 브라우저, 네이티브 애플리케이션 개발
코틀린이 안드로이드만을 위해 사용하는 언어는 아니고 자바로 개발되던 다양한 분야나 자바스크립트로 개발되던 프론트엔드 웹 앱에서도 활용할 수 있고 코틀린 팀의 공식 블로그를 보면 MacOS, iOS, IoT/임베디드 시스템과 같은 다른 플랫폼에서 실행되는 네이티브 앱 개발도 코틀린의 목표라고 설명하고 있다.
3. 인텔리제이, 안드로이드 스튜디오, 이클립스, CLI 등을 통한 개발
인텔리제이 뿐만 아니라 안드로이드 스튜디오, 이클립스, CLI 등 다양한 곳에서 개발이 가능하다. 물론 젯브레인에서 만든 인텔리제이, 안드로이드 스튜디오에서 개발하는게 여러모로 간편한 편이긴 하다.
자바와 비교하며 코틀린 맛보기!
최근에 발표된 프로그래밍 언어 같은 경우 새로운 개발 패러다임에 맞는 기능들이 대부분 비슷하기 때문에 코틀린만의 특징이라고 보기에는 힘들지만 간단하게 맛만 보자.
1. Null Safety
Java의 고질적인 문제가 NullPointException이라고 한다. Null의 예외처리는 주요 로직이 아니지만 꼭 해줘야 하는 로직이다. 하지만, 코드를 더럽게하는 주범이다. 코틀린은 Null을 처리하는 다양하고 쉬운 기법을 제공한다.
2. 확장 함수
자바의 경우에는 클래스의 기능을 확장하기 위해서는 상속을 통해서만 이루어졌어야 했다. 하지만, 코틀린은 상속 뿐만 아니라 함수 확장을 통해 기존 클래스의 기능을 쉽게 추가할 수 있다.
3. 함수형 프로그래밍
요새 핫한 소프트웨어 개발 패러다임이다. 코틀린에서는 람다 식이나 고차 함수 등 함수형 프로그래밍을 쉽게 구현할 수 있는 방법을 제공한다.
4. data 클래스
대부분의 소프트웨어는 데이터를 다루는게 주요 목적이므로 데이터 자체를 표현하는 VO(Value Object) 클래스를 자주 정의한다. 하지만 이 단순하고 작성하기 귀찮은 자바 오브젝트(POJO)를 쉽고 짧게 구현하기 위해 코틀린은 data 클래스 기능을 제공한다.
더 자세한 data 클래스의 내용은 아래 게시글을 참고바란다.
5. Immutable 변수
프로그램에 사용되는 변수들은 값이 할당되고 변경되지 않는 경우가 많다. 코틀린에서는 변수를 선언할 때는 mutable과 immutable로 구분하고 immutable을 사용함으로써 컴파일 단계에서 이 변수는 값 변경이 불가능하다고 명시적으로 선언할 수 있다.
6. 코틀린의 최상위 구성요소는 클래스가 아니어도 된다?!
자바에서는 프로그램의 최상위 구성요소가 클래스이다. 코틀린은 클래스 없이 하나의 코틀린 파일에 변수나 함수를 선언할 수도 있다. 하지만 클래스를 정의하지 않더라도 자동으로 파일명 뒤에 Kt가 추가된 클래스 파일이 생성되어 JVM에서 구동하게 된다.
그 밖에
- 코틀린 공식 매뉴얼에 따르면 JDK 1.6버전 이상에서만 동작한다고 명시되어 있다.
- 자바의 9버전 이상에서는 빌드 도구인 그레이들 버전과의 문제가 있을 수 있기 때문에 권장하지 않는다.
참고 자료
[깡샘의 코틀린 프로그래밍] 강성윤 지음 <루비페이퍼>
'Programming > 코틀린(Kotlin)' 카테고리의 다른 글
[코틀린] 07. 클래스 (feat. 깡샘) (0) | 2021.04.08 |
---|---|
[코틀린] 06. 흐름 제어 구문과 연산자 (feat. 깡샘) (0) | 2021.04.05 |
[코틀린] 05. 데이터 타입 (feat. 깡샘) (2) | 2021.04.04 |
[코틀린] 04. 변수와 함수 (feat. 깡샘) (0) | 2021.03.31 |
[코틀린] data class 간단 요약 (0) | 2021.03.24 |