서민주[광주_2반_C209]팀원
240423 웹 어셈블리 개요(정용기 컨설턴트)
웹 어셈블리는?
- 정리
- 다양한 프로그래밍 언어로 작성된 코드를 웹 브라우저에서 실행할 수 있도록 하는 기술
- C, C++, RUST, GO 등 20개 이상의 언어 지원
- 컴파일된 바이너리 포맷: .wasm
- 기존 웹 개발에서 사용되던 JavaScript에 비해 더욱 빠르고 효율적인 성능 제공
- 네이티브에 가까운 성능 목표
- JavaScript 대체가 아닌 보완
- Mozila
- 직접 코드를 작성하는 것이 아니라 C, C++, RUST 등의 소스 언어를 효과적으로 컴파일하도록 고안
- 웹에서 여러 언어로 작성된 코드를 네이티브에 가까운 속도로 실행
- JavaScript를 통해 사용할 수 있도록 할수 있음.
- webassembly.org
- WebAssembly (abbreviated Wasm) is a
binary instruction format for a stack-based virtual machine. Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications.
웹 기술에 대한 요구사항
JavaScript의 한계
- 성능을 고려했다기 보다는 편하게 개발하는 데 포커스가 맞춰진 고수준의 언어.
- 동작과 컴파일이 거의 동시에 일어남 → 최적화 시간 부족으로 최적화하기 어려움
JS 성능 개선 노력
- 2008에 JIT Compiler의 도입 ⇒ JS 동작하는 상황 모니터링, 분석하면서 특정 패턴 추출하면서 최적화.
- Asm.js
- Mozila 재단에서 시작함
- 유연했던 JS를 버리고 제약이나 규칙을 많이 둬서 개발하게 됨.
- 성능은 높아지나 C, C++과 큰 차이가 없음 ⇒ C, C++을 JS로 변환할 수 있겠다! 이런 이유로 프로젝트 진행
- 변환된 코드들이 일반적인 js 코드하고 많이 다름
WebAssembly 탄생
- 2015년 Mozilla 재단에서 W3C에 공개
- 2017년 WebAssembly MVP 버전 배포
- 2019년 W3C에서 공식 웹 표준으로 승인한 4번째 언어
- HTML, CSS, JavaScript, Web Assembly
Web Assembly vs Javascript