Mobil uygulama tartışması
Giriş
Mobil uygulamalar ve HTML5 şu anda en popüler teknolojiler arasında yer alıyor ve bu iki teknoloji arasında birçok ortak nokta var. Web uygulamaları mobil tarayıcılarda çalışır ve çeşitli mobil platformlarda yerel uygulamalar olarak yeniden paketlenebilir. Desteklenecek çok çeşitli platformlar ve mobil tarayıcıların gücü nedeniyle geliştiriciler, "bir kez yaz, birçok kez çalıştır" çözümü olarak HTML5'e yöneliyor. Ancak bu gerçekten uygulanabilir mi? Yerel reklamları kullanmak için hâlâ geçerli nedenler var ve birçok geliştiricinin bu yolu tercih ettiği açıkça görülüyor. Bu makale, yerel uygulamalar ile web arasındaki tartışmayı ele almaktadır.
Özellik Zenginliği
Avantaj: Native daha fazlasını yapabilir
Mobil işlevselliği iki boyuta ayırabiliriz: uygulamanın kendisiyle ilgili deneyim ve cihazın ekosistemine bağlanma şekli. Örneğin Android'de bu, widget'lar ve bildirimler gibi özellikler olur. Native, her iki boyutta da başarılıdır.
Uygulama deneyimi açısından yerel uygulamalar daha fazla işlev sunar. Bu platformlar, kaydırma etkinliklerini ve çoklu dokunma etkinliklerini kolayca elde edebilir. Genellikle Android'in arama düğmesi ve ses kontrolleri gibi basılan fiziksel tuşlara göre işlem yapabilirler. Ayrıca GPS ve kamera gibi donanımlara da erişebilirler. Ayrıca, kullanıcının izniyle bazı platformlar işletim sistemine sınırsız erişim sağlar. HTML5 ile ne kadar pil kaldığını tespit etmeyi deneyin.
Ancak bu, uygulama içi deneyimden daha fazlasını ifade eder. Android gibi bir işletim sistemi, uygulamaların kullanıcılarla ve diğer uygulamalarla etkileşim kurması için farklı yollar sunar. Ana sayfada etkin widget'larınız var. Cihazın durum çubuğunda gösterilen bildirimleriniz vardır. Ayrıca, uygulamanızın diğer uygulamaların zaman zaman ihtiyaç duyabileceği genel bir hizmet sağladığını duyurmasına olanak tanıyan amaçlar da vardır.
Karşıt görüş: Yerel özellikler geliştirilebilir ve web zaten bu özelliklere yetişiyor
Birçok uygulama içi özelliğin HTML5 uygulamaları için erişilemez olduğu doğrudur. Web geliştirme becerileriniz ne kadar iyi olursa olsun, uygulamanız kamera API'si olmayan bir korumalı alanda sıkışıp kalırsa yakında fotoğraf çekemez. Neyse ki bu sanal ortamda olmanız gerekmez. Web uygulamanızın gerçekten fotoğraf çekmesi gerekiyorsa yerel bir uygulama oluşturabilirsiniz. Bu uygulama, kullanıcı arayüzünün büyük bir kısmını sağlayan yerleştirilmiş bir web görünümüne sahip olur. Açık kaynaklı PhoneGap çerçevesi şu şekilde çalışır: Yerel özellikleri web hizmetleri olarak kullanıma sunarak boşluğu doldurur. Bu hizmetler, web görünümü tarafından standart bir ağ API'si kullanılarak çağrılır. Bu şekilde bir hibrit uygulama oluşturduğunuzda, widget'lar, bildirimler ve amaçlar gibi platform özelliklerinden de yararlanabilirsiniz.
Hibrit (yerel ve web) uygulama oluşturmak ideal bir çözüm değildir. Bu durum, yalnızca mobil tarayıcıdan erişilen geleneksel web siteleri yerine yerel uygulamalar olarak sarmalanmış web uygulamaları için geçerlidir ve karmaşıklığı artırır. Ancak bu durum uzun sürmeyebilir. Web standartları hızla gelişiyor ve modern mobil tarayıcılar bu gelişime ayak uyduruyor. Örneğin, çevrimdışı depolama, coğrafi konum, tuval grafikleri ve video/ses oynatma gibi özellikler modern akıllı telefonlarda yaygın olarak desteklenir. Android 3.1'den itibaren web standartlarını kullanarak fotoğraf ve video çekmek mümkün olduğundan kamera bile desteklenmeye başlamıştır. Ayrıca en yeni iOS tarayıcı, iki yönlü yayın için WebSocket'i ve cihaz yönü algılamayı destekler.
Genel olarak mobil gelişiyor. Ancak web de hızla gelişiyor. Yalnızca masaüstü tarayıcılar arasında, standartları geliştiren ve ışık hızında özellikler ekleyen beş büyük tarayıcı sağlayıcı vardır. Bu özellikleri mobil cihazlara aktarmak kolay bir işlem olmasa da birçoğu mobil tarayıcılarda kullanılabilir.
Yerel, hızlı hareket eden bir hedef olsa da web bu açığı kapatıyor.
Performans
Nokta: Doğal reklamlar daha hızlı çalışır
Yerel uygulamalar, web çalışma zamanı engeliyle uğraşmak zorunda değildir. Bu uygulamalar, donanıma yakın çalışır ve GPU hızlandırma ile çoklu iş parçacığı gibi performansı artıran özelliklerden yararlanabilir.
Karşıt görüş: Web çalışma zamanları günümüzde çok daha hızlı ve çoğu uygulamanın bu hıza ihtiyacı yok.
Web'in son yıllarda hızlandığını söylemek yetersiz kalır. Chrome ile birlikte gelen JavaScript motoru V8, kullanıma sunulduğunda web performansında büyük bir gelişme olmuştu ve o zamandan beri daha da hızlandı:
Grafik oluşturma motorları da web'i hızlandırdı ve artık donanım hızlandırma da kullanılmaya başlandı. Donanım hızlandırmalı tuvalin sağladığı hız artışına göz atın:
Ayrıca, yeni Web Workers API çoklu iş parçacığı oluşturmayı mümkün kılar. Modern web geliştiriciler, performans için optimize edilmiş çeşitli kitaplıklar ve iyi araştırılmış performans optimizasyonu tekniklerinden de yararlanabilir. Bunların çoğu masaüstü web'de kullanılmaya başlasa da mobil cihazlar için hâlâ geçerlidir ve mobil cihazlara daha fazla dikkat edilmektedir. Örneğin, performans uzmanı Steve Souders'ın mobil performans araçlarına ayrılmış bir sayfası vardır.
Masaüstü sürümündeki tüm gelişmeler henüz her mobil platforma ulaşmamış olsa da trendler bu gelişmelerin yolda olduğunu gösteriyor. Ayrıca, mobil uygulamaların çoğunun en yeni 3D oyunlar değil, temel olarak bilgi tabanlı (haberler, posta, zaman çizelgeleri, sosyal ağlar vb.) olduğunu da belirtmek gerekir.Mobil cihazınızdan birkaç siteyi (ör. Gmail, Amazon, Twitter) ziyaret ederek mobil web performansının yeterli olduğunu doğrulayabilirsiniz. Oyunlar açısından, temel oyunlar 2D tuvalle zaten mümkün ve WebGL mobil cihazlarda görünmeye başlıyor. Firefox 4'e göz atın. Yaygınlaşana kadar, WebGL uygulamalarını OpenGL'den yararlanabilen yerel uygulamalara derleyen, giderek büyüyen bir çerçeve ailesi var. Örneğin, ImpactJS.
Geliştirici Deneyimi
Argüman: Yerel reklamların geliştirilmesi daha kolaydır.
Yerel uygulamalar, karmaşık uygulama geliştirme için tasarlanmış ve başarısı kanıtlanmış güçlü programlama dilleri (ör. Java, Objective C, C++) kullanır. API'ler, söz konusu platformu desteklemek için sıfırdan tasarlanmıştır. Hedef cihazı yakından temsil eden masaüstü emülatörlerinde uygulamalarda kolayca hata ayıklayabilirsiniz.
Web geliştirme sürecini özellikle sorunlu hale getiren şey, tarayıcılar ve çalışma zamanlarının çok çeşitli olmasıdır. Uygulamanız çalışırken X özelliğinin kullanılabileceği garanti edilmez. Bu standart olsa bile tarayıcılar bunu nasıl uygulayacak? Standartlar yoruma açıktır.
Karşıt görüş: Web'in geliştirilmesi genellikle daha kolaydır, özellikle birden fazla cihaz hedefleniyorsa.
Önce temel teknolojiyi ele alalım. Web standartlarının, web'in temel olarak uygulamalarla değil dokümanlarla ilgili olduğu bir dönemde tasarlandığı ve JavaScript'in yalnızca 10 günde oluşturulup dağıtıldığı doğrudur. Ancak bu dilin, tahmin edilenden çok daha yetenekli olduğu ortaya çıktı. Web geliştiriciler, iyi kısımlardan yararlanmayı ve kötü kısımları kontrol altına almayı öğrendi. Artık ölçeklenebilir tasarım için anlaşılan kalıplar var. Ayrıca, standartlar da değişmeye devam ediyor. HTML5, CSS3 ve EcmaScript Harmony gibi çalışmalar, geliştirici deneyimini iyileştiriyor. C++'ı mı, Java'yı mı yoksa JavaScript'i mi tercih ettiğiniz, dini bir tartışma konusudur ve eski kod tabanınıza da bağlıdır. Ancak JavaScript'in günümüzde ciddi bir rakip olduğunu söyleyebiliriz.
Tarayıcı/çalışma zamanı parçalanmasının olumlu yanı, tüm bu ortamların var olmasıdır. Java ile bir Android uygulaması geliştiriyorsunuz ve iOS'i desteklemek için Objective C'ye tam bir bağlantı noktası oluşturmanız gerekiyor. Bir web uygulaması geliştirin. Bu uygulama Android ve iOS'te çalışır. WebOS, BlackBerry, Windows Mobile ve diğer platformlarda da çalışması beklenir. Gerçekten doğru deneyimi elde etmek istiyorsanız her platform için ince ayarlar yapmanız gerekir. Ancak çoğu mobil işletim sistemi için bunu yerel olarak da yapmanız gerekir. Farklı sürümler ve farklı cihazlar vardır.
İyi haber şu ki "parçalanma" web'de her zaman bu şekilde olmuştur ve bununla başa çıkmak için iyi bilinen teknikler vardır. En önemlisi, aşamalı geliştirme ilkesi, geliştiricileri önce temel bir cihazı hedeflemeye ve platforma özgü harika özellikler eklemeye teşvik eder. Özellik algılama mantrası da yardımcı olur. Günümüzde, duyarlı web tasarımını desteklemek için Modernizr gibi kitaplıklar mevcuttur. Bu teknikleri dikkatli bir şekilde kullanarak, marka ve işletim sisteminden bağımsız olarak, eski usul "özellikli telefonlar" ve hatta saatler ve TV'ler gibi form faktörleri de dahil olmak üzere cihazların büyük çoğunluğuna erişiminizi genişletebilirsiniz. 2011'deki Google IO'da çoklu kullanıcı arayüzü demomuzu izleyin. Burada, mantık ve işaretlemenin ortak bir kod tabanıyla farklı form faktörlerini (özellikli telefon, akıllı telefon, tablet, masaüstü, TV) hedefledik.
Görünüm ve Tarz
Avantaj: Yerel reklamlar, platformun görünümü ve tarzıyla uyumludur.
Herhangi bir platformun belirleyici özelliklerinden biri görünümüdür. Kullanıcılar, kontrollerin tutarlı bir şekilde sunulmasını ve aynı şekilde kullanılmasını bekler. Platformdan platforma değişen belirli deyimler vardır. Örneğin, kullanıcı "uzun basma" işlemi yaptığında (bir öğeye birkaç saniye boyunca dokunmaya devam ettiğinde) ne olur? Platformlar bu tür şeyler için standart deyimlere sahiptir ve tek bir HTML5 uygulamasıyla hepsini karşılayamazsınız.
Ayrıca, platformun görünümü ve tarzı, platformun yerel yazılım kitaplığı tarafından düzenlenir. Bu kitaplığın widget'ları, kullanıcıların beklediği görünüm ve tarzı kapsar. Yerel araç setini kullanarak beklenen görünüm ve tarzın büyük bir kısmını "ücretsiz" olarak elde edebilirsiniz.
Karşıt görüş: Web'in kendine özgü bir görünümü ve tarzı vardır. Ayrıca, en çok önem verdiğiniz platformlar için web arayüzünü özelleştirebilirsiniz.
Önceki bölümde açıklandığı gibi, web geliştirmenin yolu temel bir "herkese uyan" sürüm yazıp ardından bunu kademeli olarak geliştirmektir. Geliştirme genellikle özelliklere dayalı olsa da en çok önem verdiğiniz platformları hedefleyerek de geliştirebilirsiniz. Bu, bir tür "tarayıcı algılama"dır ve web topluluğu tarafından bazen hoş karşılanmaz. Bunun temel nedeni, çok sayıda olası tarayıcının bulunmasıdır. Ancak çok yüksek öncelikli iki veya üç platformu görüntülüyorsanız ve yerel alternatiflere karşı rekabet etmek için ekstra çaba göstermeye istekliyseniz bu yöntem sizin için uygun olabilir.
Temel sürüm söz konusu olduğunda web'in kendine özgü bir görünümü vardır. Hatta her mobil platformun, varsayılan tarayıcı ve web çalışma zamanı tarafından oluşturulan kendine özgü bir "web görünümü" olduğunu söyleyebiliriz. "Web görünümü" kullanıcılarınız için uygun olabilir ve aslında masaüstü tarama deneyiminin yanı sıra kullanıcının çalışabileceği diğer cihazlardaki deneyimle daha fazla tutarlılık elde etmenizi sağlar. Ayrıca, yerel görünümü ve tarzı pek desteklemeyen birçok başarılı uygulama da vardır. Bu durum, oyunlar için kesinlikle geçerlidir (En sevdiğiniz mobil oyun, mobil işletim sisteminizin görünümünü ve tarzını takip ediyor mu?) ve hatta daha geleneksel uygulamalar için de geçerlidir.Örneğin, seçtiğiniz platformdaki daha popüler yerel Twitter istemcilerine göz atın. Burada, çalışan çok çeşitli kullanıcı arayüzü mekanizmalarını göreceksiniz.
Keşfedilebilirlik
Avantaj: Yerel uygulamaları keşfetmek daha kolaydır.
Android'in Market'i ve Apple'ın App Store'u gibi uygulama dağıtım mekanizmaları son yıllarda büyük bir popülarite kazandı ve tüm mobil sektörün önemli bir itici gücü haline geldi. Tüm geliştiriciler, yerel uygulamalarını, kullanıcıların göz atma, arama ve öneri alma gibi yöntemlerle keşfedebileceği pazar yerine gönderebilir. Bununla da kalmaz, işinizi doğru yaptıysanız parlayan puanlar ve yorumlar, kullanıcıları çok önemli olan yükleme düğmesine basmaya ikna eder.
Karşıt görüş: Web uygulamalarını keşfetmek aslında daha kolaydır.
Web, muhtemelen şimdiye kadar oluşturulmuş en keşfedilebilir ortamdır. Mütevazı URL'de, web'de yayınlanan her şey için (en azından teoride) benzersiz bir tanımlayıcı bulunur. Bu, standart web sitelerinde yayınlanan tüm uygulamaları içerir. Arama motorları, bu içeriğin keşfedilmesini kolaylaştırır ve mobil uygulama pazarlarına benzer web uygulaması katalogları da dahil olmak üzere diğer web sitelerinin bu içeriğe bağlantı vermesine olanak tanır. Aslında, herkes e-postalarda ve sosyal ağ mesajlarında bağlantı vererek web uygulamalarını arkadaşlarıyla paylaşabilir. Bağlantılar SMS olarak da gönderilebilir. Bu durumda mobil kullanıcılar bağlantıyı tıklayıp uygulamayı cihazlarının tarayıcısında başlatabilir.
Kullanıcıların uygulamaları derecelendirip yorumlayabileceği aynı pazar yerleri henüz mevcut değil ancak bu durum da değişiyor. Okumaya devam edin…
Para kazanma
Nokta: Native reklamlar para kazandırabilir
"6 yaşındaki çocuk, öğle yemeği saatinde uygulama geliştirip 3 ABD doları fiyatla bir trilyon kopya satıyor." Bu başlığı günümüzde sıkça görüyoruz. Bu nedenle, büyük ve küçük geliştiricilerin para kazanmak için mobil uygulama pazarlarına yönelmesi şaşırtıcı değil. Mobil platformlar, geliştiricilerin uygulamaları için doğrudan ödeme alabileceği çeşitli yollar sunar. En basit yöntem, uygulamayı sonsuza dek kullanmak için tek seferlik ödeme yapmaktır. Bazı platformlarda uygulama içi ödeme ve abonelik mekanizmaları da sunulur. Bu mekanizmalar, tutarlı ve güvenli bir şekilde sıkıca entegre edilmiştir. Bu yeni ödeme biçimleri, geliştiricilerin çok başarılı bir uygulamayı uzun vadeli bir gelir akışına dönüştürmesine olanak tanır.
Uygulama ödemelerinin yanı sıra reklam ve sponsorluk gibi geleneksel web modelleriyle de para kazanabilirsiniz.
Karşıt görüş: Web'de her zaman para kazanmak mümkündü ve fırsatlar artıyor
Para kazanmak için yeterli fırsat olmasaydı web, modern endüstrinin motoru olmazdı. Doğrudan "kullandıkça öde" mekanizmaları henüz yaygınlaşmamış olsa da aboneliğe dayalı "hizmet olarak yazılım" çözümlerinin gerçekten uygulanabilir hale geldiği çeşitli nişler vardır. Google Apps, 37Signals'ın ürün yelpazesi ve çeşitli e-posta hizmetlerinin premium sürümleri buna örnek olarak verilebilir. Ayrıca, web uygulamalarından kâr elde etmenin tek yolu doğrudan ödemeler değildir. İnternet reklamcılığı, satış ortağı bağlantıları, sponsorluklar, diğer ürün ve hizmetlerle çapraz tanıtım gibi yöntemler vardır.
Bununla birlikte, bir web geliştiricisinin başlıkları okuyup ödeme kıskançlığı yaşaması da gayet normaldir. Yerel pazar yerlerine web URL'si gönderemezsiniz. Peki, bir web geliştirici ne yapmalı? Yapmanız gereken, yerel bir "sarmalayıcı uygulama" oluşturmaktır. Hedeflemek istediğiniz her platform için yalnızca bir web görünümü içeren boş bir yerel uygulama oluşturun. Web görünümü, gerçek uygulamayı yerleştirdiğiniz yerdir. Ardından bu uygulamaları çeşitli pazar yerlerine gönderirsiniz (ve umarız para kazanmaya başlarsınız!). Günümüzde ana pazar yerlerinde muhtemelen yüzlerce, hatta binlerce web destekli uygulama var. Bunlardan bazıları o kadar ustaca asimile edilmiş ki web uygulamaları olduğunu bile bilmiyoruz.
Dezavantajı, her platform için çapraz derleme yapma zorunluluğudur. PhoneGap gibi mevcut bir çerçeve bu noktada yardımcı olabilir. Daha da iyisi, PhoneGap Build ve Apparatio gibi web hizmetleri geliştirilmektedir. Bu web sitelerini kod deponuza yönlendirdiğinizde Android uygulaması, iOS uygulaması vb. oluşturulur. Bu uygulamaları ilgili mağazalara gönderebilirsiniz. Makinenize yerel SDK'lar yüklemeniz gerekmez. Tüm bu yerel uygulamaları oluşturmak için gereken tek şey bir kod düzenleyici ve bir web tarayıcısıdır.
Pazar yerleri, web uygulamalarını yerel olarak sarmalamanın tüm ek yükü olmadan doğrudan destekleyecek mi? Henüz net değil. Google'ın geçen yıl Chrome Web Mağazası'nı kullanıma sunduğunu biliyoruz. Mağaza yalnızca masaüstü için geçerli olsa da diğer tarayıcı satıcılarının ilgisini çekmiş ve genel olarak mobil cihazlara özel bazı girişimler de dahil olmak üzere web uygulaması kataloglarına yönelik bir trendin parçası olmuştur. Web mağazası kavramı henüz yeni olsa da umut verici işaretler var.
Sonuçlar
Bu konuda bir kazanan belirlemek isterdik ancak şu anda kesin bir kazanan yok. Bazı uygulamalar yerel kullanıma, bazıları ise web'e daha uygundur. Web yığını tartışmasız daha fazla ivmeye sahip olsa da özellikler ve yürütme kalitesi açısından yerel uygulamalar da hızlı bir şekilde gelişiyor. Web teknolojilerinin çoğu mobil işletim sisteminde birinci sınıf vatandaş olduğu bir zaman gelmediği sürece yerel her zaman önemli bir husus olacaktır.
Bu makalede bahsedilen bir teknik olan hibrit uygulamalar, bazı geliştiriciler için en iyi çözüm olabilir: mümkün olan yerlerde web görünümü, mümkün olmayan yerlerde ise platforma özgü yerel bileşenler.
Web yolunu seçerseniz web standartlarına ve progresif geliştirme ilkesine dikkat edin. Web, etraftaki çok sayıda cihazı ve işletim sistemini nasıl hedefleyeceğini bilen bir teknolojidir. İster "parçalanma" ister "çeşitlilik" olarak adlandırın, web bunu destekler ve siz geliştiriciler de mevcut tüm tekniğin bilinen durumundan yararlanabilirsiniz.