İleri web uygulaması

i̇leri web uygulaması (i̇ngilizce: progressive web app), yeni bir yazılım geliştirme metodolojisini ifade etmek için kullanılır. geleneksel uygulamalar dışında, i̇leri web uygulaması bilinen web sitelerinin ve mobil uygulamaların hibrit halde geliştirilmesi olarak değerlendirilebilir. bu yeni uygulama yaşam-döngüsü çeşitli özellikleri bir araya getirir ve en modern tarayıcılar tarafından desteklenerek mobil tecrübenin faydalarını kullanıcılara sunabilmektedir.

genel bakış 
2005 yılından bu yana internet, statik web sitelerinden dinamik web sayfalarına ajax teknolojisi ve responsive web tasarımları sayesinde hızlı bir şekilde gelişti.

dinamik ve responsive web 
web geliştirme teknolojileri statik html dokümanlarından dinamik php, asp.net, ajax ve çeşitli sunucu ve istemli cihaz bazlı dillere ve kodlara kaydı.

son olarak, i̇leri web uygulamaları, html5, css3 ve javascript'in yenilikçi özelliklerinin tanıtılması sayesinde gelişti. markup(işaretleme dili), styling sheets ve script'lerin bu güçlü birleşimi sayfa unsurları ile kullanıcı etkileşimini, macromedia flash olmadan video oynatımına ve oyunların oynanmasına imkân sağladı. (tüm bunlar sunucuda değil, istemci cihaz üzerinde gerçekleşmektedir.) yakın zamanda yayınlanan css3 ve javascript altyapısı tasarım modellerini ve felsefesini değiştirdi; kutu modelini(box model) grids ve flex'ler takip etti, bunları translations, transformations, animasyonlar eşlik etti. style still'e yeni yaklaşımı internetin sanal katmanını tanımladı.

i̇nternet tarayıcıları 
bu değişikliklerin hiçbiri bilinen web tecrübesini ciddi şekilde değiştirmeyecektir.

mobil cihazlar 
2007 yılında apple iphone piyasaya sundu. bu cihaz ilk tamamıyla fonksiyonel dokunmatik tecrübeli akıllı telefondu. web'te gezinti yapma imkânı veren bununla birlikte geniş çeşitlilikte native uygulama kullanıma izin veren, fiyatı makul, kullanışlı bir cihaz fikri hızlıca yayıldı.

mobil kullanıcı tecrübesinin yükselişi 
uygulamaların popülaritesinin arakasındaki en önemli sebeplerden birisi daha iyi bir kullanıcı tecrübesidir. native uygulamalar paket bir yapı olarak çalışırken geleneksel web uygulamaları gerçek zamanlı tarayıcıya yüklenir. tarayıcı ayrıca bir soyutlayıcı olarak sistem donanımı ile web uygulaması arasında yer alır. paketleniş kaynaklar ve direkt donanıma bağlanma yeteneği native uygulamaların daha performanslı çalışmasını sağlar.

bir diğer uygulama kategorisi hibrit uygulama olarak adlandırılır, native uygulama özellikleri ile web uygulamaları özellikleri arasında yer alır.

hibrit uygulamalar native mobil karakteristikliğini sergiler ve uygulama mağazalarından indirilmesi, kurulması ve mobil cihazın kısıtlı hafızasının bir kısmını tüketmesini gerektirir. aynı zamanda mobil cihazın ana ekranında gözükürler.

hibrit uygulamaların bir kısmı, mobil tarayıcılarda çalışsalarda bir şekilde web'in paylaşılan prensiplerini sağlamazlar:

 url'leri yoktur yani bağlanılabilir değildir. eğer web üzerinden bağlanılamıyorsa, web'in bir parçası olamazlar.
 markup ve styling yapıları arama motorları tarafından bağlanılabilir değildir.
 kullanıcı arayüzü zenginliği ve sistem yetenekleri ek fonksiyonel çekirdek vasıtasıyla farklıdır.
 doğası gereği açık kaynaklı olan web'e karşı hibrit uygulamaların kodlarına erişilmez.

i̇leri web uygulamaları 
2015 yılında, google'da chrome blink üzerine çalışan bir web developer olan alex russell, bir websiteyi çevrimdışı(offline) modda, istenilen kişiselleştirme yeteneğine sahip ve dokunma tecrübesi ile çalışıyor haldeki bir mobil uygulamaya dönüştürdü.

alex, uygulama mağazalarındaki web uygulamalarının paketleme ve yayınlama süreçini, web sitesini doğru içerik ile mobil yetenekli web uygulaması haline dönüştürerek ortadan kaldırdı. yapıya yeni özellikleri devamlı ekleyerek geliştirmesini sürdürdü, bunlardan bazıları kişiselleştirme, ana sayfaya konumlandırma, bildirimler yetisi, çevrimdışı(offline) çalışma yapısı ve dokunma teknolojisi desteği gibi.

bu sayede, geleneksel web uygulamalarının ve bununla birlikte çoklu platform(cross-platform) mobil uygulamaların sahip oldukları kısıtlamaları bir bir bu geliştirmeyi websitesi üzerinde geliştirerek aştır.

i̇leri web uygulamaları, web teknolojisi avantajları ile mobil native uygulama kullanıcı tecrübesini birleştirmek adına yeni bir trend ve umut oldu.

karakteristiği 
google geliştiricilerine göre ileri web uygulamaları:
 progressive - tarayıcının ne olduğu önemli olmadan tüm kullanıcılarda çalışır.
 responsive - tüm formlara uygundur: masaüstü, mobil, tablet ve kullanılacak yeni formlarda.
 bağlantı bağımsız(connectivity independent) - çevrimdışı modda ya da düşük kaliteli network'te çalışılabilirlik.
 native görünümü(app-like) - native mobil uygulama gibi gözüken web uygulamaları üretmesi.
 güncel - service worker yapısı sayesinde her zaman güncellenir.
 güvenilir - https üzerinden hizmet verdiği için verinin gözlemlenmesi ya da bozulmasına izin vermez.
 keşfedilebilir - w3c manifest yapısı sayesinde uygulama olarak tanımlanabilme özelliği vardır. service worker kayıt olma yapısı arama motorlarının onları bulmasına izin verir.
 tekrar ulaşılabilir (re-engageable) - müşteri ile etkileşim mobil uygulama bildirimleri(push notification) desteği sayesinde mümkündür.
 kurulabilir - uygulama mağazalarının yükleme ve kullanım zorluğu olmadan direkt ana sayfada uygulamanın yer almasını sağlanır.
 bağlanılabilir - karmaşık yükleme süreçi olmadan basit bir şekilde url ile paylaşılabilirliği.

teknolojisi 
i̇leri web uygulamaları konsepti, web ve mobil yazılım geliştirme teknolojilerinin gelişiminin ortaya çıkardığı bir sonuç olması sebebi ile birkaç teknolojiyi kapsar:

 html5, css3, javascript, media queries ve jquery responsive web tasarımı teknolojileri
 transport layer security (tls) ile üst düzey güvenlik 
 web manifest ya da extensible web manifesto teknolojisi native uygulama tecrübesi üretmek için
 servis workers çevrimdışı modda arka plan kodlarının işlenmesi için
 application shell architecture içeriğin dinamik yüklenmesi ve hızlı bir şekilde uygulamanın yüklenmesi için

manifest 
w3c'nin json tabanlı bir tanımlamasıdır. geliştiricilere web uygulaması ile ilgili metadata'ları koyabildiği merkezi bir yer oluşturur. şunları içerir:
 web uygulamasının ismi
 web uygulaması iconları ve resim objeleri linkleri
 web uygulamasını açmak ve başlatmak için tercih edilen url bilgisi
 web uygulamasının bir dizi karakteristikliği için konfigürasyon verileri
 varsayılan web uygulaması oryantasyon(orientation) tanımlaması
 tam ekran gibi görünüş modunun tanımlanması

geliştiriciler web manifest dosyasındaki metadalar değiştirilerek uç kullanıcı arayüzünde kusursuz native uygulama tecrübesini i̇leri web uygulaması(progressive web app) sayesinde elde edebilmektedir.

service workers 
native uygulamalar, kullanıcı tecrübesi daha zengin ve performanslı çalışırlar. bunun sebebi gerekli olan içeriğin, bileşenlerin ve kaynakların uygulamanın uygulama mağazalarından indirilme süresince cihazın hafızasına konumlandırılmış olmasıdır.

buna karşın, geleneksel web uygulamaları güvenilmez web bağlantı hızları ve yükleme kısıtları sebebi ile problem yaşar. tüm bunların üzerinden gelebilmek amacıyla service worker yapısı web worker yapısı gözetilerek tasarlandı ve kusursuz yükleme tecrübesini sunmaktadır.

teknik olarak, servis worker web tarayıcılarında http ve web taleplerini programlı bir şekilde yönetebilmek amacıyla kodlanabilir vekil(proxy) bir network yapısı sunmaktadır. service worker network ile cihazın arasında yer alır ve içeriğin taşınmasını sağlar. cache'leme mekanizmasını verimli ve hatasız bir şekilde çevrimdışı modda sunabilme yeteneğine sahiptir.

uygulama kabuk mimarisi(application shell architecture) 
uygulamanın arayüzlerinin ve içeriğinin hızlı bir şekilde yüklenmesi amacıyla servis worker responsive web uygulamasının basit kullanıcı arayüzlerini saklar. bahsedilen basit kullanıcı arayüzleri  terimi uygulamanın kabuğu(shell) olarak ifade edilir.

bu kabuk başlangıç statik çerçevesini(frame), sayfa düzenini ya da içeriğin adım adım ve bununla birlikte dinamik bir şekilde yüklenmesini sağlayan bir mimari sağlar. teknik olarak, kabuk paketlenmiş bir koddur ve mobil cihazın tarayıcısının cache'inde tutulur. bu sebeple, farklı bağlantı hızlarında uygulamanın içeriği yüklenme sırasında kabuk yapı kullanıcı ile ilk etkileşimi yapar. kullanıcı boş bir ekranın yüklenmesini beklemeden ilk etkileşim olarak bir ekran ile karşılaşmış olur.

bu tip web uygulamalarının en büyük güçü kullanıcıya sağlam bir mobil tecrübeyi harika bir web teknolojisi ile kullandırmasıdır.

bu tip web uygulamaları henüz sadece chrome tarayıcıları tarafından desteklenmektedir. ancak yakın gelecekte tüm tarayıcılar tarafından desteklenebilir.

kaynakça 
bu makalenin çoğu wikipedia'nın progressive web app i̇ngilizce makalesinden  (09 ekim 2016) alınmadır.

web uygulamaları