Typed Array
Autor: Piotr Karpiuk o 12. lipca 2012
Rozwój języka JavaScript podąża za zapotrzebowaniem, czego przejawem jest m.in. Typed Arrays – sposób na efektywne przekazywanie danych binarnych do bibliotek natywnych. Jedynym typem liczbowym w JavaScripcie jest typ zmiennoprzecinkowy, a reprezentacja tablicy bajtów zawsze była mało oszczędna pamięciowo (Array
) lub niewygodna (np. String.rawCodeAt()
). Na nowe typy danych ArrayBuffer
, ArrayBufferView
i DataView
można spojrzeć jak na odpowiedniki tablic i struktur w języku C.
Propozycja nowych rozwiązań wyszła ze strony zespołu pracującego nad WebGL (grafika 3D w przeglądarce), ale szybko znalazły one zastosowanie w takich technologiach przeglądarkowych jak:
- HTML5 Canvas – fragment płótna można przekształcić w natywną tablicę pikseli i działać bezpośrednio na niej,
- Web Audio API, Media Source API – dostęp do danych binarnych audio i wideo,
- XMLHTTPRequest 2, WebSockets – między przeglądarką a serwerem można przesyłać dane binarne,
- WebWorkers – można przekazywać dane binarne (przez referencję!) między wątkami; przynajmniej w Google Chrome,
- File API – można manipulować danymi binarnymi na dysku w systemie plików (w piaskownicy).
Nadeszły zatem czasy, gdy programista JavaScriptu po stronie przeglądarki może wygodnie dobrać się do pliku binarnego MP3 lub JPEG aby wyciągnąć z niego metadane.
Mechanizm, o którym dziś mowa, składa się z dwóch części: bufora (klasa ArrayBuffer
) i perspektywy (ang. view, klasa ArrayBufferView
i pochodne – czyli tablice, oraz DataView
– czyli dostęp swobodny). Bufor jest tablicą bajtów, a perspektywa daje dostęp do niego zapewniając kontekst, jakim jest offset startowy bufora, liczba bajtów, i typ danych komórki. Dla jednego bufora możemy utworzyć dowolnie wiele perspektyw.
Napisany w JavaScript | 2 Komentarzy »