[Tech Series 1] 코틀린 멀티플랫폼, 미지와의 조우


#Kotlin #INFCON #인프콘 #핸즈온 #Kotlin/JS

ⓒKotlin

개발자들이 함께 모여 서로의 경험과 인사이트를 나누는 축제, 인프콘! 8월 26일, 드디어 인프런의 첫 번째 오프라인 개발 콘퍼런스인 인프콘이 개최됩니다. 인프콘을 기다리는 인프러너 여러분들을 위해 인프런이 준비한 ! 인프콘에서 만날 수 있는 여러 기술에 대해 미리 알아볼 수 있도록 소개해 드릴게요. 

[INFCON Tech Series]의 첫 번째 이야기, 코틀린 멀티플랫폼입니다. 코틀린 언어 하나로 서버 개발은 물론, 안드로이드, iOS 앱 개발과 웹 개발까지 모두 가능하다는 사실 알고 계셨나요? 코틀린을 통해 만나보는 멀티플랫폼이라는 미지의 세상에 대해 한 번 알아보아요 😀

INFCON Tech Series #1 📸

코틀린의 탄생 배경과 동작 원리,
다양한 확장이 가능한 멀티플랫폼까지!
코틀린이 만드는 세상에 대해 알아볼까요?


코틀린, 그것이 궁금하다!What is Kotlin?

코틀린(Kotlin)은 *JVM에서 실행되는 오픈소스 프로그래밍 언어로, IDE(통합 개발 환경)인 IntelliJ를 만든 젯브레인스(JetBrains)에서 만든 언어에요.

2011년, 젯브레인스의 개발 리드인 드미트리(Dmitry Jemerov)는 JVM 호환 언어들에 대해 문제를 느끼고 있었어요. 스칼라(Scala)는 컴파일 속도가 느리고, 자바(Java)는 호환이 어렵다는 한계였는데요. 이러한 문제를 개선하기 위해 젯브레인스는 새로운 프로그래밍 언어를 개발하기 시작했습니다.

그렇게 해서 탄생한 프로그래밍 언어가 바로 코틀린입니다. 2016년 젯브레인스는 JVM과 Android를 위한 실용적인 프로그래밍 언어라는 설명과 함께 코틀린 1.0 버전을 첫 배포했어요. 자바보다 안전하고 호환성이 좋으며, 스칼라보다 간결한 코틀린은 기존의 JVM 호환 언어들의 문제점을 해결했다는 점에서 개발자들의 관심을 받았는데요. 2017년부턴 구글이 코틀린을 안드로이드 공식 언어로 지정하면서 코틀린은 본격적으로 경쟁력을 갖추고, 시장의 주목 받기 시작했습니다. 

* JVM(Java Virtual Machine)

컴퓨터는 0과 1로 이루어진 기계어만 이해할 수 있어요. 따라서 일반적으로 프로그램 실행 시 프로그래밍 언어를 기계어로 바꾸는 컴파일 과정이 필요합니다. 이 과정에서 C, C++ 언어 등은 각 운영체제 별로 컴파일을 따로 해야한다는 번거로움이 있었어요. 예를 들면, Window에서 컴파일을 한 경우, Mac/Linux OS에서는 호환이 안되어 비효율적이었죠.

java_programWrite Once, Run Anywhere – Sun Microsystems ⓒmath.hws.edu

자바는 JVM이라는 자바 가상 머신을 통해 이 문제를 해결했습니다. 자바 프로그램은 실행 시 자바 코드(.java)를 byte code(.class)로 컴파일을 하고, JVM를 통해 각 운영체제 별로 byte code를 실행하는 과정을 거치는데요. 이 과정을 통해 자바 프로그램은 CPU나 운영 체제의 종류와 무관하게 동일하게 동작이 가능하다는 강력한 강점을 갖게 되었습니다.

코틀린 또한 JVM에서 실행 가능한 언어입니다. 자바와 마찬가지로 코틀린 코드(.kt)도 컴파일러를 통해 byte code(.class)로 변환되고, 다음으로 JVM을 통해 각 운영체제에서 실행이 가능해져요. 이런 점에서 코틀린은 자바와 100% 호환이 가능하다고 할 수 있습니다.


Kotlin is Everywhere!Kotlin Multiplatform

ⓒKotlin

멀티플랫폼은 여러 종류의 컴퓨터 플랫폼에서 공통적으로 동작하는 프로그램, 운영 체제, 프로그래밍 언어, 소프트웨어 등을 의미해요. 코틀린은 멀티플랫폼 프로그래밍을 지원하고 있는데요. 코틀린 멀티플랫폼 프로젝트는 아직 알파 버전이지만 실현 가능성에 많은 개발자들이 기대하고 있습니다. 코틀린 공식 페이지에 따른 멀티플랫폼 사용 사례는 아래와 같은데요. 예시들을 통해 멀티플랫폼에 대해 자세하게 알아볼게요.

1. 안드로이드 & iOS 앱 동시 지원

코틀린은 안드로이드 공식 언어로 잘 알려져 있는데요. 크로스 플랫폼 모바일 개발용 SDK인 코틀린 멀티플랫폼 모바일(Kotiln Multiplatform Mobile, KMM)을 이용하면 앱 구축 과정에서 안드로이드와 iOS 사이의 비즈니스 로직, 연결성 등의 공통 코드를 공유할 수 있습니다.

안드로이드와 iOS는 스크롤, 탐색 로직 등 UI 측면에서는 많은 차이점이 있는 반면 데이터 관리, 분석, 인증 기능 등 앱 비즈니스 로직에서는 많은 공통점을 갖고 있는데요. 이러한 점을 이용하여 코틀린 멀티플랫폼 모바일(KMM)은 비즈니스 로직에는 단일 코드를 베이스로 작성하고, 필요한 경우에만 안드로이드와 iOS 플랫폼 별 코드를 작성하여 유연한 개발을 가능하게 합니다.

2. 풀스택 웹 애플리케이션

코틀린 멀티플랫폼을 사용하면 풀스택 웹 애플리케이션 빌드가 가능합니다. 풀스택을 위해 백엔드 서버의 경우 Kotlin/JVM 지원을, 프론트엔드의 경우 Kotlin/JS를 지원하고 있어요. Kotlin/JS를 사용하면 프론트엔드 웹 애플리케이션을 작성할 수 있고, 안전하고 강력한 브라우저와 웹 API를 활용할 수 있습니다. 또, DOM(Document Object Model)의 요소를 생성, 수정하고 React 등의 자바스크립트 라이브러리 및 프레임워크를 이용할 수 있어요.

이렇게 Kotlin/JS를 통한 웹 클라이언트와 Kotlin/JVM을 통한 서버를 연결해 풀스택 애플리케이션을 구축하면, 동일한 그래들(Gradle) 프로젝트 내에서 서버와 클라이언트를 모두 관리 및 유지할 수 있다는 장점이 있습니다.

3. 멀티플랫폼 라이브러리 & 코드 공유

코틀린 멀티플랫폼은 라이브러리 생성자에게도 유용합니다. JVM, JS 및 네이티브 플랫폼에 대해 코틀린 코드 작성 및 구현을 통해 다중 플랫폼 라이브러리를 생성할 수 있어요. 하나의 라이브러리 생성만으로 다른 플랫폼 프로젝트에서 해당 라이브러리를 테스트하고 사용할 수 있어요.

또, 안드로이드, iOS 및 웹 애플리케이션에서 모두 동일한 코틀린 코드를 공유할 수도 있습니다. 코틀린 코드가 자동으로 네이티브 코드, 자바스크립트 코드로 변환되는 것인데요. 코틀린 멀티플랫폼은 만약 다른 플랫폼에서 코드를 재사용할 경우 수동으로 조정할 필요가 없이 바로 공유가 가능하다는 장점이 있어요.


Kotlin Multiplatform Hands-On인프콘에서 만나보세요!

앞으로가 더 기대되는 코틀린 멀티플랫폼! 코틀린 멀티플랫폼의 원리나 작동 방법, 그리고 실제 코드와 구현 방법이 궁금하시지 않으신가요? 궁금하실 여러분들을 위해 인프콘이 준비했습니다. 인프콘에서 코틀린 멀티플랫폼에 대해 자세하게 알아보고, 현장에서 직접 코틀린으로 풀스택 웹 개발을 체험해보세요! 

코틀린 멀티플랫폼, 미지와의 조우
: Building a Full-Stack Web App with Kotlin Multiplatform and React, Spring Boot

박용권, 김지헌 | 스프링러너

본 세션은 핸즈온으로, 코틀린 멀티플랫폼과 함께 리액트, 스프링부트로 웹 애플리케이션의 프론트엔드부터 백엔드까지 직접 개발하며 친해져 보는 시간을 가져보려고 합니다. 참가자는 코틀린 멀티플랫폼 프로젝트를 이해하고, 더 나아가 프론트엔드와 백엔드 간의 공유 로직 작성, Kotlin/JS 기반 리액트 및 스프링 웹 프로그래밍을 경험할 수 있습니다.

세션 소개 바로가기 >>

인프콘의 소식을 널리 알려주세요

INFCON 2022