지난 해 17년, 구글 I/O에서 '코틀린(Kotlin)'이 공식적으로 안드로이드 개발 언어로서 인정받게 됐다. 이로써 구글이 코틀린을 공식적으로 지원하게 되는 셈이다. 그러면 안드로이드 개발자들은 어떤 언어를 택해야 하는지 고민에 빠질 수 있다. iOS 개발에서도 스위프트의 파란이 펼쳐지고 있으니 말이다. 그러나 개발자 커뮤니티나 다수의 개발자들은 코틀린의 인기도 이해하는 분위기이지만, 선행 자바, 후속 코틀린으로 코스를 밟아나가야 하는 것이 맞다는 의견이 조금 더 비중있었다. 때문에 객관적으로 접근하기 위해 안드로이드 개발에서의 코틀린이 자바에 비해 어떠한 차이를 갖고 있는지 살펴보고자 한다.
코틀린은 인텔리 J IDEA를 만든 젯브레인스(Jetbrains)가 2010년에 선보인 개발 언어다. 이후 12년부터 오픈소스화되며 개발자들 사이에서 입소문을 타기 시작했다. 젯브레인스는 '안드로이드 스튜디오' 개발 툴을 제작한 회사이다. 그런 탓에 개발환경과 언어의 이질감이 존재하지 않는다. 심지어 젯브레인스는 코틀린을 통해 iOS의 개발도 가능하다고 이야기한다.
또한, 코틀린은 JVM(자바가상머신)에서 돌아간다. 이말인즉 JVM을 사용하는 그루비(Groovy), 스칼라(Scala)등과 함께 한 프로젝트에서 혼합해 사용이 가능하다. 그리고 코틀린도 자바와 같이 객체지향언어이다. 지금 두 언어는 어떤 차이를 보일까?
구글이 이전까지 만들었던 문서들이 모두 자바로 이루어져있다. 구글이 공식언어로 채택했다고 하지만 나름 소극적인 모습이 아니냐는 이야기도 간간히 들린다. 그렇기에 코틀린을 배우기 이전에 자바도 당연시 알고 있어야 한다는 것이 안드로이드 개발자들이 자바의 손을 놓지 못하는 가장 큰 이유였다. 그러나 코틀린도 애플의 스위프트의 선례와 같이 커뮤니티가 활성화되면 이 문제들은 시간이 해결해줄 수 있지 않을까 싶다.
코틀린이 장점으로 내세우는 것중 하나는 널포인트 오류를 해결했다는 점이다. 코틀린의 타입 시스템이 자바에서 가장 흔히 발생하는 Null exception에러로부터 자유롭게 만들어 준 것이다.
그리고, 코틀린은 간결한 문법을 사용한다. 인스턴스화 과정에서 특히나 간결하다.
예를 들어보자면 아래 코드와 같다.
Integer element = iterator.next(); // 자바
val element = iterator.next() // 코틀린
또한, 함수가 꼭 클래스 멤버일 필요가 없다. 코틀린에서의 함수는 클래스 내부의 멤버함수, 확장함수, 파일 최상위 수준으로 선언이 가능할 정도로 자바에서의 함수가 갖고 있는 틀에서 벗어났다. 특히 최상위 함수를 허용함으로 함수형 프로그래밍으로 불린다.
다른 장점으로는 스마트 캐스트를 지원한다. 스마트 캐스트란 오브젝트의 타입 확인과 동시에 변환을 해주는 스마트한 기능이다. 이외에도 범위표현에 있어 자바에 비해 우수한 장점을 많이 띄고 있다. 그러나 아직까지 자바로 안드로이드를 개발하는 경우가 대부분이다. 이말인즉 분명하게 코틀린의 단점이 존재한다는 것이다.
앞서 말했던 안드로이드 코틀린 문서의 부재도 단점으로 들 수 있다. 또한 코틀린은 앨리어스가 없다. 그래서 이미 정의된 함수 유형을 매번 중복 작성해야 한다.
그리고 코틀린은 자바6 기반으로 자바 상위 버전의 향상된 기능들을 제공하지 않는다. 마지막으로, 그래들을 이용한 컴파일은 점진적이지 않아 속도가 느린 특징을 띄고 있다.
참고사이트 :
'▶개발 > Android' 카테고리의 다른 글
안드로이드 스튜디오에서 Gradle이란? (0) | 2018.06.26 |
---|---|
[에러해결]Error: is not a valid file-based resource name character: File-based resource names must contain only lowercase a-z, 0-9, or underscore (0) | 2018.05.25 |
[안드로이드 오류해결] No system resource manager for module: app (0) | 2018.05.10 |
안드로이드 스튜디오 업데이트&SDK 다운로드 (1) | 2018.05.09 |
안드로이드 Cannot Resolve Symbol 'R' 오류 해결하기 (0) | 2018.04.29 |