Kotlin/Wasm 및 WASI 시작하기
이 튜토리얼에서는 다양한 WebAssembly 가상 머신에서 WebAssembly System Interface (WASI)를 사용하여 간단한 Kotlin/Wasm 애플리케이션을 실행하는 방법을 보여줍니다.
Node.js, Deno, WasmEdge 가상 머신에서 실행되는 애플리케이션 예시를 찾을 수 있습니다. 결과물은 표준 WASI API를 사용하는 간단한 애플리케이션입니다.
현재 Kotlin/Wasm은 Preview 1으로도 알려진 WASI 0.1을 지원합니다. WASI 0.2 지원은 향후 릴리스에서 예정되어 있습니다.
Kotlin/Wasm 툴체인은 Node.js 태스크(
wasmWasiNode*)를 기본적으로 제공합니다. Deno 또는 WasmEdge를 활용하는 다른 태스크 변형은 프로젝트에 사용자 지정 태스크로 포함되어 있습니다.
시작하기 전에
IntelliJ IDEA의 최신 버전을 다운로드하여 설치합니다.
IntelliJ IDEA에서 File | New | Project from Version Control을 선택하여 Kotlin/Wasm WASI 템플릿 저장소를 복제합니다.
명령줄에서 복제할 수도 있습니다:
bashgit 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 태스크 중 하나를 선택하여 실행합니다.
Node.js에서 애플리케이션을 실행하려면 wasmWasiNodeRun을 선택합니다.
Deno에서 애플리케이션을 실행하려면 wasmWasiDenoRun을 선택합니다.
WasmEdge에서 애플리케이션을 실행하려면 wasmWasiWasmEdgeRun을 선택합니다.
Windows 플랫폼에서 Deno를 사용할 경우,
deno.exe가 설치되어 있는지 확인하세요. 자세한 내용은 Deno 설치 문서를 참조하세요.

또는 kotlin-wasm-wasi-template 루트 디렉토리에서 터미널에 다음 명령 중 하나를 실행합니다:
Node.js에서 애플리케이션을 실행하려면:
bash./gradlew wasmWasiNodeRunDeno에서 애플리케이션을 실행하려면:
bash./gradlew wasmWasiDenoRunWasmEdge에서 애플리케이션을 실행하려면:
bash./gradlew wasmWasiWasmEdgeRun
애플리케이션이 성공적으로 빌드되면 터미널에 메시지가 표시됩니다:

애플리케이션 테스트하기
다양한 가상 머신에서 Kotlin/Wasm 애플리케이션이 올바르게 작동하는지 테스트할 수도 있습니다.
Gradle 도구 창에서 kotlin-wasm-wasi-example | Tasks | verification 아래의 다음 Gradle 태스크 중 하나를 실행합니다:
- Node.js에서 애플리케이션을 테스트하려면 wasmWasiNodeTest를 선택합니다.
- Deno에서 애플리케이션을 테스트하려면 wasmWasiDenoTest를 선택합니다.
- WasmEdge에서 애플리케이션을 테스트하려면 wasmWasiWasmEdgeTest를 선택합니다.

또는 kotlin-wasm-wasi-template 루트 디렉토리에서 터미널에 다음 명령 중 하나를 실행합니다:
Node.js에서 애플리케이션을 테스트하려면:
bash./gradlew wasmWasiNodeTestDeno에서 애플리케이션을 테스트하려면:
bash./gradlew wasmWasiDenoTestWasmEdge에서 애플리케이션을 테스트하려면:
bash./gradlew wasmWasiWasmEdgeTest
터미널에 테스트 결과가 표시됩니다:

다음 단계
Kotlin Slack의 Kotlin/Wasm 커뮤니티에 참여하세요:
더 많은 Kotlin/Wasm 예시를 시도해 보세요:
