🕸 Что не так с веб-сборкой?
Ее потенциал и перспективы огромны. Что же пошло не так? Почему не все используют WASM? Попробуем ответить на эти вопросы.
Перевод публикуется с сокращениями, автор оригинальной статьи Fernando Doglio.
Современные браузеры способны на гораздо большее, чем просто визуализировать веб-страницы. В попытке вывести выполнение тяжелых задач на новый уровень был создан мост между JavaScript и машинным кодом – это одна из причин, по которой появился WebAssembly.
Теоретически, эта новая технология позволит любому создавать машинный код для запуска в виртуальной и безопасной песочнице браузера. WASM (аббревиатура WebAssembly) позволяет серверному коду (например, на C или C++) компилироваться и выполняться внутри браузера.
Какой смысл в WASM?
WASM обеспечивает высокооптимизированные вычисления в вебе, а также возможность сломать монополию, которую в настоящее время удерживает JS в этой среде. Хотя JavaScript – отличный язык, он не был разработан для создания высокопроизводительных приложений. И если позволить другим языкам применяться вместе с JS, можно получить двойную выгоду.
Варианты использования
WASM предназначался для использования в браузерах и серверных средах, вроде Node.js в следующих направлениях:
- редактирование видео;
- геймдэв;
- AR/VR приложения;
- редактирование и стриминг музыки;
- эмуляция;
- шифрование;
- VPN, распознавание изображений и т. д.
Кто и для чего его использует?
Чтобы изучить список использующих WASM открытых проектов, вы можете посетить сайт сообщества. Приведем некоторые их них:
- Unity. Этот игровой движок способен экспортировать проекты для веб-совместимости, а с 2018 года этот процесс осуществляется путем компиляции в WebAssembly. Теперь разработчикам игр не нужно беспокоиться о том, чтобы писать для веба, а только о создании игрового кода – об остальном позаботится WASM.
- Tensorflow.js. Одна из основных библиотек, которая принесла AI и ML разработчикам JS, добавила поддержку WASM-backend, и с тех пор ее создатели работают над реализацией все большего количества моделей. В чем выгода? Авторы увидели примерно десятикратное улучшение производительности своих моделей по сравнению с чистым JS.
- Web-AutoCAD. Софт был частично портирован с использованием старого кода на основе C++, скомпилированного в WASM. Это важный шаг в демонстрации мощи и потенциала WASM, когда речь заходит о повторном использовании кода, написанного для совершенно другой платформы, на несовместимом с браузером языке.
- Google Earth. Этот продукт существует более 15 лет и раньше был доступен только для настольных машин. Благодаря WASM часть старого кода скомпилировали и перенесли в веб.
- Blazor. Особенностью фреймворка ASP.NET является возможность создавать интерактивные UI, работающие непосредственно в браузере. Благодаря магии веб-сборки и кода .NET, вы получаете в веб-интерфейсе все преимущества написанной на C# серверной части.
- Yew. Теперь, благодаря Yew вы можете использовать Rust для веб-приложений, а также использовать Rust для UI и многопоточную среду для работы. Этот проект еще не готов к продакшену, но если вы поклонник Rust и хотите помочь, сообщество будет только за.
В списке есть еще более 100 проектов, но вышеописанные имена, тем более с корнями в Microsoft, Unity и Google – признак высокого потенциала технологии.
Почему технология не стала популярной?
Ответ: плохой маркетинг.
Если рассмотреть разнообразие различных проектов, которые не смогли добиться успеха, становится ясно, что причина в отсутствии необходимой связи с целевой аудиторией. Нечто подобное происходит и с WASM. Знают ли об этом разработчики?
Ключевая проблема – WASM не предназначен для веб-разработчиков, он предназначен для всех, кто хочет перейти в веб. Веб-разработчикам не нужен WASM, они успешно используют JS. Учитывая, сколько необходимо приложить усилий для создания «Hello world» в WASM, становится ясно, почему программисты не смотрят в его сторону.
Бытует обоснованное мнение: если приложение включает в себя интенсивные вычисления, оно должно быть нативным. Это относится к геймдэву, VR/AR, виртуальным машинам и к большинству предполагаемых вариантов использования WASM. Как мы все знаем, попытка нарушить устои требует больших усилий, и как результат – компании не заинтересованы в этом.
Заключение
WASM предстоит пройти долгий путь, прежде чем его можно будет легко использовать в веб-проектах, не говоря уже о том, чтобы он стал единственным поставщиком логики для приложений. Следует помнить, что WASM не предназначен непосредственно для веб-разработки – он скорее нужен, чтобы писать на C, Go или другом языке работающую в браузере логику. WASM не заменит JavaScript, а будет продолжать наращивать аудиторию благодаря тенденции перехода вычислений в облака.
WebAssembly успешно преодолевает разрыв между вебом и любой платформой, которая в него интегрируется. Впереди еще много работы, но преимущества уже видны, и тот факт, что 4 основных браузера уже поддерживают данный инструмент, это подтверждает.
Превратится ли WASM в основную технологию веб-разработки, станет ли он массивной платформой, и будет ли использоваться в качестве стандарта для большинства языков программирования или идея провалится – решать нам с вами, разработчикам и крупным компаниям сообща.
Дополнительный материал:
- 8 отличных инструментов для веб-разработчиков
- Как стать веб-разработчиком в 2021 году
- 10 советов начинающему веб-разработчику
- Практическое руководство для обучения веб-программированию
- 8 самых распространенных ошибок веб-разработчика