WebAssembly
- Okunuşu
- vebısembli
Kısaca
WebAssembly, web tarayıcılarında yerele yakın hızda çalışan ve C++, Rust, Go gibi dillerle hızlı web kodu yazılmasını sağlayan kompakt bir ikili kod biçimidir.
WebAssembly nedir?
Genellikle Wasm diye kısaltılan WebAssembly, tarayıcıların JavaScript ile birlikte çalıştırabildiği düşük seviyeli bir komut biçimidir. Geliştiriciler onu nadiren elle yazar; bunun yerine C, C++, Rust, Go veya C# gibi dillerde yazılmış kodu bir .wasm dosyasına derler; tarayıcı da bu dosyayı indirir, doğrular ve hızlı makine koduna dönüştürür.
Wasm, görsel ve video düzenleme, 3D oyunlar, tasarım ve CAD araçları, ses işleme, bilimsel hesaplama ve tarayıcıda yapay zekâ modelleri çalıştırma gibi tek başına JavaScript için fazla ağır işler için tasarlanmıştır. Ayrıca ekiplerin başka dillerde yazılmış mevcut kütüphaneleri JavaScript'e yeniden yazmak yerine web'de yeniden kullanmasını sağlar.
Bir Wasm modülü, sayfaya, ağa ya da dosyalara doğrudan erişimi olmayan bir sandbox içinde çalışır; yalnızca JavaScript'in ona açıkça verdiklerini kullanabilir. JavaScript modülü yükler, dışa aktarılmış fonksiyonlarını çağırır ve DOM'u yönetir; ikisi böylece ortak çalışır. JavaScript'i müşterilerle konuşan yönetici, WebAssembly'yi ise arka odada ağır hesapları yapan uzman olarak düşünebilirsiniz.
Yaygın bir yanılgı, WebAssembly'nin JavaScript'in yerini almak için tasarlandığıdır. O bir tamamlayıcıdır: web arayüzü kodunun çoğu hâlâ JavaScript ya da TypeScript ile yazılır, Wasm ise performansın kritik olduğu kısımları üstlenir. WebAssembly tarayıcıların dışında da, sunucularda, uç (edge) platformlarında ve eklenti sistemlerinde çalışır; orada WebAssembly System Interface (WASI) ona dosyalara ve diğer sistem kaynaklarına kontrollü erişim verir.
Önemli noktalar
- WebAssembly (Wasm), yerele yakın hızda çalışan ikili bir biçimdir.
- C++, Rust ve Go gibi dillerdeki kod Wasm'a derlenebilir.
- Güvenli bir sandbox içinde çalışır ve JavaScript ile birlikte kullanılır.
- Oyunlar, medya düzenleme ve tarayıcı içi yapay zekâ gibi ağır işlere uygundur.
- WASI, Wasm'ın tarayıcı dışında, sunucularda ve uçta çalışmasını sağlar.
Örnek
// Load a compiled module (for example, one written in Rust or C++)
const { instance } = await WebAssembly.instantiateStreaming(
fetch("/math.wasm")
);
// Call a function exported by the module like a normal JS function
const result = instance.exports.add(2, 3);
console.log(result); // 5Sık sorulan sorular
WebAssembly, JavaScript'in yerini alacak mı?
Hayır. WebAssembly, JavaScript'in yerini almak için değil, onunla birlikte çalışmak için tasarlanmıştır. Arayüz işlerinin ve DOM erişiminin çoğunu hâlâ JavaScript üstlenir; Wasm ise hesaplama yoğun kısımları hızlandırır.
WebAssembly, JavaScript'ten hızlı mıdır?
Sayı işleme, görüntü işleme veya fizik gibi işlemci yoğun işlerde WebAssembly genellikle daha hızlı ve daha öngörülebilirdir. Tipik arayüz kodunda ise modern JavaScript motorları zaten hızlıdır ve ikisi arasında veri taşımanın da kendi maliyeti vardır.
WebAssembly DOM'a erişebilir mi?
Doğrudan erişemez. Bir Wasm modülü yalnızca JavaScript'in kendisine sağladığı fonksiyonları çağırabilir; bu yüzden DOM güncellemeleri, çoğu zaman derleyici araç zinciri tarafından üretilen yapıştırma koduyla JavaScript üzerinden yapılır.
İlgili sayfalar
- JavaScriptWeb Geliştirme, s. 25JavaScript, web tarayıcılarında sayfaları etkileşimli hale getiren ve Node.js gibi çalışma ortamlarıyla sunucularda da çalışan programlama dilidir.
- DerleyiciProgramlamanın Temelleri, s. 12Derleyici, bir programlama dilinde yazılmış kaynak kodu, bilgisayarın çalıştırabileceği makine kodu gibi daha alt seviyeli bir biçime çeviren programdır.
- DOMWeb Geliştirme, s. 14DOM, tarayıcının bir web sayfasını temsil eden ve JavaScript'in okuyup değiştirerek kullanıcının gördüğünü güncelleyebildiği bellek içi nesne ağacıdır.
- TypeScriptWeb Geliştirme, s. 51TypeScript, JavaScript üzerine statik tipler ekleyerek birçok hatayı kod çalışmadan yakalayan ve düz JavaScript'e derlenen bir programlama dilidir.
- ServerlessDevOps ve Bulut, s. 46Serverless, sağlayıcının kodu talep üzerine çalıştırıp sunucuları yönettiği, otomatik ölçeklediği ve yalnızca gerçek kullanıma ücret aldığı bulut modelidir.
- JIT derlemeProgramlamanın Temelleri, s. 30JIT derleme, programın en sık çalışan kısımlarını çalışma anında makine koduna çevirerek yorumlayıcının hızlı açılışını derlenmiş kodun hızıyla birleştirir.
- Web WorkerWeb Geliştirme, s. 58Web worker, JavaScript'i bir arka plan iş parçacığında çalıştıran tarayıcı özelliğidir; böylece ağır hesaplamalar çalışırken sayfanın arayüzü donmaz.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin