기술 할짝 (맛보기)

기술할짝 시리즈 1 - Kotlin

물빠진떡 2024. 10. 16. 16:38

서론

이 시리즈는 데브코스 커리어 TALK라는 강연에서 개발바닥 향로님이신 이동욱 CTO 님과 대화를 하다가 깨달은 부분이 있어서 시작하게 되었다.

: 지원하는 회사들과 언어 스택이 너무 다른것 같아 고민입니다. 따로 Node.js나 Kotlin같은 언어로 프로젝트를 진행하거나 학습을 할 필요가 있을까요?

이동욱 CTO님 : 진행하면 물론 좋겠지요. 하지만 개발자로서 요즘 유행하거나 화제가 된 기술 (언어)를 호기심에라도 경험해보거나 학습하지 않는 개발자를 좋은 개발자라고 할 수 있을까요?


와 이부분에서 내가 잘못 생각하고 있었구나 라고 느끼게 되었다. 집에 돌아온 나는 우선 경험을 해보는것이 중요하겠다는 생각이 들었다.

그 시작은 Kotlin을 선택하게되었다. 그 이유는 Java를 배운 입장에서 익숙하게 느낄 수 있을것이라고 추천받아서 이다.

코틀린이란

Java IDE로 유명한 Intellij를 만든 JetBrain사에서 2011년에 만든 오픈 소스 프로그래밍 언어이다. Java와 마찬가지로 JVM 기반의 언어이다. Java와 100% 상호 운영이 지원된다.

 

Java와의 큰 차이점은 JVM 기반이어서 JVM 바이트코드가 사용되지만, Kotlin/Native 컴파일러를 통해 기계어로 컴파일이 가능하다.


이말은 Java는 JVM이 없는 환경, 특히 ios와 같은 환경에서는 작성하기 어렵지만 Kotlin의 경우 Kotlin Multiplatform을 통해 다양한 플랫폼에서 활용 가능하다.

이러한 장점은 모바일 크로스 어플리케이션에서 유리하다. 예를 들어 JVM이 가능한 안드로이드 환경에서와 불가능한 IOS환경에서 동시에 사용이 가능하다는 장점이 있다.

할짝 실습기 - 우테코 precourse 예제 문제 1 야구 문제

연습하기 최고의 환경은 역시 우테코 문제인것 같다.


우테코 프리코스 문제는 전부 공개이고 간단히 포크해서 문제를 풀어볼 수 있어서 해당 언어가 있다면 연습해보기 좋다.
미션 - 숫자 야구

감상평

Java와 비교해 봤을때? 아직은 잘 모르겠다. 확실히 자바와 유사한 점이 많다보니 단순히 실습만으로는 이 언어의 장단점에 대해 판단하기는 어려운것 같다.

 

Java와 Kotlin의 가장 큰 차이점이라고 하면 val, var인것 같다.

val(불변), var(가변) 객체의 타입을 추론하긴하는데
Java도 var가 있긴하다(사용하진 않지만)... 그래서 큰 차이점은 잘 못느꼈다.

습관적으로 뒤에 타입을 선언하고 있었다.

또 Data클래스라는 것이 있던데 이것도 자바17에도 record가 추가되었다.

 

뭐 이것 저것 있다만 이 단순한 예제만으로는 느끼기에는 부족한 면이 많았던거 같다.

 

Java에서는 안되는데 kotlin에서 되는 기능이라면?

자동 캐스팅? 이런 기능도 있다. 이 경우는 예전에 마피아 투게더 프로젝트에서 타입 캐스팅 부분에서 고민하고 있던 부분이 있어서 고민하다가 아는 형이 코틀린은 이런거 고민할 필요없다고 한 적이 있었다

예를 들어 자바는

Object obj = "Hello";
if (obj instanceof String) {
    String str = (String) obj;
    System.out.println(str.length());
}

이런식으로 캐스팅을 해줘야 한다면

코틀린은

val obj: Any = "Hello"
if (obj is String) {
    println(obj.length)  // obj는 String으로 자동 캐스트됨
}

이렇게 된다고 한다.

 

아직까지는 차이점을 느낀 부분은 없는것 같다. 아마도 직접 배포를 해보거나 위에서 말한 멀티 플랫폼 환경에서 경험을 해봐야 느낄부분이 있을꺼 같다.

'기술 할짝 (맛보기)' 카테고리의 다른 글

기술할짝 시리즈 2 - Node.js  (2) 2024.11.01