WebAssembly, web sayfalarında C/C++ /Rust gibi yüksek seviyeli dillerin derlenebilmesi, çalıştırılabilmesi ve taşınabilmesini sağlayan bir proje olarak ortaya çıkmıştır.

Bu proje 2015 yılında Apple, Google, Microsoft ve Mozilla gibi birbirlerine rakip teknoloji firmalarının bir web programlama standardı konusunda bir araya gelerek WebAssembly Community Group adı altında birleşmeleriyle başladı.

Bu proje flash player, unity player, Silverlight gibi eklentilerin HTML5 ile birlikte artık tarayıcılar tarafından desteklenmeyeceğinin duyrulmasından sonra alternatif olarak ortaya çıkmıştır. WebAssembly projesi sayesinde ile artık tarayıcıların herhangi bir eklenti kurmaksızın yüksek performans gerektiren işlemlerin gerçekleştirilmesi sağlanması hedeflenmektedir.

Javascript 1995 yılında Brendan Eich tarafından on günde geliştirildiğinden beri oldukça çok yol katetti ve bugün sekizinci versiyonu olan EcmaScript 2017 artık duyuruldu. JavaScript çok yetenekli dynamic-type bir dil ve dilin başlangıç seviyesinden bugüne kadar geliştiği süre içerisinde bir çok iyi tarafları olduğu gibi bir çok da kötü tarafı olduğunu söyleyenlerde var. Bu kötü taraflarını düzeltmek için  yıllar içerisinde de bir çok JavaScript Compile dil yazıldı. Bunların başını ise CoffeScript, TypeScript, Dart gibi projeler çekmektedir.

Bunun yanında tarayıcı üreticileri de zaman içerisinde kendi JavaScript Engine geliştirerek bu dili daha hızlı çalıştırmak için projeler geliştirdi. Bunların en meşhurları ise Google V8, Microsoft Chakra, Mozilla SpiderMonkey’dir.

Bu noktada JavaScript dynamic-type bir dil olduğunu söyledik. Fakat Static-type dillere göre de belli bir sınıra kadar optimize edilmektedir. Özellikle yüksek performans gerektiren 3D, VR (Virtual Reality), AR (Augmented Reality) gibi işlemlerde performans ciddi bir ihtiyaç konusu oluyor. İşte bu noktada hem tarayıcı eklentisi gerektirmeyen, taşınması kolay, hemde performans konusunda ihtiyacımızı karşılayacak bir teknoloji olarak karşımıza WebAssembly projesi çıkmaktadır. Buna benzer bir durum da mobile dünyada performans gerektiren durumlarda da karşımıza çıkıyor. Mobile dünyada (Android) ise NDK (Native Development Kit) projesi ile bu durum aşılıyor, yani NDK ile  C/C++ kullanarak uygulama geliştiriliyorsunuz. Burada C/C++ dillerinin tercih edilmesinin sebebi de tabi ki de performanstır.

WebAssembly’nin binary haldeki verisi (kısaca wasm olarak adlandırılır) boyut olarak da küçüktür. Böylece bu binary veri, Internet üzerinden de hızlı bir şekilde indirilebilir. Binary formata sahip olduğu için de JavaScript daha hızlı bir şekilde kodu çözümlenmesi işleyişini gerçekleştirecektir.

WebAssembly ile ilgili yapılmış demolar için aşağıdaki adrese bakabilirsiniz.

https://webassembly.org/demo/

WASM ile İlgili Diğer Gelişmeler ve Girişimler

Son yıllarda Google üzerinde farklı amaçlar doğrultusunda çalıştılar. Google, PNaCI (Portable Native Client) üzerinde çalıştı. Apple ise FLT LLV üzerinde, Mozilla da asm.js üzerinde çalışmalarını sürdürdüler. Microsoft tarafından ise şu ana kadar herhangi bir kayda değer bir girişim olmadı.

Bu firmalar, yukarıdaki girişimlerinden farklı deneyimler elde ettiler. Hepsi bir araya gelince, edindikleri bilgiyi ve deneyimleri WebAssembly üzerine uyguladılar. Bu yüzden, WebAssembly bulunduğumuz çağda, web programlama alanında büyük bir etki yaratması ihtimal dahilinde görülüyor.

JavaScript’in Sonu Geldi mi?

Her web gelişticinin bildiği gibi JavaScript, web için vazgeçilmez bir progralama dilidir. JavaScript ekosistem oldukça geniş ve daha ES7 ve Es8 sürümleri için bir çok yeni geliştirme planlanmış durumda. WebAssembly şu anda geliştirim sürecinde olduğu için, belirli bir kullanıcı kitlesi yakalaması zaman alabilir olabilir görünüyor.

Wasm topluluğunun belirttiğine göre, JavaScript ile geliştirilecek adımlar atılacaktır. Bu adımlar ne olursa olsun, birer web programcısı ve kullanıcısı olarak bizi güzel zamanlar bekliyor diyebiliriz.

WebAssembly Çalışma Sırası Kısaca Şu Şekildedir

Kaynaklar

https://developer.mozilla.org

https://webassembly.org

http://devnot.com

0 cevaplar

Cevapla

Want to join the discussion?
Feel free to contribute!

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir