На протяжении более двух десятилетий JavaScript был единственным языком программирования, который мог работать в браузерах. Другие языки, такие как Python, C++ и Go, в основном предназначались для создания серверной части веб-приложений и сервисов.
JavaScript показал себя довольно хорошо, но многие другие языки программирования работают быстрее. Есть много преимуществ, которыми могут воспользоваться веб-приложения, запуская другие, более производительные языки программирования непосредственно в браузере.
WebAssembly предлагает эффективный, открытый и безопасный вариант, являющийся частью открытой веб-платформы. Вы можете использовать его для создания приложений, которые работают в браузерах, на серверах и в других средах.
Знакомство с WebAssembly
WebAssembly (WASM) — это эффективный низкоуровневый переносимый язык, стандартизированный W3C. Он определяет формат кода и интерфейсы для программ, взаимодействующих с платформами в Интернете.
Вы можете скомпилировать большинство языков программирования в формат двоичного кода WebAssembly. Браузеры могут интерпретировать и запускать полученный код WASM так же, как и обычный JavaScript. Вы также можете запускать WebAssembly вместе с кодом JavaScript для повышения производительности приложения и совместимости между ними.
WebAssembly стал стандартом W3C в 2019 году с поддержкой многих языков программирования. В соответствии с Сделано с помощью WebAssembly, уже есть много популярных проектов, которые используют WebAssembly для доставки быстрого и безопасного программного обеспечения своим пользователям.
Многие языки программирования, в том числе специфичные для сервера, поддерживают WebAssembly. К ним относятся Rust, Go, Python, C++, TypeScript, Java, PHP и Ruby. Проверьте ресурс awesome-wasm-langs чтобы узнать о поддерживаемых WebAssembly языках и пакетах, которые вы можете с ними использовать.
Вот пример Программа WebAssembly от Tutorials Point который возвращает максимум два целых числа:
Синтаксис WebAssembly относительно многословен по сравнению с JavaScript, но это не должно быть проблемой. Вам не нужно будет изучать синтаксис, поскольку WebAssembly будет целью компиляции для программ, которые вы пишете на предпочитаемом вами языке.
Как работает WebAssembly
WASM существует как цель компиляции для других языков программирования. Вы можете написать в твой любимый язык программирования и скомпилируйте исходный код в байт-код WASM, который запускается на клиенте. Преобразование его в собственный машинный код означает, что он может работать на высокой скорости, обычно быстрее, чем JavaScript.
Одной из важнейших особенностей WASM является совместимость с JavaScript. Вы можете импортировать модули WASM в веб-приложение и предоставлять функции WASM для использования в коде JavaScript. Фреймворки JavaScript могут использовать преимущества WASM для повышения производительности.
WASM использует изолированную модель выполнения, аналогичную JavaScript. WASM взаимодействует с хост-компьютером с помощью ABI (бинарного интерфейса приложения), такого как Системный интерфейс WebAssembly который обеспечивает доступ к ресурсам и другим системным службам в соответствии с требованиями программы.
Многие современные браузеры поддерживают WASM, включая Chrome, Microsoft Edge, Mozilla Firefox, Opera и Safari. Такие языки, как Go и Поддержка ржавчины WASM из коробки.
Зачем Интернету нужна WebAssembly
JavaScript имеет ограниченную функциональность по дизайну. Это не один из самые быстрые или самые производительные языки так как он начинался как язык сценариев для Интернета. Хотя существует множество сред выполнения, в которых JavaScript работает с разной скоростью, существуют более быстрые и высокопроизводительные языки, которые WebAssembly может использовать в Интернете для таких сценариев использования, как игры, видео и музыка.
WebAssembly также предлагает большую переносимость и гибкость для языков, которые не работают в Интернете. Внедрение большего количества языков в Интернет (наиболее популярная платформа с открытым исходным кодом) должно привести к общему улучшению опыта.
Внедрение WebAssembly идет быстрыми темпами
Многие компании и разработчики создают приложения с помощью WebAssembly. Google, Dropbox и Cloudflare активно используют WebAssembly в некоторых своих приложениях.
WebAssembly популярен среди разработчиков Python, C++ и Rust. Разработчики Python обычно используют Pyoidide и PyScript, разработчики C++ — Emscripten, а разработчики Rust — Percy, Yew, Sycamore, MoonZoon и фреймворк Seed.