Майбутнє веб-розробки з WebAssembly

4 хв. читання
WebAssembly замінить Javascript?

Багато розробників не перестають ставити це питання з того часу, як WebAssembly (WASM) перетворився із вигадки у реальність. Однак розробники WebAssembly заперечують подібні твердження.

Як було прокоментовано у FAQ на офіційному сайті WASM: «WebAssembly розроблений, щоб бути доповненням, а не заміною JavaScript.»

Майбутнє веб-розробки

WebAssembly може не стати заміною для JavaScript, але, безумовно, змінить підхід до фронтенд розробки. Наразі складно виділити напрямки, в яких відбуватимуться зміни, тому що ми досить далекі від таких припущень. Але вже можна констатувати, що із WebAssembly у майбутньому веб-розробки буде:

  1. Різноманіття мов програмування.
  2. Надзвичайна швидкість.
  3. Паралельність виконання.

Розмаїття мов програмування із WebAssembly

WebAssembly значно урізноманітнить мови програмування, доступні для створення фронтенд застосунків та інструментів. Розробники зможуть створювати застосунки будь-якою зручною для них мовою програмування.

Вже існує список реалізацій, скомпільований для WASM, який підтримує більш ніж 20 різних мов програмування, серед яких найбільш популярні:

Таке розмаїття мов дозволить спеціалістам швидко розвиватися і створювати застосунки зручною для них мовою. Деякі перші розробки — Yew для Rust та Humble для Go (Humble наразі охоплює GopherJS як «compile-to-javascript», але, ймовірно, скоро буде підтримувати серверну частину із WASM).

WebAssembly впроваджує надзвичайно швидкі веб-застосунки

WASM доб'ється досить дивовижного підвищення продуктивності. Firefox демонструє, що, на відміну від JavaScript, WASM можна скомпілювати та виконати із швидкістю передавання сигналу.

Таке скорочення часу на парсинг дозволяє забути про головну проблему сучасних «важких» JavaScript веб-застосунків — час початкового завантаження. У наборі критеріїв, опублікованих Figma (браузерний інструмент проектування), порівнювалися asm.js та WebAssembly, який показав пришвидшення часу завантаження утричі.

Для великих документів завантаження у браузері буде виконуватись за 5 секунд замість звичних 10. І це значне покращення!

Поліпшення, пов'язані із виконанням застосунків, не є настільки вагомими, але помітні. Критерії інтенсивних графічних операцій, що виконувались за допомогою WASM показали до 30% покращення у великих проектах у порівнянні з D3.

Навіть якщо величезна кількість веб-застосунків залишаться вірними JavaScript, бібліотеки та фрейморки, розроблені з WebAssembly, дадуть можливість отримати перевагу у швидкості застосунку.

Доказом можуть слугувати фрейморки, на зразок Ember.js, який досліджує впровадження реалізації WASM для Glimmer VM.

Така тенденція буде продовжуватись і надалі. Уявіть, що JavaScript фреймворки відправляють стартові «fast-boost» послідовності, скомпільовані у WASM. Згодом, вони поступово розширюються за допомогою JavaScript та завантажують ваш JS-застосунок. Як наслідок, складні веб-застосунки завантажуються та досягають інтерактивності із тією ж швидкістю, що і звичайні статичні веб-сайти.

WebAssembly впровадить паралельність виконання

Варто визнати, що, на даний момент, паралелізм ще не повністю реалізовано у WebАssembly.

Перехід до багатоядерних процесорів почався приблизно у 2005 році, тому з того часу програмне забезпечення вимагає паралельності для досягнення більшої продуктивності.

У нещодавній презентації, присвяченій майбутньому браузерів, Лін Кларк (Mozilla) підкреслив, що для браузерів неможливо «непомітно» досягти паралелізму виконання фактичного коду застосунку.

JavaScript створений однопотоковим. Попри те, що деякі нові інструменти, на зразок Web Workers, дозволяють досягти щось на зразок паралелізму у JavaScript, вони залишаються складними у застосуванні і принципах роботи.

Мови, на зразок Rust та Go, з самого початку були багатопоточними, і це спрощує написання паралельних застосунків з їх допомогою. Потоки WebAssembly поки лише в планах, але як тільки вони стануть реальністю, ми зможемо отримати переваги паралелізму веб-застосунків.

Більшість функцій буде реалізовано на рівні фреймворків та бібліотек. Складно уявити середньостатистичного розробника, що використовує потоки WebAssembly у своїх застосунках, але у фреймворків є величезний потенціал. Нова архітектура Fiber в React вивчає можливість розподілення роботи на частини, що можуть оброблятися різними потоками. Уявіть Fiber із можливостями WebAssembly, що розподіляє роботу між усіма доступними ядрами, а потім просто передає JavaScript за необхідністю.

Майбутнє веб-розробки яскраве

Можливості, що впроваджуються WebAssembly і справді вражають. Із вдосконаленням інструментів розробки більшість браузерів отримують перевагу у продуктивності (що демонструє Mozilla). Фреймворки та бібліотеки більшою мірою активно реалізують покращення.

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 1.6K
Приєднався: 1 рік тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід