WebAssembly: Webin Geleceği
Apple, Google, Microsoft ve Mozilla ortak bir neden için bir araya geldiler. Birbirine rakip olan bu firmalar WebAssembly adındaki yeni bir programlama standardı konusunda anlaştılar. Konunun içeriğine bakmadan dahi böylesi bir işbirliğinden yola çıkarak da şunu çok rahat söyleyebiliriz; WebAssembly web’de büyük değişikliklere yol açacak ve WebAssembly’den sonra bambaşka bir web dünyası olacak!
WebAssembly Nedir?
WebAssembly, web için genel bir binary ve yazı formatıdır. Kısace wasm olarak adlandırılan WebAssembly, JavaScript’ten daha alt seviyeye sahip bir binary formata sahiptir.
JavaScript’e Göre Avantajı Nedir?
WebAssembly’nin binary halindeki verisi boyut olarak daha küçüktür. Böylece binary veri, internet üzerinden hızlı bir şekilde indirilebilir. Binary formata sahip olduğu için (halihazırda derlenmiş halde olduğundan dolayı), JavaScript’ten daha hızlı bir şekilde kodun çözümlenmesi ve işleyişi gerçekleştirilir.
Performansı, Mozilla ekibi tarafından da kanıtlandı. Ekip son zamanlarda, wasm performansı ile ilgili birkaç analiz raporu yayınladılar. Yayınlanan rapora göre, ekibin mevcut verilerinin wasm tarafından derlenmiş hali 20-30% daha küçük ve kodun tarayıcı tarafından 23 kat daha hızlı bir şekilde yorunlanması gerçekleşti.
WebAssembly’nin son zamanlarda yükselişe geçmesinin nedeni, internet tarayıcısı piyasasındaki 4 büyük firmanın tek bir terim altında toplanmasıydı. Bu olay, WebAssembly’nin hayata geçirilmesi hakkında akıllarda hiçbir soru işareti kalmamasını sağladı.
WebAssembly binary formatı, yakında standartlaştığı zaman, herhangi bir programlama dili ile derlenen binary veri, wasm standartları tarafından anlaşılabilir hale gelecektir. Wasm ekibi tarafıdan, ilk versiyon olarak C ve C++ dillerini temel alınmıştır. Diğer diller için de zamanla gerçekleştirim sağlanacaktır.
Wasm ekibi şimdiden projeyi GitHub’a (https://github.com/WebAssembly) koymuş durumdalar ve wasm’in tasarımı hakkında çalışıyorlar. Siz de w3 topluluğuna (https://www.w3.org/community/webassembly/) katılabilir, wasm hakkındaki tartışmalarda yer alabilirsiniz.
WASM ile İlgili Diğer Girişimler
Birkaç yıldır Google, Apple ve Mozilla aynı alan üzerinde farklı amaçlar doğrultusunda çalıştılar. Google, PNaCl (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 kayda değer bir girişim olmadı.
Bu firmalar, yukarıdaki girişimlerinden farklı deneyimler elde ettiler. Hepsi biraraya 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ı yüksek ihtimal olarak görünüyor.
JavaScript’in Sonu Geldi mi?
Her web geliştiricinin bildiği gibi JavaScript, web için vazgeçilmez bir programlama dili. JavaScript ekosistemi oldukça geniş ve daha ES7 ile 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 olarak görülüyor.
Wasm, kesinlikle JavaScript’ten birçok şeyi miras alacak. Bunlardan bazıları görüntü işleme ve tarayıcıda bellek kullanımı hakkında olacak. Wasm ekibine göre, bütün bir web uygulamasını wasm ile gerçekleştirebileceğiz. Web uygulamasının client tarafını C#, Java gibi programlama dilleri ile gerçekleştirildiğinde, JavaScript öğrenmeye artık gerek kalmayabilir.
Fakat wasm topluluğunun belirttiğine göre, JavaScript’e bir tehdit olmaktan ziyade wasm, JavaScript’i geliştirecek adımlar atacaktır. Bu adımlar ne olursa olsun, birer web programcısı ve kullanıcısı olarak bizi güzel zamanlar bekliyor diyebiliriz.
2 Comments
emre erkan
11 Mayıs 2017 at 01:56Hocam iyi hoşta WebCL gibi güzide teknolojiyi hala hayata geçirebilmiş değiller.
Zafer Ayan
14 Mayıs 2017 at 23:52Emre merhaba,
WebCL’in doğası gereği farklı dağıtık amaçlar için kullanılabilmesinden dolayı bellek yönetimi gibi alanlardaki güvenlik konularında sorun yaşaması ve ilgili hardware desteği sıkıntıları olduğundan dolayı ilerlemeyen bir proje haline geldi. Onun yerine görüntü işlemek için WebGL kullanılıyor. Dağıtık işlemler yapmak istiyorsan da dağıtık sunucularda Apache Spark kullanabilirsin.