웹 어셈블리(WebAssembly, 줄여서 WASM)는 웹에서 실행할 수 있는 이진 형식의 저수준 프로그래밍 언어입니다. 웹 어셈블리는 저수준 컴파일 언어(예: C, C++, Rust 등)로 작성된 코드를 브라우저에서 효율적으로 실행할 수 있도록 컴파일된 형태
로, 주로 성능과 속도가 중요한 웹 애플리케이션에서 사용됩니다.
웹 어셈블리는 이진 형식
이므로, 자바스크립트보다 더 빠르게 로드되고 실행됩니다. 이는 특히 CPU 집약적인 작업(예: 게임, 비디오 편집 등)에서 큰 장점을 제공합니다.
웹 어셈블리는 정적 타입을 지원하므로, 컴파일 타임에 오류를 발견할 수 있습니다. 이는 런타임 오류를 줄이는 데 도움이 됩니다.
여러 프로그래밍 언어에서 웹 어셈블리로 컴파일할 수 있습니다. 이는 개발자가 원하는 언어로 작성한 코드를 쉽게 웹에서 실행할 수 있게 해줍니다.
지원 언어: C/C++, Rust, AssemblyScript, C#, Dart, Go, Kotlin, Swift, Zig 등
대부분의 현대 웹 브라우저(Chrome, Firefox, Safari, Edge 등)에서 지원되므로, 다양한 환경에서 동일하게 동작할 수 있습니다.
웹 어셈블리는 모듈화된 형태로 코드 작성이 가능하여, 필요한 기능만을 선택적으로 로드하고 사용할 수 있습니다
웹 어셈블리는 샌드박스 환경에서 실행되므로, 보안성이 높습니다.
웹 어셈블리는 이진 코드로 즉시 실행되므로, 자바스크립트보다 빠른 성능을 제공합니다.
웹 어셈블리는 메모리 관리를 개발자가 직접 처리해야 하며, 자바스크립트는 가비지 컬렉션을 통해 자동으로 메모리를 관리합니다.
자바스크립트는 브라우저 내의 JavaScript 엔진(예: V8, SpiderMonkey 등)에 의해 해석됩니다. 코드가 실행될 때마다 파싱, 컴파일, 실행 과정을 거치며, 이 과정에서 JIT(Just-In-Time) 컴파일이 이루어질 있습니다.
반면, 웹 어셈블리는 사전에 컴파일된 상태
로 브라우저에 의해 실행됩니다. 브라우저는 이진 코드를 직접 실행할 수 있기 때문에, 해석 과정이 필요 없고, 코드가 더 빠르게 실행됩니다.
웹 어셈블리는 웹 애플리케이션의 성능을 크게 향상시키고, 다양한 언어로 작성된 코드를 재사용할 수 있는 장점을 제공합니다. 자바스크립트와 비교할 때, 성능과 타입 안정성, 다양한 언어 지원에서의 이점이 두드러지며, 앞으로의 웹 개발에서 중요한 역할을 할 것으로 예상됩니다.
참고
WebAssembly
WebAssembly의 개념
[Wasm] WebAssembly란 무엇인가?
WebAssembly(WASM)와 WASI: 웹 브라우저 및 서버사이드 기술
V8 에서 Javascript 코드를 실행하는 방법 정리해보기