WebAssembly - это конец Javascript?
Что такое WebAssembly?
Подумайте о запуске вашей любимой компьютерной игры (в моем случае это Grand Theft Auto - Vice City) в своем веб-браузере.
Нет, я не шучу, это то, чего можно добиться с помощью WebAssembly. С помощью WebAssembly вы можете запускать исполняемые файлы в своем веб-браузере точно так же.
WebAssembly - это низкоуровневый двоичный язык для Интернета, который может компилировать языки высокого уровня (HLL), такие как C, C ++ и Rust, в понятный веб-код с помощью Emscripten, при этом обеспечивая такую же безопасность и производительность.
Это все в Интернете…
С огромным ростом количества веб-приложений большинство компаний хотят сделать свои приложения доступными в сети, что может принести пользу пользователям во многих отношениях.
Использование MS Office в Интернете будет более портативным, чем использование настольного приложения MS Office. Имеет смысл, правда?
- Веб-приложения просты в использовании и не требуют установки в отличие от исполняемых приложений, таких как MS Office, Adobe Photoshop, AutoDesk и т. д.
- Веб-приложения переносимы, и к ним можно получить доступ где угодно с любого устройства независимо от платформы.
- Веб-приложениями можно легко поделиться с другими с помощью простого URL-адреса.
Как работает WebAssembly…
WebAsembly использует Emscripten для преобразования HLL в модуль Assembly. Emscripten - это компилятор, который преобразует битовый код LLVM (низкоуровневой виртуальной машины), сгенерированный из C, C ++ или Rust, в Javascript. Давайте разберемся на небольшом примере.
Для начала напишем простую программу сложения на C.
Здесь мы можем найти две новые дополнительные строки,
- Первая строка
#include <emscripten.h>
используется для импорта библиотеки Emscripten в C. - Вторая строка
EMSCRIPTEN_KEEPALIVE
сообщит компилятору C не удалять код, даже если он кажется неиспользованным.
Теперь скомпилируем этот код с помощью Emscripten Compiler.
emcc
Компилятор Emscripten, который будет компилировать код C- -
s WASM=1
Здесь мы упоминаем компилятор emcc для вывода кода в формате WASM. По умолчанию он компилируется в asm.js -o sum.js
Вывести файл по указанному пути к файлу.sum.c
Путь к входному файлу
Теперь EMCC вернет нам два файла: sum.wasm
и sum.js
.
sum.wasm
- содержит двоичный файл для скомпилированного кода.
sum.js
- содержит вспомогательную функцию javascript для загрузки двоичного кода wasm.
Имея на руках sum.js, мы готовы импортировать его в наш HTML-файл.
Module
Импортировав thesum.js
, мы дадим доступ к специальному объекту Module
, который является частью Emscripten.
onRuntimeInitialised
- это функция обратного вызова, которая будет вызываться после компиляции всего двоичного кода и инициализации среды выполнения после выполнения всех операций асинхронного запуска.
cwrap
- это модуль, используемый для вызова функций C путем передачи информации о методе в качестве аргументов функции.
Module.cwrap('sum', 'number', ['number', 'number'])
В приведенной выше строке первый параметр sum
относится к имени метода, второй параметр number
относится к типу возврата функции суммы, а третий параметр ['number', 'number']
относится к тип возврата аргументов, переданных в функцию суммы.
Вуаля !, Вы только что успешно получили доступ к функции C из своего веб-браузера! Аналогичным образом вы также можете скомпилировать и запустить свой код CPP или Rust в Javascript. Это супер фантастика!
Поддержка WebAssembly…
В настоящее время все основные веб-браузеры поддерживают WebAssembly.
- Chrome (v57 +)
- Firefox (версия 52 +)
- КРАЙ (16+)
- Safari (v11 +)
- Opera (версия 44 +)
- iOS Safari
- Chrome для Android
- Firefox для Android
- Браузер Android
Точно так же, помимо поддерживаемых языков, таких как C, CPP, C #, Go, Rust и Forth. WebAssembly также планирует расширить свою языковую поддержку до Java, Kotlin, Swift, Perl, PHP, Python, Ruby, D, Idris, Prolog и т. Д.
WebAssembly в прямом эфире…
Вот некоторые из веб-приложений, которые уже используют WebAssembly для использования вещей, которые не могут быть достигнуты с помощью одного только Javascript.
- Construct 3 (редактор игр в браузере)
- Google Earth Voyager (использование WebAssembly для беспрепятственного рендеринга 3D-содержимого)
- AutoDesk (будущее такого огромного дизайнерского приложения теперь доступно в Интернете)
- Figma (использует WebAssembly для рендеринга холста, написанного на CPP)
Заключение…
Возвращаясь к нашему актуальному вопросу. Положит ли WebAssembly конец JavaScript? Определенно нет.
WebAssembly разработан таким образом, чтобы работать вместе с Javascript, а не в качестве замены Javascript. Но определенно WebAssembly уменьшит множество проблем, с которыми сейчас сталкивается Javascript.
Нажмите Clap, если это поможет :)