Java나 android 프로그램을 개발 할 경우 JNI를 이용하여
native code(c/c++ 등)로 작성된 코드를 빌드하고 호출 할 수 있습니다.
WebAssembly를 이용하면 native source 코드를 javascript에서도 호출 가능하도록 빌드 하여 사용 할 수 있습니다.
아래의 링크의 내용을 일부 발췌하면 WebAssembly를 다음과 같이 정의 하고 있습니다.
웹어셈블리가 뭔가요?
WebAssembly는 최신 웹 브라우저에서 실행할 수 있는 새로운 유형의 코드이며 새로운 기능과 성능 면에서 큰 이점을 제공합니다. 직접 코드를 작성하는 것이 아니라 C, C ++, RUST 등의 저급 소스 언어를 효과적으로 컴파일하도록 고안되었습니다.
이는 웹 플랫폼에 큰 영향을 미칩니다. 이전에 불가능했던 웹에서 실행되는 클라이언트 응용 프로그램을 사용하여 웹에서 여러 언어로 작성된 코드를 네이티브에 가까운 속도로 실행하는 길을 제공합니다.
게다가 WebAssembly 코드를 사용하여 이를 활용하는 방법을 알 필요조차 없습니다. WebAssembly 모듈을 웹 (또는 Node.js) 앱으로 가져와 JavaScript를 통해 사용할 수 있도록 할 수 있습니다. JavaScript 프레임 워크는 WebAssembly를 사용하여 대규모 성능 이점과 새로운 기능을 제공하면서도 웹 개발자가 쉽게 기능을 사용할 수 있도록 할 수 있습니다.
웹어셈블리의 목표
웹어셈블리는 W3C 웹어셈블리 커뮤니티 그룹에서 다음과 같은 목표들로 만들어지고 있는 열린 표준입니다:
- 빠르고, 효과적이고, 이식성이 좋을 것 — 웹어셈블리 코드는 일반적인 하드웨어들이 제공하는 기능을 활용하여 여러종류의 플랫폼 위에서 거의 네이티브에 가까운 속도로 실행될 수 있습니다.
- 읽기 쉽고 디버깅이 가능할 것 — 웹어셈블리는 저수준 어셈블리 언어지만, 손으로 작성하고, 보고, 디버깅할 수는 있도록, 사람이 충분히 읽을 수 있는 수준의 텍스트 포맷을 갖고있습니다 (아직 스펙이 다듬어지는 중이긴 합니다).
- 안전함을 유지할 것 — 웹어셈블리는 샌드박싱된 실행환경에서 안전하게 돌아갈 수 있도록 설계되었습니다. 웹상의 다른 코드와 마찬가지로, 웹어셈블리 코드도 브라우저의 동일한 출처(same-origin)와 권한정책을 강제할 것입니다.
- 웹을 망가뜨리지 않을 것 — 웹어셈블리는 다른 웹 기술과 마찰없이 사용되면서 하위호환성을 관리할 수 있도록 설계되었습니다.
대략 다음과 같은 컨셉으로 빌드/구동 됩니다.
1. 환경설정
2. 빌드
3. 적용
순으로 천천히 정리해 보겠습니다.
'기타' 카테고리의 다른 글
Spring Tool Suite (0) | 2018.09.08 |
---|