안녕하세요![](http://i1.daumcdn.net/deco/contents/emoticon/per_12.gif?v=2)
이번 포스트 전까지는 항상 이론을 정리하는 '공통 기초'글만 작성했는데
이 글을 쓰면서 개인공부와 정보공유 두가지 효과를 보고 싶습니다ㅎㅎ
오늘까지는 소개이고 다음 코틀린 포스트부터 코딩과 함께 기초적인 문법관련 글을 준비할 예정입니다.
지금부터 포스트 시작합니다!
![](https://t1.daumcdn.net/cfile/tistory/99D694375AD4C49611)
- 코틀린(Kotlin) 소개
대표적인 프로그래밍 언어인 C, Java를 비롯하여 시간이 지나면서 개발환경, 페러다임의 변화에 발맞춰 많은 새로운 언어들이 발표되고 있습니다.
이런 흐름속에서 JetBrains(제트브레인)사 에서 코틀린(Kotlin)이란 새 언어를 발표하게 됩니다.
JetBrains사는 우리에게 익숙한 InteliJ, PyCharm IDE를 만든 개발회사이다.
추가로 JetBrains은 구글과 협업으로 Android Studio IDE도 만들었다.
2016년에 1.0 정식버전이 나온 후 2017년 5월, 구글 I/O행사에서 안드로이드 공식언어로 지정하였습니다.
- 코틀린(Kotlin) 언어의 특징
1. Java, 안드로이드 100% 호환
- Kotlin은 개발코드가 Java클래스로 빌드되어 JVM(자바가상머신)에서 동작하기 때문에 호환이 가능합니다.
이 뜻은 Java로 개발되던 프로그램을 Kotlin 뿐만 아닌 JVM을 기반으로 하는 모든언어로 개발할 수 있다는 것입니다.
2. Java, 안드로이드, 브라우저, 네이티브 애플리케이션 개발(범용성 향상)
- Java로 개발된 서버 Web 어플리케이션 뿐만이 아닌 javaScript개발도 가능한 언어를 목표로 발전하고 있습니다.
코틀린 공식블로그에서 JVM, javaScript 이외 iOS, Iot등 다른 플랫폼에서도 사용할 수 있도록 하는것이 Kotlin의 목표라고 말하고 있습니다.
3. InteliJ, 안드로이드 스튜디오, 이클립스, Commend 등을 통한 개발
- Kotlin은 JetBrains 그룹에서 만들었지만 JetBrains에서 개발한 IDE에서만 사용가능한 것은 아닙니다.
Kotlin은 개발환경을 특정 개발 도구로 한정하지 않으며 JetBrains IDE를 제외하고 현재 Eclipse, Commend Line Interface에서도 개발이 가능합니다.
4. 코드의 간결함
- 다른 언어보다 다양한 프로그래밍 기법을 제공합니다.
바로 아래 Kotlin을 Java와 비교한 자세한 설명을 읽어보면서 코드의 간결함을 직접 확인해보세요!
- Java와 코틀린(Kotlin)
Kotlin은 Java와 비슷하면서도 차이점을 명확이 두고 있습니다.
지금까지 Kotlin 1.2버전까지 출시되었으며 차이점은 아래 설명한 4가지 외에도 많지만 두 언어를 대표할 수 있는 차이만을 비교해보겠습니다.
1. Null에 대한 안전성
- 저와 같은 초보개발자 모두가 그렇지는 않지만 저는 Java개발을 하면서 NullPointException에서 애를 먹었던 적이 많습니다.
그렇기에 항상 Null을 처리해주는 코드를 작성하게 되었고 이는 개발코드가 지저분해지는 원인이였지만 이를 처리하는 기법을 제공해줌으로 조금 더 쉬운 개발을 할 수 있습니다.
2. 확장 함수
- Java에서도 클랫를 상속하여 하위 클래스에 기능을 확장시킬 수 있었습니다. 이렇게 상속할 때 많은 서브 클래스들이 만들어져 자원낭비를 할 수 있다는 단점이 있었는데 Kotlin에서는 상속이 아닌 함수 확장을 통해 기존 클래스의 기능을 쉽게 추가할 수 있게 하였습니다.
3. 함수형 프로그래밍
- 일종의 소프트웨어 개발 패러다임입니다.
이 부분에서 객체지향 프로그래밍인 Java보다 더 좋다 라고 비교할 수는 없지만
Kotlin은 함수형 프로그래밍으로써 기존에 있던 함수형 프로그래밍 언어보다 더 많은 프로그래밍 기법을 제공하고 있어 더 쉽게 사용할 수 있습니다.
4. data 클래스
- Spring Framework로 개발을 하는 저에게는 재미있는 부분인 것 같습니다.
data를 저장하기 위해 VO 클래스를 만들어 정의했어야 하나 만드는데 시간과 필요없는 코드를 소모했었는데 이를 짧게 작성할 수 있는 data 클래스를 제공해줍니다.
- 코틀린(Kotlin) 동향 분석(☆주목☆)
최근 구글(google)에 좋지 않은 소식이 들려왔습니다. 그 소식은 바로 '자바 라이센스 분쟁 소송' 이야기 입니다.
([참조] http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=101&oid=001&aid=0009988737)
2009년 4월, Database 대표기업 오라클(Oracle)사가 Java언어를 만든 썬마이크로시스템즈사를 인수하게 되면서 안드로이드를 만든 구글에게 Java라이센스 소송을 시작하게 됩니다.
구글이 만든 안드로이드는 개발 언어가 Java이며 안드로이드 플랫폼을 구축하기 위해 오라클의 Java 오픈소스를 이용한 것이 저작권법 위반이라고 주장했기 때문입니다.
이 소송은 8년이란 시간동안 진행되어 왔으며 2018년 4월, 미국연방순회항소법원(CAFC)은 오라클을 손을 들어주며 구글은 '자바 라이센스 분쟁 소송'에서 패소와 90억달러(한화 약 11조)+a의 배상금을 지불해야 하는 상황이 되었습니다.
이는 앞으로의 안드로이드 생태계에 큰 영향을 미칠 것이라고 다수의 개발자들은 말합니다.
구글은 앞으로 안드로이드 개발에 있어 Java를 사용하려면 오라클사에 라이센스 비용을 지불해야 하고
2017년 5월에 구글이 Kotlin을 공식언어로 하였기에
안드로이드에 더 이상 Java를 사용할 이유가 없을 것이라 판단합니다.
이에 따라 현재 안드로이드하면 자연스럽게 Kotlin을 떠올리게 되었고
구글에서 안드로이드의 중심을 잡고있던 Java를 대체할 언어로 Kotlin이 될 것이라는 예측이 많습니다.
이는 앞으로 Kotlin을 주목해야 하는 이유라고 생각 합니다.
* 참고도서 및 사이트
- 코틀린 공식 사이트 https://kotlinlang.org
- 『깡쌤의 안드로이드 프로그래밍』, 강성윤