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.

Здесь мы можем найти две новые дополнительные строки,

  1. Первая строка #include <emscripten.h> используется для импорта библиотеки Emscripten в C.
  2. Вторая строка 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.

  1. Construct 3 (редактор игр в браузере)
  2. Google Earth Voyager (использование WebAssembly для беспрепятственного рендеринга 3D-содержимого)
  3. AutoDesk (будущее такого огромного дизайнерского приложения теперь доступно в Интернете)
  4. Figma (использует WebAssembly для рендеринга холста, написанного на CPP)

Заключение…

Возвращаясь к нашему актуальному вопросу. Положит ли WebAssembly конец JavaScript? Определенно нет.

WebAssembly разработан таким образом, чтобы работать вместе с Javascript, а не в качестве замены Javascript. Но определенно WebAssembly уменьшит множество проблем, с которыми сейчас сталкивается Javascript.

Нажмите Clap, если это поможет :)