관리 메뉴

드럼치는 프로그래머

[Kotlin] 안드로이드 공식 언어가 된 Kotlin을 알아보자 본문

★─Programing/☆─Kotlin

[Kotlin] 안드로이드 공식 언어가 된 Kotlin을 알아보자

드럼치는한동이 2018. 1. 24. 04:55

구글이 안드로이드 공식 언어로 코틀린(Kotlin)을 추가했다고 5월18일 구글I/O 행사에서 밝혔습니다.이렇게 이제 정말, Kotlin의 시대가 왔습니다. 모두가 언젠가 오리라 예상했지만 이렇게 급작스럽게 올지 몰랐습니다. 이번 발표와 함께 구글 I/O 에 Introduction to KotlinLife is great and everything will be ok, Kotlin is here 두개의 코틀린 세션도 공개가되었습니다



iOS에서는 3년전 발표된 Swift가 새로운 경향을 반영한 간결한 문법으로 빠르게 Objective-C 를 대체해가며 앱을 개발할 수 있도록 적극 지원하고 있습니다. Kotlin이 안드로이드를 지원 한지는 꽤 오래 되었지만 공식언어가 아니고, 구글이 만든 언어도 아니라는 이유로 개발자들에게 퍼지는 속도가 Swift에 비해 매우 느렸다고 할 수 있습니다.


코틀린 소개

Realm 뉴스에서도 2년전에 Kotlin에 대해 Android는 새 언어가 필요할까? Kotlin에서 소개하였지만 Kotlin은 저 글이 쓰여진 2년전보다 훨씬 성숙되었고 Kotlin개발사가 만든 Android Studio는 안드로이드의 공식 개발도구가 되었습니다. Kotlin은 발표된지 벌써 6년된 언어로 Kotlin/JVM, Kotlin/JS, Kotlin/Native 등 여러환경에서 동작합니다. 또한 Swift에 많은 영향을 끼쳤다고 알려져있습니다. Kotlin 공식 블로그에 의하면 Kotlin의 목표는 풀스택 웹 개발, Android와 iOS앱, 그리고 임베디드와 IoT등 모든 개발을 다양한 플랫폼에서 Kotlin으로만 개발할 수 있도록 하는 것이라고 하며 이번 발표 이후에도 안드로이드에만 집중하지않고 꾸준히 발전할 것이라고 하였습니다.

이런 개발 뉴스를 더 만나보세요 

Kotlin의 장점으로는 보통 간결함, 안전함, 다재다능함, 호환성등을 이야기합니다. Java로 개발하는 것보다 비약적으로 코드의 양이 줄어들고 널 포인트 예외에 대한 안전성이 증가합니다. 또한 Kotlin은 인텔리제이(안드로이드 스튜디오)와 강력하게 통합되어있습니다. 안드로이드스튜디오 3.0에 기본으로 포함되며 같은회사에서 만들었으니 자연스럽게 빌드가 되어 디버깅이 되어 불편함이나 부담이 없습니다. 또한 Java -> 코틀린 변환이 강력한데요, 소스 파일 통채로도 가능하고 자바 코드를 복사해서 코틀린 코드로 붙여넣을 때도 변환이 이루어집니다.


Realm 모임에서 샘플 코드를 보여줄때 iOS용 Swift코드로는 단 몇 줄의 데모 코드가, Android 개발자를 위한 Java코드를 보여줄 때에는 수많은 보일러플레이트 코드로인해 수십줄로 표현해서 설명해야 할때 참 아쉬웠습니다. 이제는 구글의 공식 예제나 수많은 라이브러리 들의 예제코드들이 빠르게 간결한 Kotlin으로 바뀌어갈 것이라고 생각합니다. 이번 발표를 계기로 안드로이드 개발자들이 작성해야하는 코드도 줄어들며 앞으로 더 중요한 기능구현에 집중할 수 있으리라 생각합니다.


젯브레인과 코틀린

안드로이드 스튜디오, Kotlin등 으로인해 예전부터 구글이 젯브레인을 인수하는것 아니냐는 의심을 많이 사고는 했는데요, 젯브레인은 공식 블로그에서 구글에 인수계획은 전혀 없으며 다른 IDE등 도구 개발에도 영향이 없을 것이라고 밝혔습니다. 또한 Kotlin 릴리즈 사이클도 안드로이드나 안드로이드 스튜디오와 별도로 계속 독립적으로 가져갈 것이라고 하였습니다. 다만 안드로이드 스튜디오용 플러그인을 만드는 일에 대해서는 젯브레인이 안드로이드 스튜디오팀과 협업하며 이어간다고 하였습니다.

Kotlin 언어를 개발한 젯브레인은 구글과 함께 Kotlin 재단을 만들어 발전시켜 나가기로 했다고 합니다. 또 Kotlin 컨퍼런스가 올해 11월 2~3일까지 샌프란시스코에서 열리게 됩니다. 그 어느때보다 많은 관심을 받지 않을까 생각합니다.


코틀린 코리아

한국에서도 Kotlin 스터디 모임도 있고 Kotlin 코리아 웹사이트를 비롯한 다양한 Kotlin 자료들이 있습니다. 아래에 링크를 모아두었습니다.

한국어 추천 링크

영문 추천 링크

코틀린 짧은 코드로 맛보기

코틀린의 null 체크

var a: String = "Realm"
a = null // error
var b: String? = "Realm"
b = null // ok

물론 널을 허용하는 타입을 참조할 때 문제가 생길 수는 있지만 다음과 같이 해결할 수 있다. b가 null이 아닌 경우에만 length가 실행됩니다.

b?.length

스마트 캐스팅

if (o is RealmObject) {
  return o.isLoaded;
}

o의 타입이 RealmObject인 것을 확인한 후 접근한 코드에서는 oRealmObject로 자동 캐스팅한다.

class User(val name: String,
 val age: Int,
 val address: String = "") {
}

val minwoo = User("Minwoo", 20)

명명된 인자

val minwoo = User("Minwoo", age = 20, address = "Gangnam")

함수형 프로그래밍

listOf(1, 2, 3) // 1, 2, 3 
.map { it * 2 } // 2, 4, 6
.filter { it > 2 } // 4, 6
.forEach { print(it) } // 4, 6 출력


[출처] https://academy.realm.io/kr/posts/kotlin-official-android-language/


Comments