Kotlin/JavaScript
Kotlin/JavaScript
Kotlin/JavaScript(Kotlin/JS)를 사용하면 Kotlin 코드와 Kotlin 표준 라이브러리, 호환되는 모든 의존성을 JavaScript로 트랜스파일할 수 있어요. 이렇게 하면 JavaScript를 지원하는 어떤 환경에서도 Kotlin 애플리케이션을 실행할 수 있게 돼요.
Kotlin Multiplatform Gradle 플러그인(kotlin.multiplatform)을 통해 Kotlin/JS를 사용해서, JavaScript를 타깃으로 하는 Kotlin 프로젝트를 한 곳에서 구성하고 관리할 수 있어요.
Kotlin Multiplatform Gradle 플러그인은 애플리케이션의 번들링을 제어하고 npm에서 JavaScript 의존성을 직접 추가하는 등의 기능을 제공해요. 사용할 수 있는 설정 옵션에 대한 개요는 Set up a Kotlin/JS project를 참고하세요.
현재 Kotlin/JS 구현은 ES5와 ES2015 표준을 타깃으로 해요.
Kotlin/JS 사용 사례
Kotlin/JS를 활용하는 일반적인 방법은 다음과 같아요.
프론트엔드와 JVM 백엔드 사이의 공통 로직 공유
백엔드가 Kotlin이나 다른 JVM 호환 언어로 작성되어 있다면, 웹 애플리케이션과 백엔드 사이에 공통 코드를 공유할 수 있어요. 여기에는 데이터 전송 객체(DTO), 검증 및 인증 규칙, REST API 엔드포인트의 추상화 등이 포함돼요.
Android, iOS, 웹 클라이언트 사이의 공통 로직 공유
네이티브 사용자 인터페이스를 유지하면서 웹 인터페이스와 Android, iOS용 모바일 애플리케이션 사이에 비즈니스 로직을 공유할 수 있어요. 이렇게 하면 REST API 추상화, 사용자 인증, 폼 검증, 도메인 모델 같은 공통 기능을 중복해서 만들지 않아도 돼요.
Kotlin/JS로 프론트엔드 웹 애플리케이션 구축하기
기존 도구와 라이브러리를 통합하면서 Kotlin으로 전통적인 웹 프론트엔드를 개발할 수 있어요.
- Android 개발에 익숙하다면 Kobweb이나 Kilua 같은 Compose 기반 프레임워크로 웹 애플리케이션을 만들 수 있어요.
- JetBrains가 제공하는 common JavaScript 라이브러리용 Kotlin 래퍼를 사용해서 Kotlin/JS로 완전히 타입 세이프한 React 애플리케이션을 만들 수 있어요. Kotlin 래퍼(
kotlin-wrappers)는 React와 그 외 JavaScript 프레임워크에 대한 추상화와 통합을 제공해요.- 이 래퍼들은 React Redux, React Router, styled-components 같은 보조 라이브러리도 지원해요. JavaScript 생태계와의 인터옵을 통해 서드파티 React 컴포넌트와 컴포넌트 라이브러리도 사용할 수 있어요.
- Kotlin 생태계와 통합되고 간결하고 표현력 있는 코드를 지원하는 Kotlin/JS 프레임워크를 사용할 수 있어요.
구형 브라우저를 지원하는 멀티플랫폼 애플리케이션 구축하기
Compose Multiplatform을 사용하면 Kotlin으로 애플리케이션을 만들고 웹 프로젝트에 모바일과 데스크톱 사용자 인터페이스를 재사용할 수 있어요. 이런 목적의 기본 타깃은 Kotlin/Wasm이지만, Kotlin/JS도 타깃으로 삼아 구형 브라우저까지 지원 범위를 확장할 수 있어요.
Kotlin/JS로 서버 사이드와 서버리스 애플리케이션 구축하기
Kotlin/JS의 Node.js 타깃을 사용하면 JavaScript 런타임에서 서버 사이드나 서버리스 환경용 애플리케이션을 만들 수 있어요. 이는 빠른 시작과 낮은 메모리 사용량을 제공해요. kotlinx-nodejs 라이브러리는 Kotlin에서 Node.js API에 타입 세이프하게 접근할 수 있게 해 줘요.
사용 사례에 따라 Kotlin/JS 프로젝트는 Kotlin 생태계의 호환 라이브러리와 JavaScript·TypeScript 생태계의 서드파티 라이브러리를 사용할 수 있어요.
Kotlin 코드에서 서드파티 라이브러리를 사용하려면 자신만의 타입 세이프 래퍼를 만들거나 커뮤니티가 유지 관리하는 래퍼를 사용할 수 있어요. 또한 Kotlin/JS의 dynamic type을 사용하면 엄격한 타입 지정과 라이브러리 래퍼를 건너뛸 수 있는데, 그 대가로 타입 안전성을 잃게 돼요.
Kotlin/JS는 가장 흔한 모듈 시스템인 ESM, CommonJS, UMD, AMD와도 호환돼요. 이를 통해 모듈을 생성하고 소비하면서 JavaScript 생태계와 구조적인 방식으로 통합할 수 있어요.
사용 사례 공유하기
Kotlin/JS 사용 사례 목록이 완전한 건 아니에요. 다양한 접근 방식으로 직접 실험해 보고 프로젝트에 가장 잘 맞는 방법을 찾아보세요.
사용 사례, 경험, 질문은 Kotlin Slack의 #javascript 채널에서 Kotlin/JS 커뮤니티와 공유해 보세요.
Kotlin/JS 시작하기
Kotlin/JS 작업을 시작하기 위한 기초와 첫 단계를 살펴보세요.
- Kotlin이 처음이라면 basic syntax부터 검토하고 Kotlin tour를 둘러보세요.
- 영감을 얻으려면 Kotlin/JS 샘플 프로젝트 목록을 확인해 보세요. 이 샘플들에는 프로젝트를 시작하는 데 도움이 되는 유용한 코드 스니펫과 패턴이 담겨 있어요.
- Kotlin/JS가 처음이라면 더 고급 주제를 살펴보기 전에 설정 가이드부터 시작하세요.
직접 Kotlin/JS를 시도해 보고 싶나요?
Kotlin/JS 샘플 프로젝트
다음 표는 다양한 Kotlin/JS 사용 사례, 아키텍처, 코드 공유 전략을 보여 주는 샘플 프로젝트 목록이에요.
| Project | Description |
|---|---|
| Spring과 Angular 사이에 공통 코드가 있는 Petclinic | 데이터 전송 객체, 검증 및 인증 규칙, REST API 엔드포인트 추상화를 공유해 엔터프라이즈 애플리케이션에서 코드 중복을 피하는 방법을 보여 줘요. 코드는 Spring Boot 백엔드와 Angular 프론트엔드 사이에서 공유돼요. |
| Fullstack Conference CMS | Ktor, Jetpack Compose, Vue.js 애플리케이션 사이에서 가장 단순한 형태부터 모든 코드 공유까지 다양한 코드 공유 방식을 선보여요. |
| Compose-HTML 기반 Kobweb 프레임워크의 Todo App | Android 개발자에게 익숙한 방식을 재사용해 할 일 목록 애플리케이션을 만드는 방법을 보여 줘요. Kobweb 프레임워크로 구동되는 클라이언트 UI 애플리케이션을 만드세요. |
| Android, iOS, 웹 사이의 단순 로직 공유 | Kotlin의 공통 로직이 포함된 프로젝트 템플릿을 제공하며, 이 로직은 Android(Jetpack Compose), iOS(SwiftUI), 웹(React)의 플랫폼 네이티브 UI 애플리케이션에서 사용돼요. |
| 풀스택 협업 할 일 목록 | JS와 JVM 타깃이 있는 Kotlin Multiplatform을 사용해 협업용 할 일 목록 애플리케이션을 만드는 방법을 보여 줘요. 백엔드에는 Ktor를, 프론트엔드에는 React와 Kotlin/JS를 사용해요. |
Kotlin/JS 프레임워크
Kotlin/JS 프레임워크는 바로 사용할 수 있는 컴포넌트, 라우팅, 상태 관리, 그리고 현대적인 웹 애플리케이션을 만드는 데 필요한 기타 도구를 제공해 웹 개발을 단순화해요.
서로 다른 저자가 작성한 Kotlin/JS용 프레임워크를 확인해 보세요.
Kotlin/JS 커뮤니티에 참여하기
공식 Kotlin Slack의 #javascript 채널에 참여해서 커뮤니티와 Kotlin/JS 팀과 대화를 나눌 수 있어요.