[Kotlin] 코틀린이란?[Kotlin] 코틀린이란?

Posted at 2020. 2. 12. 13:13 | Posted in Kotlin
반응형




발췌 : Do it! 코틀린 프로그래밍





■ 코틀린의 탄생 배경



-. 코틀린( Kotlin )은 IntelliJ IDEA라는 통합 개발 환경으로 유명한 젯브레인즈( JetBrains )에서 개발했다.


-. 구글의 안드로이드 스튜디오또한 IntelliJ IDEA 기반이며 코틀린을 공식 언어로 지원하고 있다.


-. 코틀린은 프로그래밍이 가능한 멀티플랫폼 언어이다.


 Kotlin / JVM

 · 자바 가상 머신에서 동작하는 애플리케이션을 제작

 Kotlin / JS

 · 자바스크립트로 웹 브라우저에서 동작하는 애플리케이션을 만들 수 있다.

 Kotlin / Native

 · LLVM 컴파일러를 이용하여 여러 플랫폼을 타깃으로 하는 애플리케이션을 만들 수 있다.


-. 코틀린은 JVM, JS, Native 상에서 실행될 수 있다.


 ① JVM( Java Virtual Machine, 자바 가상 머신) 기반의 코틀린은 자바 애플리케이션이나 안드로이드 애플리케이션을 만들 수 있다.


 ② JS( Java Script )  기반의 코틀린은 데이터베이스부터 서버, 클라이언트까지 다루는 풀스택( Full-Stack ) 웹 개발이 가능하다.


 ③ Native 기반의 코들린은 LLVM 컴파일러를 통해 다양한 플랫폼을 타깃으로 한 기계의 코드를 만들 수 있다.


 · 안드로이드 환경( arm32, arm64 )

 · 윈도우 환경( MinGW x86_64 )

 · 애플 iOS 환경( arm32, arm64, emulator x86_64)

 · 애플 맥 OS 환경( x86_64 ) 

 · 리눅스 환경( x86_64, arm32, MIPS, MIPS little-endian)

 · 웹 전용 환경( wasm32 )


    쉡게 말해 코드를 한번만 작성해도 Android와 iOS에서 모두 구동하는 애플리케이션을 만들 수 있다.


    또는 임베디드, IoT( Internet of Things )등을 타깃으로 한 애플리케이션을 만들 수 있다.








■ 코틀린의 장점




#01. 자바와의 완벽한 호완


코틀린은 자바와 완벽하게 호환되므로 자바 코드를 바꾸지 않고도 자바와 혼용하여 사용할 수 있다.


간단히 마라면 다양한 환경에서 사용할 수 있다.




#02. 자료형 오류를 미리 잡을 수 있는 정적 언어


코틀린은 프로그램이 컴파일될 때 자료형을 검사하여 확정하는 정적 언어이다.


즉 자료형 오류를 초기에 발견할 수 있어 프로그램의 안전성이 뛰어나다.




#03. 널 포인터( Null Pointer ) 예외로 인한 프로그램 중단을 예방할 수 있다.


컴퓨터 프로그래밍에 경험이 있다면, 널 포인터 예외( Null Pointer Exception )를 한번쯤은 경험하게 된다.


널 포인터 예외는 프로그램이 실행되는 도중에 발생하기 때문에 언제 어디서 어떻게 발생할지 아무도 알 수 없지만,


코틀린의 경우 널 포인터 예외를 사전에 예방할 수 있어 좋다.




#04. 간결하고 효율적


코틀린은 여러 가지 생략된 표현이 가능한 어어이다.


그래서 다른 언어보다 훨씬 간결하고 효율적으로 코딩이 가능하다.




#05. 함수형 프로그래밍과 객체 지향 프로그래밍이 모두 가능하다.


함수를 변수에 저장하거나 함수를 다른 함수의 매개변수로 넘길 수 있는 함수형 프로그래밍과,


클래스를 사용하는 객체 지향 프로그래밍을 둘다 할 수 있다.




#06. 세미콜론을 생략할 수 있다.


코드를 작성할 때 줄 마지막에 사용하던 세미콜론( ; )을 생략할 수도 있다.









■ 안드로이드 공식 언어로 채택된 코틀린




#01. 자바와 안드로이드 그리고 코틀린


자바 언어는 제임스 고슬링( James Gosling )이 만들었고 초기에는 썬 마이크로 시스템즈( Sun Microsystems )에서 관리해 왔다.


하지만 곧 썬 마이크로 시스템즈가 오라클에 인수되고 제임스 고슬링이 회사를 떠나면서


오라클이 자바 JDK( Java Development Kit )의 개발과 관리를 전적으로 주도하고 있다.



자바는 전 세계적으로 가장 널리 사용되고 있으며 언어 자체는 무료이지만,


오라클이 썬 마이크로 시스템즈를 인수한 다음 특정 자바 JDK에 대해 유료화 정책을 시작하였다.



이런 상황에서 구글은 자바 JDK를 통해 안드로이드 핵심 프레임워크와 여러 서비스를 이미 개발한 생태였기에,


오라클은 구글에게 몇 가지 자바 JDK를 사용한 API( Application Programming Interface )에 대하여


천문학적인 금앨의 특허 사용료를 요구했고 구글이 이를 거부하면서 구글과 오라클은 긴 시간동안 법정 소송을 벌여왔기에


몇가지 이해관계를 살펴볼 필요가 있다.




#02. 자바 언어와 Oracle JDK


자바 언어 자체는 무료로 사용할 수 있다.


다만 자바 언어로 프로그램을 작성하기 위해서는 SDK( Software Development Kit ) 자바 JDK가 필요하며,


자바 바이트코드를 실행하기 위해서는 JVM이 필요하다.



오라클은 Oralcle JDK와 JVM의 특정 기능을 사용할 때 라이선스 비용을 지불하는 정책을 시행하고 있기에,


구글은 이러한 분쟁을 피하기 위해 자체적인 가상 머신( DalvikVM 및 ART )을 만들거나


새로운 SDK를 제작하는 등의 조치를 취해 왔고,


자바언어를 대체하려고 코틀린을 안드로이드 공석 언어로 채택하게 되었다.


다만 하위 호환성을 고려하면 안드로이드의 모든 자바 프레임워크를 코틀린으로 다시 작성하기가 어렵기 때문에


안드로이드에서는 자바와 코틀린을 혼용해야 한다.




#03.  OpenJDK


오라클은 썬 마이크로 시스템즈를 인수하면서 기존의 썬 마이크로 시스템즈가 오픈소스화했던 JDK( Open JDK )를 유지한 상태로


Oracle JDK를 지속적으로 발전시키고 있다.



OpenJDK에는 오라클이 제공하는 몇 가지 사용 기능이 빠져 있으나 라이선스 비용을 지불하지 않는 GPLv2 라이선스를 따르는


오픈소스이기 떄문에 누구든 자유롭게 소스를 이용하고 배포할 수 있다.



라이선스 지불 비용과 관련한 대책으로 아줄 시스템즈( Azul Systems )에서 OpenJDK에 부가 기능을 넣어


TCK 인증을 통과시킨 Zulu라는 JDK가 존재한다.



 Oracle JDK 공식 웹 사이트

 · https://www.oracle.com/technetwork/java/javase/

 Open JDK 공식 웹 사이트

 · https://openjdk.java.net/

 Zulu 공식 웹 사이트

 · https://www.azul.com/downloads/zulu/










■ 코틀린으로 개발한 안드로이드 애플리케이션들



 · 핀터레스트( Pinterest)

 · 에버노트 ( Evernote )

 · 트렐로( Trello )

 · 스퀘어( Square )

 · 코세라( Coursera )

 



아직은 자바로 만든 안드로이드 애플리 케이션이 많지만,


구글이 2017 Google I / O에서 코틀린을 안드로이드 공식 언어로 발표한 이후 코틀린으로 만든 안드로이드 어플리케이션이 점점 더 많아지고 있다.


그만큼 코틀린이 개발자에게 인정받는 효율적인 언어라는 반증이 될 것이다.









반응형
//