[컴][자바] 코틀린(Kotlin), 앙꼬(Anko)

코틀린? / 언어 코틀린 ? / kotlin language / 코틀린 언어 / 코틀린이 뭐지?

Kotlin

개인적으로 자바의 readability 를 좋아하지 않는다. 이상하게도 글이 긴것은 읽기전에 지치는 느낌이듯이 코드도 길면 읽을 생각이 달아난다. 여하튼 코드의 가독성의 문제도 있지만 이런것들은 생산성에도 별로이다. 읽혀지지도 않는, 또는 읽지도 않을 코드를 위해 공간을 할애하고, 그것이 또 가독성을 방해하고, 여하튼 여러모로 별로이다.

여하튼 그래서 자바코딩은 그리 즐겁지 않다. (개인적으로 그렇단 이야기다.)

그런데 마소를 보다가 riiid 의 개발자분이 kotlin 을 사용하신다는 이야기에 뭘까 하고 들여다 보니 무척 마음에 들었다. 
Kotlin 은 나도 잠깐의 사용법과 글을 본 정도로 자세한 설명은 어렵지만, 대략적으로 이야기를 해준다면, 다른 JVM language 와 비슷하게 kotlin 으로 작성한 녀석을 compiler 를 통해 JVM Byte code 로 만들어 준다.

Kotlin 의 문법은 Gosu(gosu-lang/gosu-lang · GitHub) 와 비슷한 느낌도 들고, 여튼 여러 script 언어들에서 보이던 부분들이 많이 보인다. 우연히 scala 를 봤는데, 아무래도 이녀석이랑 더 가까워 보인다.


Kotiln과 다른 jvm script language

코틀린은 Scala 나 groovy 같은 스크립트 언어와 java 의 중간 쯤에 위치한 듯 하다. 적어도 간략한 프로그래밍에 코틀린은 그렇게 어울려 보이지 않는다.


코틀린의 중요 디자인 관점

코틀린의 중요 디자인 관점은 아래 두가지라고 한다.
  • 자바처럼 빠른 컴파일 결과물
    Make compilation at least as fast as Java
  • 가능한 언어를 간결하게 유지하면서 유용한수준의 표현을 지킨다.
    Keep useful level of expressiveness while maintaining the language simple as possible Taking this 

그래서 속도가 크게 문제가 되지 읺는 경우라면 개인적으로는 코딩을 위해서는 groovy 나 scala 등을 이용하는 것이 나을 듯 하다. 확실히 코틀린의 코드는 그리 간결하게 보이진 않는다.
(그런데 android 에서 groovy code 를 보니 groovy 도 그리 code 가 간결하게 될 것 처럼 보이진 않는다. 개인적으로 annotation 을 사용하는 것을 좋아하지 않아서 일 수도 있지만, syntax 안으로 포함시키는 Kotlin 쪽에 한 표를 주고 싶다.)


코틀린의 장점

Java 와 연동

쓰면서 보니, 확실히 java 와 seamless 한 연동이 가능한 해서 좋다. java 에서 kotlin code 를 쓰는 것이나, kotlin 에서 java code 를 사용하는 것이나 크게 어려움 없이 쓸 수 있다.

package 나 import 등을 통해 java package 를 import 하고 나면 kotlin 의 문법으로 java package 를 사용할 수 있다. (물론 약간의 주의는 필요하다.) 자세한 것은 아래 경로를 확인하자.

null check

null 과 관련해서 독특한(?) 관점을 가지고 있다. 흔히 요새 java 진영에서 @Nullable 이란 annotation 으로 null 과 관련된 code 사용에 좀 더 명확성(?)을 더하고 있는데, 이부분을 code syntax 내로 가져왔다. 그래서 null 이 가능한 변수와 null 이 불가능한 변수를 구분해서 coding 하도록 해 놓고 있다. 그래서 code 의 잠재적인 error 의 발생을 줄여주는 듯 하다.


IDE 지원

JetBrain 에서 만들어서 그럴 수 있지만, IDE 지원이 좋다. 개인적으로 IntelliJ 를 좋아하는데, java 보다 IDE 의 속도가 느린 감은 있지만, 그래도 확실히 문법적으로 디테일한 부분을 IDE 가 짚어주기 때문에, 처음 배우는 입장에서 꽤나 유용하다.


java code 를 kotlin 으로 변환하기

간단한 code 변환을 웹에서 할 수 있다. java code 가 어떻게 kotlin 과 matching 되는지 확인 해 보기에 좋다. 참고로 /**/ 주석이 있으면 alert 을 띄운다.





Anko

개인적으로 JetBrain 을 좋아하는 것도 있지만, android 에 대한 지원도 좋았다.(그리고 웬지 JetBrain 이 했으니 IDE 지원도 좋을 듯 싶었다.) 특히 요 앙꼬(Anko) 가 마음에 들었다. 개인적으로 xml 의 사용을 좋아하지 않았는데(아래 글에서도 얘기하듯이 난잡하다. 코드가 여기저기 흩어져 있는 기분이랄까.), 앙꼬는 이 부분에 대한 좋은 design 을 가져다 준다.


See Also



댓글 없음:

댓글 쓰기