Kotlin/Wasm과 WASI 시작하기
Kotlin/Wasm과 WASI 시작하기
이 튜토리얼에서는 Kotlin/Wasm으로 만든 간단한 애플리케이션을 WebAssembly System Interface(WASI)를 이용해서 다양한 WebAssembly 가상 머신에서 실행하는 방법을 보여드릴게요.
예제 애플리케이션은 Node.js, Wasmtime, Deno, WasmEdge 가상 머신에서 실행할 수 있어요. 표준 WASI API를 사용하는 간단한 애플리케이션이랍니다.
현재 Kotlin/Wasm은 WASI 0.1(Preview 1이라고도 불러요)을 지원해요. WASI 0.2 지원은 향후 릴리스에서 계획되어 있고, WASI 0.2 지원 소식은 YouTrack 이슈에서 확인하실 수 있어요.
wasmWasi 타깃은 기본적으로 새로운 예외 처리(exception handling) 제안을 사용해서, 최신 WebAssembly 런타임과의 호환성을 높여줘요.
Kotlin/Wasm 툴체인은 Node.js 태스크(wasmWasiNode*)와 Wasmtime 태스크(wasmWasiWasmtime*)를 기본으로 제공해요. 프로젝트에 있는 Deno나 WasmEdge를 사용하는 태스크는 커스텀 태스크로 포함되어 있답니다.
본문
시작하기 전에
- 최신 버전의 IntelliJ IDEA를 다운로드해서 설치해 주세요.
- IntelliJ IDEA에서 File | New | Project from Version Control을 선택해서 Kotlin/Wasm WASI 템플릿 저장소를 클론해 주세요.
명령줄에서도 클론할 수 있어요:
git clone [email protected]:Kotlin/kotlin-wasm-wasi-template.git
애플리케이션 실행하기
-
View | Tool Windows | Gradle을 선택해서 Gradle 도구 창을 여세요.
Gradle 도구 창에서 프로젝트가 로드되면
kotlin-wasm-wasi-example아래에 Gradle 태스크를 찾을 수 있어요.태스크가 제대로 로드되려면 Gradle JVM으로 최소한 Java 11이 필요하답니다.
-
kotlin-wasm-wasi-example | Tasks | kotlin node에서 다음 Gradle 태스크 중 하나를 선택해서 실행해 주세요.wasmWasiNodeDevelopmentRun— Node.js에서 애플리케이션을 실행해요.wasmWasiWasmtimeDevelopmentRun— Wasmtime에서 애플리케이션을 실행해요.wasmWasiDenoDevelopmentRun— Deno에서 애플리케이션을 실행해요.wasmWasiWasmEdgeDevelopmentRun— WasmEdge에서 애플리케이션을 실행해요.
Windows 플랫폼에서 Deno를 사용할 때는 deno.exe가 설치되어 있어야 해요. 자세한 내용은 Deno 설치 문서를 참고해 주세요.
[IMAGE: Kotlin/Wasm and WASI tasks]
또는 kotlin-wasm-wasi-template 루트 디렉터리에서 터미널에 다음 명령 중 하나를 실행해도 돼요.
- Node.js에서 애플리케이션을 실행하려면:
./gradlew wasmWasiNodeDevelopmentRun
- Wasmtime에서 애플리케이션을 실행하려면:
./gradlew wasmWasiWasmtimeDevelopmentRun
- Deno에서 애플리케이션을 실행하려면:
./gradlew wasmWasiDenoDevelopmentRun
- WasmEdge에서 애플리케이션을 실행하려면:
./gradlew wasmWasiWasmEdgeDevelopmentRun
애플리케이션이 성공적으로 빌드되면 터미널에 메시지가 표시돼요:
[IMAGE: Kotlin/Wasm and WASI app]
애플리케이션 테스트하기
Kotlin/Wasm 애플리케이션이 다양한 가상 머신에서 올바르게 동작하는지도 테스트할 수 있어요.
Gradle 도구 창에서 kotlin-wasm-wasi-example | Tasks | verification의 다음 Gradle 태스크 중 하나를 실행해 주세요.
wasmWasiNodeTest— Node.js에서 애플리케이션을 테스트해요.wasmWasiWasmtimeTest— Wasmtime에서 애플리케이션을 테스트해요.wasmWasiDenoTest— Deno에서 애플리케이션을 테스트해요.wasmWasiWasmEdgeTest— WasmEdge에서 애플리케이션을 테스트해요.
[IMAGE: Kotlin/Wasm and WASI test tasks]
또는 kotlin-wasm-wasi-template 루트 디렉터리에서 터미널에 다음 명령 중 하나를 실행해도 돼요.
- Node.js에서 애플리케이션을 테스트하려면:
./gradlew wasmWasiNodeTest
- Wasmtime에서 애플리케이션을 테스트하려면:
./gradlew wasmWasiWasmtimeTest
- Deno에서 애플리케이션을 테스트하려면:
./gradlew wasmWasiDenoTest
- WasmEdge에서 애플리케이션을 테스트하려면:
./gradlew wasmWasiWasmEdgeTest
더 알아보기
Kotlin Slack에서 Kotlin/Wasm 커뮤니티에 참여해 보세요:
Kotlin/Wasm 예제를 더 둘러보세요: