자바의 대체 언어, 코틀린이란?

 


2011년 대중에게 처음 소개된 코틀린은 자바가상머신(JVM)에서 동작하는 프로그래밍 언어입니다.  2019년 구글 안드로이드 앱 개발 기본 언어로 채택되며 자바 언어를 대체할 수 있는 언어로 불리는 코틀린의 빠르게 발전하고 있습니다. 

 

코틀린의 장점이 많은 언어더라도 자바를 대체하기에 적합한 이유가 있어야 가능할텐데요. 그것은 코틀린이 자바의 가상 머신(JVM) 위에서 매끄럽게 동작하는 언어이기 때문입니다. 코틀린의 문법은 자바와 호환되지는 않지만, 한마디로 자바 코드와 함께 쉽게 연동해서 사용할 수 있다는 것입니다. 

 

자바는 가상머신을 만들어두고 그 위에서 프로그램이 동작하도록 하는 시스템입니다. 즉, 코틀린으로 만든 프로그램은 자바로 만든 프로그램처럼 바뀐 후 자바 가상머신에서 실행되게 됩니다. 개발자는 앱을 만들 때 코틀린으로 만들면 되고 코틀린으로 만든 코드를 빌드하면 자바 가상 머신에서 동작할 수 있는 결과물로 변환됩니다.

 

또한, 일반적으로 프로그래밍 언어에서는 변수를 선언할 때, 타입과 기본값을 설정해야 하지만, 코틀린은 변수의 타입과 값을 지정하지 않은 경우에도 그것을 판단하기 위해서 적극적인 추론이 가능합니다. 이것이 바로 코틀린이 자바와 차별화된 부분입니다.

 


 

 

[코틀린 특징]


1. 정적 타입 지정 언어

코틀린은 정적 타입(Statically typed) 지정 언어입니다. 정적 타입 지정이라는 말은 프로그램의 모든 구성 요소의 타입이 컴파일 되는 시점에 알 수 있고, 컴파일러가 타입을 검증해준다는 뜻입니다.

 

2. 함수형 프로그래밍과 객체지향 프로그래밍

코틀린은 함수형 프로그래밍이 가능하며, 함수형 프로그래밍의 경우 간결성, 다중 스프레드 환경에서의 안정성, 테스트의 용이성이라는 장점을 가지고 있습니다.

 

*함수형 프로그래밍과 함께 알아두면 좋은 개념- 일급객체(first-class object)

:일급 객체란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 보통 함수에 매개변수로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체라고 한다

 

3. 코틀린의 응용

안드로이드 뿐 아니라 서버에서도 사용이 가능합니다. 코틀린으로 만든 소스는 앞서 말한 것처럼 자바용으로 변환될 수 있을 뿐 아니라 자바스크립트으로도 변환이 가능합니다. 자바스크립트로 변환이 가능하다는 것은 웹 개발도 가능하다는 의미이며, 웹페이지, 웹서버를 만드는 데 사용할 수도 있습니다.

 


 

 

[코틀린의 장점]

 

1. 간결성, 생산성

간결성은 코틀린의 가장 큰 장점입니다. 코틀린은 의미 없는 코드 및 형식을 맞추기 위한 부수적인 코드들을 제거하여 간결하게 코드를 작성하도록 합니다.​ 적은 코드라인으로 문제를 효율적으로 해결할 수 있습니다. 실제로 자바 대신 코틀린을 적용해보면 코드의 양이 많게는 1/3까지 줄어든다고 합니다. 

 

2. NULL 안정성

널 포인트 예외에 대한 안정성이 증가합니다. 널 안정성은 변수에 널 값을 할당하면서 생길 수 있는 프로그램의 비정상 종료 문제를 해결하는 데에 큰 역할을 합니다. 이처럼 코틀린의 컴파일러는 안전하게 에러를 발견하고 확인하여 런타임 에러를 감소시켜줍니다. 이와 더불어 세미콜론을 생략할 수도 있습니다.

 

3. 상호운용성

기존에 사용하던 라이브러리를 코틀린에서 그대로 사용하거나 자바 코드를 구현할 수 있습니다. 상호 간의 호출, 상속, 수현에 문제가 없기 때문에 어떠한 프로젝트를 진행할 때 처음부터 코드에 코틀린을 사용하지 않더라도 큰 문제없이 함께 사용할 수 있습니다.

 

 

 

*​참고자료

https://post.naver.com/viewer/postView.nhn?volumeNo=30806230&memberNo=40680985&navigationType=push

https://blog.naver.com/happydeps/222180898310

https://post.naver.com/viewer/postView.nhn?volumeNo=30816694&memberNo=40680985&vType=VERTICAL

https://hongku.tistory.com/340​