r   e   k   l   a   m   a
r   e   k   l   a   m   a

WebAssembly: producenci przeglądarek wspólnie pracują nad zastąpieniem JavaScriptu kodem bajtowym

Strona główna AktualnościOPROGRAMOWANIE

Próby zastąpienia JavaScriptu przez coś lepszego składniowo i wydajniejszego spełzły na niczym – wynalazek Brendona Eicha jest wciąż jedynym językiem zrozumiałym dla przeglądarek internetowych. Zaczęto więc ulepszać sam JavaScript i silniki skryptowe przeglądarek, uzyskując czasem naprawdę niezłe efekty. Asm.js Mozilli pozwala na uzyskanie wydajności, którą można już zacząć porównywać do wydajności natywnego kodu. Pytania o to, czy na tym jednak koniec, czy nie da się kwestii programowania aplikacji webowych zrobić lepiej, wcale nie ustały.

Jakby bowiem JavaScriptu nie ulepszać, wciąż przypomina to nieco malowanie szminką świni. Główne zalety tego języka, czyli niezależność od architektury sprzętowej i uruchamianie kodu w izolowanym środowisku przeglądarki, bez dostępu do interfejsów systemu operacyjnego nie są w stanie przeważyć wad, jakimi są duży narzut wynikający z konieczności każdorazowej interpretacji tekstowego ciągu znaków, nieprzemyślana składnia języka, duże problemy z systemem typów zmiennych i obiektami, czy osobliwa składnia wyrażeń regularnych, wyglądająca jakby pochodziła z Perla. Jest tak tym bardziej, że zalety JavaScriptu można dostarczyć bez jego wad, jak to się dzieje w środowiskach uruchomieniowych dla kodu bajtowego, takich jak .NET czy Java.

Czytelnicy oczywiście pamiętają próby wprowadzenia Javy czy C# do przeglądarek – niesławne wtyczki Oracle'a i Microsoftu pozwalały na uruchamianie kodu bajtowego w kontekście strony internetowej. Rozwiązanie to miało jednak swoje wady, nie pozwalało na modyfikowanie obiektów HTML, tak naprawdę uruchamialiśmy aplikację nie mającą ze stroną internetową nic wspólnego. Trochę lepszym podejściem okazał się Portable NativeClient Google'a, pozwalający uruchamiać kod bajtowy w bezpiecznej piaskownicy i poprzez interfejs przeglądarki modyfikować zawartość obiektowego modelu dokumentu HTML – nigdzie jednak poza Chrome nie znalazł on zastosowania.

r   e   k   l   a   m   a

Szansa na wydajny kod bajtowy w przeglądarce pojawia się jednak na nowo. „W przeglądarce” nie jest najlepszym określeniem, należałoby napisać „w przeglądarkach”, gdyż w ramach grupy projektowej W3C nad rozwiązaniem o nazwie Web Assembly (wasm) pracują przedstawiciele czołowych producentów przeglądarek. Wasm ma być łatwym w przenoszeniu kodem bajtowym, znacznie efektywniejszym w kompilacji niż asm.js, nie mówiąc już o „gołym” JavaScripcie. W przeciwieństwie do JavaScriptu oferuje normalne typy danych. Ma też być łatwy w rozszerzaniu, tak by objąć dodatkowe, specjalizowane instrukcje procesora.

Najważniejsze jest jednak to, że kod wasm będzie dostępny w dwoistej postaci. Binarna reprezentacja dla kompilatora oraz odpowiadająca jej forma tekstowa, dla programisty i debuggera. Wykorzystanie binarnej reprezentacji przynosi ogromne korzyści – jej dekodowanie ma być nawet 23 razy szybsze od odpowiadającej formy tekstowej (kodu asm.js), a skompresowany rozmiar o 20-30% mniejszy.

Żadna ze współczesnych przeglądarek nie uruchomi oczywiście kodu wasm. Na implementację w stabilnych wersjach w tym roku nie ma raczej co liczyć. Do tego czasu kod bajtowy będzie uruchamiany dzięki działającej w przeglądarce warstwie wypełniającej (polyfill), czyli skryptowi w JavaScripcie, który przekształci kod wasm do kodu zgodnego z podzbiorem JavaScriptu asm.js. Z pierwszych eksperymentów wynika, że nawet taka niebezpośrednia metoda jest wydajniejsza, niż uruchamianie czystego kodu JavaScriptu w przeglądarce.

Zanim ukończona zostanie finalna wersja Web Assembly, minie jeszcze sporo czasu. Prace możemy obserwować na GitHubie, jest tam już dostępna dokumentacja, w tym założenia projektowe, prototypy narzędzi, biblioteki polyfill – wszystko, czego potrzeba na start. Najważniejsze, że jest tu jednak duch współpracy między wiodącymi producentami przeglądarek. O swoim zaangażowaniu poinformowali ludzie z Mozilli, Google, Microsoftu, a nawet Apple. Dzięki takiemu postawieniu sprawy możemy liczyć, że aplikacje webowe pod względem wydajności wejdą na poziom do tej pory nieosiągalny – i co najważniejsze, będą działały w każdej nowoczesnej przeglądarce, bez konieczności korzystania z wtyczek.

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.