본문 바로가기
Computer Science/Kotlin

Kotlin은 Java를 넘어설 수 있을까? 코틀린을 배워야하는 이유

by sy.cho__ 2024. 4. 17.


안녕하세요. 오늘은 Kotlin이라는 언어에 대해 말해보려합니다.

한국에서 개발자로 살아가고 있거나 개발자가 되고싶은 경우 한번쯤 배우는 언어는 Java입니다. 특히 서버 개발, 안드로이드 개발 다루고 있다면 거의 필수라고 볼 수 있을정도로 Java에 대한 관심은 한국에서 뜨겁습니다.

그러나 Java의 대체재로 Kotlin(코틀린)이 떠오르고 있습니다.
오늘은 Kotlin이라는 언어가 왜 탄생했는지, 장점이 어떻길래 이렇게 HOT한지, 배워야하는 이유에 대해 적어보겠습니다.

 


Kotlin은 왜 만들어졌을까?


Java를 활용한 여러 개발환경. 대표적으로 Spring Framework, Android 등을 개발할 때 어떤 IDE, 개발 도구를 사용하시나요?

Eclispe, Spring STS도 많은 쓰시겠지만 아무래도 가장 많이 사용되는 도구는 IntelliJ입니다. 인텔리제이라고 부르죠.
저도 여러 tool을 사용해봤지만 자동완성, 패키지 설치, 배포 등이 가장 간편하고 쉽게 사용할 수 있는 개발도구라 느껴지면서 현재는 이것만 사용하고 있어요.
Community는 무료로 사용할 수 있으며 Enterprise는 유료지만 더 막강한 기능을 가지고 있어서 java, kotlin이 주언어인 개발자는 투자가치가 있다고 생각해요. 아! 혹시 대학생이시라면 무료로 엔터프라이즈를 사용하실 수 있습니다!

kotlin은 intelliJ IDE를 만든 Jetbrain이라는 회사가 만들었습니다. Jetbrain은 인텔리제이 말고도 여러 개발 툴을 제공하고 있어요. 그런데 모든 코드의 70%가 java로 되어있다고 합니다. 그만큼 java에 친숙하고 장점인 ide를 개발할 수 있었지만 반대로 너무 오래된 언어라 불편한점이 많았다고 해요.

조금 더 모던하고 편리한 언어를 사용하고 싶었다고 합니다. 그런데 소위 Legacy 코드라고 하는 기존 시스템을 바꾸는건 쉽지 않아요. 개발 업무 경험이 있다면 공감하실 것 같아요.

새로운 것도 좋지만 서비스 입장에서는 현재 운영되고 있는 서비스가 이슈없이 안정적으로 구동되는 것이 제일 중요합니다. 그래서 어쩔수 없이 변경점이 생기는걸 최소화하게 되죠. 그래서 Jetbrain은 Kotlin을 개발하면서 Java와 100% 호환이 가능하도록 하는게 필요했고, 결국 그렇게 개발되었습니다.

 

Kotlin - Java 100% 호환된다는건 어떤의미지?

한줄로 정리하면 프로젝트에 Java와 Kotlin 파일을 둘다 사용할 수 있다는겁니다.  뿐만 아니라 서로 호출이 가능하죠. 즉 기존 Java 프로젝트에 존재하는 100여개의 Class가 있다면 1개씩 천천히 바꿔도 서비스에 이상이 없다는 의미입니다. 어떻게 보면 별게 아닐 수 있지만 사용자가 많은 서비스를 운영하는 개발자에게는 감히 어마어마하다고 볼 수 있어요.

어떻게 100% 호환이 가능할까요? 이를 설명하기 위해서는 JVM. Java Virtual Machine과 Complication, Interpretation에 대한 개념 소개가 필요합니다. 

 

어떻게 100% 호환될 수 있을까?

C와 C++과 같은 언어를 사용하다보면 컴파일(Compile)이란 용어를 많이 사용하는데요. 이는 Compilcation의 줄임말로 프로그래밍 언어를 기계어. 즉 컴퓨터가 이해할 수 있도록 바꿔주는 것을 말합니다.

기계어는 컴퓨터. 운영체제가 이해할 수 있는 언어를 말합니다. 정리하면 Window, Mac, Linux와 같은 컴퓨터가 이해할 수 있도록 변형해주는 것이 Complie입니다. 대표적은 C,C++, Go와 같은 언어가 여기에 해당됩니다 

그럼 Interpretation은 어떤걸까요? 이는 컴파일이 필요하지 않고 프로그램을 실행하면 내부에 Interpreter가 있어서 실시간으로 기계어로 전달되는 것을 말합니다. 대표적으로 Python, Javascript와 같은 언어가 여기에 해당되는데 Console에서 한줄씩 입력해도 바로 실행되는걸 보신적이 있을거에요. Interpretation이 적용되기 때문에 가능한거라 보시면 됩니다. 

그래서 언어를 비교해보면 Complication 언어가 무조건 빠릅니다. 기계어로 변형이 되어있기 때문에 바로 실행이 가능한거죠. 단점은 플랫폼에 의존적이게 됩니다. 운영체제에 따라 Complie이 다를테니 서로 다른 작업이 필요합니다. OS마다 각기 다른 기계어를 가지고 있으니까요

Interpretation은  Interpreter가 이를 모두 대신 해줍니다. 운영체제에 맞게 알아서 해석해주는거라 개발자는 편합니다. 

 JVM이란 Complication과 Interpretation의 조합입니다. Java, Kotlin Code를 작성하면 이를 기계어로 컴파일하는 것이 아니라 Java Bytecoe로 컴파일합니다. 여기서 Complication이 진행되죠.

그리고 이 Java Bytecode를 Window, Mac, Linux에서 실행시키려고 하면 여기서 JVM이 필요하게 됩니다. JVM은 Java Bytecode를 이해하고 OS에 맞게 해석해줍니다. Interpretation이 진행되는거죠. 

결국 JAVA와 KOTLIN은 컴파일되면 같은 Java Bytecode로 변환되기 때문에 같은 기게어로 해석되고 100%호환이 가능하게됩니다. 

// 자바로 작성된 스프링 부트를 코틀린에서 사용
@SpringBootApplication
class:MyApplication

fun main(args: Array<String>) {
	runApplication<MyApplication>(*args)
}

@RestController
class MyController{
	@GetMapping("/hello")
	fun sayHello() = "Hello"
}

 

100% 호환은 되지만 서로 차이점은 있겠죠? Java와 Kotlin에 대해 차이점에 대해서는 아래 포스팅에서 확인해주세요!

 

[Kotlin] 코틀린과 자바의 차이점 장단점 비교

Java와 Kotlin은 안드로이드 앱 개발에서 가장 널리 사용되는 두 가지 프로그래밍 언어입니다. Kotlin은 최근 몇 년 동안 안드로이드 개발자들 사이에서 인기를 얻고 있으며, Java에 비해 다양한 혜택

toberich.co.kr

 

Kotlin의 장점

Null safe 

개발하다보면 Null exception이 자주 발생하게 됩니다. 예기치 앖게 변수에 null값이 들어가 로직에 이슈가 생기게되는 오류인데요. Kotlin에서는 Null이 들어갈 수 있는 상황을 미리 인지하여 개발자에게 제공해줌으로서 Null safe 환경을 제공해줍니다. 

Google Home팀에서는 코틀린 도입 후 비정상 종료의 TOP1 원인인 NullPointException을 33% 절감했다고 하네요.

 

이제 Kotlin으로 비정상 종료는 줄이고, 안정성은 높이세요!

작성자: Florina Muntenescu (Developer Relations Engineer) 이 글의 원문은 여기서 확인할 수 있으며 블로그 리뷰에는 노현석(GDE)님이 참여해주셨습니다.  사용자는 앱이 원활하게 작동하길 기대합니다. 비

developers-kr.googleblog.com

 

Coroutine

Coroution은 GO의 routine과 유사한데, 간단하게 말하면 많은걸 한번에 실행할 수 있는 코드를 짤 수 있습니다. 즉 Java보다 훨씬 빠르죠. 코루틴에 대해서는 다른 포스팅에서 조금 더 자세히 다루도록 하겠습니다. 

 

다양한 분야에서의 활용

다양한 분야에서의 활용

Kotlin은 기존 Java Application뿐만 아니라 Javascript, Data Science 영역에서도 사용 가능합니다. JavaScript에서도 활용할 수 있는게 너무 신기한데요. 아래와 같이 코드를 작성하고 컴파일하면 JS로 사용할 수 있습니다.

// 아래 Kotlin으로 작성된 코드는 Javascript로 컴파일되어 브라우저에서 작동합니다.
import kotlinx.browser.window

fun main(){
	val body = window.document.body
	
	body?.innerHTML = "<b>Hello, <i>Kotlin</i></b>"
	
	window.setInterval({
		body?.innerHTML +="1"
	},1000)
}

 

Kotlin을 배워야하는 이유

지금까지 설명드린 내용만 봐도 배워야할 이유는 충분할 것 같습니다. 

Java는 발표된지 20년이 넘었고 C#, Swift와 같은 현대 언어에 비해 기능이 부족해요. Kotlin은 이를 보완해주며 심지어 Java보다 더 다양한 분야에서 사용할 수 있습니다. 

다양한 분야에서 사용할 수 있다는건 커뮤니티가 점점 커진다는 것을 의미합니다. 프로그래밍 언어 혹은 프레임워크의 커뮤니티가 커진다는건 엄청난 장점입니다. 그만큼 참조할만한 내용이 점점 많아진다는 의미이니까요

 

누가 배우면 좋을까?

회사에서 자바를 주언어로 사용하고 있거나 안드로이드, 스프링 프레임워크를 이미 활용하고 있는 개발자에게는 코틀린을 좋은 선택이 될것입니다. 이건 객체지향 그리고 함수혀 프로그래밍의 완벽한 조화를 가지고 있고, 변경점이 쉽지않은 Legacy 시스템에서 100% 호환하는 안정성도 가지고 있으니까요.

그리고 Java에 지루함을 느끼는 개발자분들이 많으실거에요. 특히 외국과 다르게 한국에서는 유독 JAVA에 대한 수요가 많았습니다. 그래서 새로운 언어를 배우고 싶은 개발자한테는 최적의 언어가 아닐까 싶습니다.

 


마칩니다. 

오늘은 Kotlin의 탄생배경과 배워야하는 이유에 대해 알아보았습니다. 

Kotlin에 대해 혹시 공부가 하고 싶다면 충분히 학습하실 수 있는 컨텐츠를 만들어볼테니 공부하시는데 참조해주세요! 관련 추카 포스팅으로 돌아오겠습니다. 

반응형