Wspólna sieciowa inicjatywa Mozilli, Google'a i Microsoftu, na której skorzystają użytkownicy przeglądarek!
Co mają wspólnego ze sobą firmy Microsoft, Google i Mozilla? Pewnie wiele rzeczy, ale są również producentami najpopularniejszych na rynku przeglądarek internetowych. W związku z tym na co dzień ze sobą konkurują, i rzadko się zdarza, aby nad czymś w kwestii przeglądarek współpracowali. Tym razem jednak jest inaczej: te trzy firmy, współpracując z inżynierami z projektu WebKit, ogłosiły, że chcą razem wprowadzić jeden wspólny standard binarnych plików wykonywalnych w sieci WWW.
Standard ten, o nazwie WebAssembly, zyska sobie wsparcie we wszystkich wiodących przeglądarkach. Tak ogłosiły wczoraj prawie równocześnie wszystkie trzy firmy za pośrednictwem blogów i stron inżynierów pracujących nad Firefoksem, Chromem oraz Edgem - przeglądarką, która zastąpi Internet Explorera.
Co motywowało tak duże firmy do wspólnego działania?
Nie sposób nie zauważyć, że coraz więcej złożonych algorytmów, wymagających coraz większej mocy obliczeniowej, wykonywana jest po stronie klienta (przeglądarki) WWW. Większość implementacji tych algorytmów napisanych jest w JavaScripcie - jest to z perspektywy czasu dość niefortunne, ale taki jest de facto standard w sieci. Niefortunność tego standardu wynika z podstawowych cech języka JavaScript - jest to prosty język interpretowany, a fragmenty w nim napisane przesyłane są w sieci jako tekst. Nic dziwnego, że powstało nad jego podstawową implementacją mnóstwo frameworków i bibliotek, mających wspomóc programistów.
Istnieją również inne próby usprawnienia JavaScript. Projekty takie jak TypeScript od Microsoftu (który wzbogaca JS o statyczne typowanie i programowanie obiektowe), czy na przykład asm.js od Mozilli (będący próbą zwiększenia wydajności języka i jego maksymalnej optymalizacji) to próby obejścia ograniczeń języka i jego środowiska uruchomieniowego.
Czym w takim razie jest WebAssembly?
Jest to próba stworzenia otwartego standardu umożliwiającego kompilację fragmentów programów do formy binarnej, które następnie będą wykonywane przez przeglądarkę w silniku JavaScript. Silnik nie musi parsować całego tekstu programu, jak to ma miejsce w przypadku zwykłego kodu JS. WebAssembly, gdy wszystkie przeglądarki będą go wspierać, zapewni możliwość pisania fragmentów programów (np. bibliotek udostępniających obliczenia) w językach innych niż JS: początkowo jest to C oraz C++, natomiast w planach są C#, Go i kolejne języki. Już w prototypie uzyskano o wiele większą prędkość transferu i dekodowania - do 23 razy.
Nie jest to pierwsza tego typu inicjatywa na rynku. Podobne założenia miało na przykład wspomniane już asm.js oraz Googlowy Native Client. Po raz pierwszy jednak udało się zebrać tak duże poparcie producentów przeglądarek.
Co to dla oznacza dla użytkowników sieci?
Aplikacje których coraz częściej używamy za pośrednictwem sieci Web staną się szybsze, bardziej responsywne, będą lepiej wykorzystywać zasoby komputera, jak również będą bezpieczniejsze. Plik tekstowy o wiele łatwiej zmanipulować gdzieś po drodze pomiędzy serwerem a przeglądarką - a rozwiązania typu WebAssembly mają wbudowane odpowiednie zabezpieczenia typu podpisywanie pliku binarnego. Jest to zmiana na lepsze, i dobrze widzieć że wielkie firmy potrafią się porozumieć ponad podziałami.
* Ilustracja pochodzi z Shutterstock.