• Anasayfa
  • Eğitimler
    • JavaScript Eğitimi
    • Angular 2 Eğitimi
    • React.js Eğitimi
    • Java 8 Eğitimi
    • Java EE 7 Eğitimi
    • Spring Framework Eğitimi
    • Git Eğitimi
  • Online Eğitimler
    • Online React.js Eğitimi
    • Online Angular 2 Eğitimi
    • Online Spring Boot Eğitimi
  • Referanslar
  • Hakkında
  • İletişim
KodEduKodEdu
  • Anasayfa
  • Eğitimler
    • JavaScript Eğitimi
    • Angular 2 Eğitimi
    • React.js Eğitimi
    • Java 8 Eğitimi
    • Java EE 7 Eğitimi
    • Spring Framework Eğitimi
    • Git Eğitimi
  • Online Eğitimler
    • Online React.js Eğitimi
    • Online Angular 2 Eğitimi
    • Online Spring Boot Eğitimi
  • Referanslar
  • Hakkında
  • İletişim

WebAssembly, Büyük Web ve JavaScript’in Geleceği

  • Posted by Rahman Usta
  • Categories Genel, Uncategorized, Yazılar
  • Date 2 Şubat 2016

WebAssembly web tarayıcıların çalıştırabilmesi için ortak, düşük seviyeli bir yazılım dili, insan gözüyle anlaşılabilir bir düz yazı biçimi ve sanal makinelerin anlayacağı bir ikili kod biçimi ortaya koymaktadır. Düşük seviyeli bir programlama dili olan WebAssembly, Google, Microsoft ve Mozilla vakfı tarafından WebAssembly Community Group altında desteklenmekte ve dizayn edilmektedir. Halihazırda sadece JavaScript dilinden anlayan Web tarayıcılar, ileride yeni bir dil olan WebAssembly’yi de anlayacaklar! Web için gizli bir devrimin inşa edildiği bu projeden bilgim ölçüsünde bilgiler vermek istiyorum.

WebAssemby (WASM) standartlaştırma süreci devam eden bir ara programlama dilidir. (Bkz. Intermediate Languages). WebAssemby söz dizimi diğer düşük seviyeli dillere benziyor. Assembly veya Java’nın bayt kodu gibi.

JavaScript standartları olan ve şu anda web tarayıcılarda baskın olan bir programlama dili. WebAssembly Web tarayıcıların anlayacağı bir dil olacak fakat WebAssembly kodlarını doğrudan yazmayacağız, kendi kodumuzu ona derleyeceğiz! Tabi ki istersek yazabiliriz ama asıl olarak WebAssembly, JavaScript haricindeki yazılım dilleri için bir dönüşüm dili olmayı hedefliyor. Yani, herhangi bir yazılım dilindeki kodları WebAssembly’e derlediğimizde dil bağımsız bir Web ortaya çıkmış olacak. İsteyen istediği bir yazılım dili ile Web uygulaması geliştirebilecek!

JavaScript’in Web tarayıcılarda çalışabilir tek dil olmasından dolayı diğer diller sadece ara kaynak çözümlerle Web tarayıcılarda yer almaya çalışmaktadır. Scala.js, Ruby için Opal ve Java için Google GWT teknolojileri bunlara iyi örneklerden. Bu örneklerde x bir dilde yazılan kodlar JavaScript karşılığına dönüştürülerek Web tarayıcılarda dolaylı yoldan çalışma olanağı elde etmektedir. Bu durumu yine, CoffeScript, TypeScript ve EcmaScript 2015 için görmekteyiz. Örneğin EcmaScript 6 dil özelliklerini tüm tarayıcılar henüz desteklemediği için ara dönüştürücüler ( babel, treacuer gibi) kullanılarak yazılan kodlar tarayıcıların anlayacağı EcmaScript 5’e çevrilmektedir. Bu dönüştürücüler için genel zorluk ise, yüksek seviyeli bir dilden yüksek seviyeli bir dile (JavaScript) dönüşümün kolay olmayışıdır. Düşük seviyeli bir dil olan WebAssembly ise basit dil ögeleri barındıracağından dönüştürüm işlemi kolaylaşacak ve tarayıcı ortamları diğer dillere de açılmış olacaktır.

WebAssembly için elde edilecek bazı kazanımları listelemek istiyorum;

Ayıklama zamanı kazanımı
JavaScript kodları Web tarayıcılara ilk yüklendiğinde bir ayıklama (parsing) süreci geçiriyor. WebAssembly çalışma zamanında kaybedilen bu süreyi ortadan kaldırıyor. Çünkü zaten ortada derlenmiş, derleme zamanında terbiye edilmiş bir kod bulunacak.

Statik tip sistemi kazanımı
JavaScript dinamik tip sistemine tabidir. Verilerin tipleri çalışma zamanında belirlenir fakat bu performans açısından bir maliyettir. Oysa WebAssembly’de tipler yerli yerincedir ve çalıştırılırken tip bilgisi hali hazırdır. Dolayısıyla tip sisteminden kaynaklı etkiler engellenmiş olur.

Dosya boyutu ve parçalı yükleme kazanımları
WebAssembly kodları bir ikili (binary) temsil biçimine de sahip olacak. Böylece WebAssembly modülleri daha fazla sıkıştırılabilir olacak. Bu da boyut ve kodun tarayıcıya yüklenme süresi bakımından avantaj anlamına geliyor. Bunun yanında Web tarayıcıların WebAssembly modüllerini parça parça (stream) halde yükleyebilmesi hedeflenmektedir. Böylece tam yükleme olmadan da WebAssembly kodları çalıştırılmaya başlanabilecektir.

Optimizasyon tekniklerine açıklık kazanımı
WebAssembly basitliği ve tip bilinirliğinden dolayı, gerek derleme zamanı, gerekse de çalışma zamanındaki kod iyileştirme tekniklerine JavaScript’e göre daha açıktır. Bu tabiki çok önemli bir performans kazanımı olacaktır.

WebAssembly www’yi daha kapsayıcı ve kucaklayıcı hale getirerek Büyük Web‘i inşa edecek. Şu anda WebAssembly takımı C ve C++ dillerinden WebAssebly dönüşümü için bir derleyici yazmayla ilgileniyor. Tabiki ilerleyen süreçlerde diğer yazılım dilleri için geliştirici gruplarının WebAssembly için çalışmalarını göreceğiz.

Peki sizce bu durumda JavaScript’i nasıl bir gelecek bekliyor? Düşüncelerinizi yorum olarak bekliyorum.

Yararlanılan kaynaklar
  • https://brendaneich.com/2015/06/from-asm-js-to-webassembly/
  • https://kripken.github.io/talks/wasm.html#/
  • https://medium.com/javascript-scene/what-is-webassembly-the-dawn-of-a-new-era-61256ec5a8f6#.v7l0mnl8h
  • https://github.com/WebAssembly/design/blob/master/README.md
  • http://www.hanselman.com/blog/JavaScriptIsWebAssemblyLanguageAndThatsOK.aspx
  • https://www.w3.org/community/webassembly/

Bu kaynakların yanında WebAssembly mail grubundan da faydalanabilirsiniz. public-webassembly@w3.org

Tekrar görüşmek dileğiyle.

Tag:bigweb, javascript, wasm, webassembly

  • Share:
author avatar
Rahman Usta
Kodedu.com bünyesinde eğitim ve danışmanlık faaliyetleri sürdüren Rahman Usta, 2012 yılında yayına çıkan popülerJava Mimarisiyle Kurumsal Çözümler ve 2014 yılında yayınlanan Java 8 Ebook kitaplarının yazarıdır. Açık kaynak dünyasına katkı veren yazar, geliştirdiği AsciidocFX projesiyle Duke's Choice Award 2015 ödülünü kazanmıştır. Rahman ayrıca, Istanbul JUG'un ve Java standartlarını geliştiren JCP (Java Community Process)'in bir üyesidir. 2018 yılında Java Şampiyonu olarak seçilmiştir.

Previous post

Crystal programlama diliyle tanışmaya hazır mısınız?
2 Şubat 2016

Next post

Java EE Ölüyor mu, yoksa yeniden mi doğuyor?
8 Temmuz 2016

You may also like

api-logo
Swagger Nedir? Neden kullanılır?
10 Ekim, 2018
spring-cli-logo
Spring CLI ile Spring Boot Projeleri Hazırlamak
21 Ağustos, 2017
eureka_architecture
Spring Cloud Netflix ve Eureka Service Discovery
3 Temmuz, 2017

    3 Comments

  1. Hüseyin Altunbaş
    2 Şubat 2016
    Cevapla

    Javascript uzun yıllar ölecek gibi değil desktop ve native mobil app yazılmaya dahi başlandı ve güzel işler çıkıyor.
    WebAssembly çıktığında ilk işlerden biri js convert WebAssembly olacaktır diye düşünüyorum.
    node.js gibi…

  2. Ümit Coşkun Aydınoğlu
    3 Şubat 2016
    Cevapla

    Güzel bir girişim. Ancak javascript ölmez. üstelik bu kadar çok standard olmuş kütüphane varken. büyük ihtimal developerlar javascriptle yazmaya devam edecek. javascripti webassembly’ye çevireceğiz. Ayrıca diğer diller javascriptte zaten hali hazırda olan pek çok özelliği kendilerine eklemek zorunda olacaklar. En basitinden DOM access. Bu durumda javascript maça 5-0 önden başlıyor diyorum.

  3. Mustafa
    4 Şubat 2016
    Cevapla

    Yeni trend bu sanırım. Ve hepsininde ortak bahanesi performans ve güvenlik.
    Peki soruyorum. Neden buna ihtiyac var?
    Bugüne kadar eksik olan neydi?

    Ve bir sürü bence gereksiz script türü türedi hangisini gerçek bir projede kullandınız.

    Hepsi bi yana basit kurumsal sitesi olan küçük bir işletme javascript kullanmayacak mı?

    Sürekli birşeyler çıkıyor ama elde birşey yok..

Leave A Reply Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta listesine kayıt olun!






Gözde yazılar

Hafif bir Kod Editörü – Brackets
30Haz2012
Java’da Record’lar
27Oca2020
Reflection ile Dependency Injection nasıl gerçekleştirilir?
04Eyl2012
Integration of Spring MVC and Mustache
02Ağu2013

Son Yazılar

  • Java’da Record’lar 27 Ocak 2020
  • Swagger Nedir? Neden kullanılır? 10 Ekim 2018
  • Spring CLI ile Spring Boot Projeleri Hazırlamak 21 Ağustos 2017
  • Spring Cloud Netflix ve Eureka Service Discovery 3 Temmuz 2017
  • Online React.js Eğitimi ardından (15-25 Mayıs 2017) 31 Mayıs 2017

Son Yorumlar

  • YAML Nedir? Neden YAML Kullanmalıyız? için shahriyar
  • Java Persistence API Nedir? (Giriş) için Utku
  • Java 8 – CompletableFuture ile Asenkron Programlama için Rahman Usta
  • Java 8 – CompletableFuture ile Asenkron Programlama için burak
  • Arm7 Nxp 2104 işlemci ile basit bir Uygulama için Mustafa Dinc

Get Java Software

Arşivler

Bizi takip edin

React.js Eğitimi Başlıyor
11-22 Eylül, 2017
Eğitmen
Rahman Usta
İletişim

merhaba@kodedu.com

  • Hakkında
  • Gizlilik Politikası
  • İletişim
  • Referanslar
Kodedu Bilişim Danışmanlık
Cemil Meriç mah. Çelebi sok.
No:16/3 Ümraniye/İSTANBUL
Tel: 0850 885 38 65
Alemdağ V.D.: 8960484815

KODEDU © Tüm hakları saklıdır.