Przez ponad dwie dekady JavaScript był jedynym językiem programowania, który mógł działać w przeglądarkach. Inne języki, takie jak Python, C++ i Go, służyły głównie do tworzenia aplikacji i usług internetowych po stronie serwera.
JavaScript radził sobie całkiem nieźle, ale wiele innych języków programowania jest szybszych. Istnieje wiele korzyści, z których aplikacje internetowe mogą korzystać, uruchamiając inne, bardziej wydajne języki programowania bezpośrednio w przeglądarce.
WebAssembly oferuje wydajną, otwartą i bezpieczną opcję, która jest częścią otwartej platformy internetowej. Można go używać do tworzenia aplikacji działających w przeglądarkach, na serwerach iw innych środowiskach.
Przedstawiamy WebAssembly
WebAssembly (WASM) to wydajny, przenośny język niskiego poziomu, zgodny ze standardami W3C. Definiuje format kodu i interfejsy dla programów do interakcji z platformami w sieci.
Większość języków programowania można skompilować do formatu kodu binarnego WebAssembly. Przeglądarki mogą interpretować i uruchamiać wynikowy kod WASM tak samo, jak zwykły JavaScript. Możesz także uruchomić WebAssembly wraz z kodem JavaScript, aby uzyskać wyższą wydajność aplikacji i interoperacyjność między nimi.
WebAssembly stał się standardem W3C w 2019 roku, z obsługą wielu języków programowania. Według Wykonane za pomocą WebAssembly, istnieje już wiele popularnych projektów wykorzystujących WebAssembly do dostarczania użytkownikom szybkiego, bezpiecznego oprogramowania.
Wiele języków programowania, w tym te, które są specyficzne dla serwera, obsługuje WebAssembly. Należą do nich Rust, Go, Python, C++, TypeScript, Java, PHP i Ruby. Sprawdź zasób awesome-wasm-langs aby dowiedzieć się o językach obsługiwanych przez WebAssembly i pakietach, których możesz z nimi używać.
Oto przykład Program WebAssembly firmy Tutorials Point zwraca maksymalnie dwie liczby całkowite:
Składnia WebAssembly jest stosunkowo rozwlekła w porównaniu z JavaScriptem, ale nie powinno to stanowić problemu. Nie musisz uczyć się składni, ponieważ WebAssembly będzie celem kompilacji dla programów, które piszesz w preferowanym języku.
Jak działa WebAssembly
WASM istnieje jako cel kompilacji dla innych języków programowania, do których można je transponować. Możesz wpisać Twój ulubiony język programowania i skompiluj kod źródłowy do kodu bajtowego WASM, który działa na kliencie. Przetłumaczenie go na natywny kod maszynowy oznacza, że może działać z dużą szybkością, zwykle szybszą niż JavaScript.
Jedną z krytycznych cech WASM jest interoperacyjność JavaScript. Możesz zaimportować moduły WASM do aplikacji internetowej i udostępnić funkcje WASM do użycia w kodzie JavaScript. Frameworki JavaScript mogą korzystać z WASM w celu zwiększenia wydajności.
WASM używa modelu wykonywania w piaskownicy, podobnego do JavaScript. WASM współdziała z maszyną hosta za pomocą ABI (Application Binary Interface), takich jak Interfejs systemu WebAssembly który zapewnia dostęp do zasobów i innych usług systemowych w oparciu o wymagania programu.
Wiele nowoczesnych przeglądarek obsługuje WASM, w tym Chrome, Microsoft Edge, Mozilla Firefox, Opera i Safari. Języki takie jak Go i Wsparcie rdzy WASM po wyjęciu z pudełka.
Dlaczego sieć potrzebuje WebAssembly
JavaScript ma ograniczoną funkcjonalność z założenia. To nie jest jeden z najszybszych lub najbardziej wydajnych językach ponieważ zaczął jako język skryptowy dla sieci. Chociaż istnieje wiele środowisk wykonawczych, w których JavaScript działa z różnymi prędkościami, jest ich znacznie więcej i są szybsze wydajnych języków, które WebAssembly może przenieść do sieci w takich przypadkach, jak gry, filmy i muzyka.
WebAssembly oferuje również większą przenośność i elastyczność dla języków, które nie działają w sieci. Wprowadzenie większej liczby języków do sieci (najbardziej popularnej platformy typu open source) powinno skutkować ogólną poprawą doświadczenia.
Adopcja WebAssembly jest szybka
Wiele firm i programistów buduje aplikacje za pomocą WebAssembly. Google, Dropbox i Cloudflare aktywnie używają WebAssembly w niektórych swoich aplikacjach.
WebAssembly jest popularny wśród programistów Python, C++ i Rust. Programiści Pythona często używają Pyoidide i PyScript, programistów C++ oraz programistów Emscripten i Rust z platformą Percy, Yew, Sycamore, MoonZoon i Seed.