Mobil Uygulama Geliştirme: Native, HTML5 ve Hybrid

Ekranlar küçük, uygulamalar büyük ve hayat bildiğimiz gibi yine devam ediyor. Her geçen gün sosyalleşen ve şeffaflaşan bir dünya’ da mobil uygulamalar can alıcı bir rol oynayarak fokusumuzu web’ den, mobil uygulamalara kaydırmış bulunmakta. Mobil uygulamalar seçenek olmaktan ziyade zorunlu hale gelmiş durumdadir. Mobil bir uygulamaya ihtiyacınız var fakat nereden başlayacaksınız ? Mobil stratejinizde rol oynayan birden çok faktör var, örnek verecek olursak ekibinizin uygulama geliştirme yetenekleri, gerekli cihaz fonksiyonalitesi, güvenlik önlemleri, çevrimdışı yeteneği, birlikte çalışırlık gibi. Mobil Uygulama Geliştirme: Native, HTML5 ve Hybrid, günün sonunda uygulamanızın ne yapacağından çok o noktaya nasıl getireceğiniz söz konusu.

Goldilocks gibi, doğru yatağı bulana kadar çok yumuşak ya da çok sert birden çok yatak denemek zorunda kalabilirsiniz. Ve bazen mükemmel bir seçenek olmayabilir. Her uygulama geliştirme senaryosunun kendi içerisinde artıları ve eksileri vardır. Goldilocks’ un aksine katlanmak zorunda olduğunuz zorluklar sanıldığının aksine yoktur ve bu makale ile ağzınızın sıcak yemekten yanmasını önlemeyi amaçlıyoruz.

Bu makale mobil uygulama geliştirmeyi genel olarak anlatırken, spesifik olarak MobilM ile etkileşimli mobil uygulama geliştirmeyi amaçlayan uygulama geliştirmecileri hedef almaktadır.

Native uygulamalar, kaynak (cihaz) platformun desteklediği uygulama geliştirme araçları ve dil (Xcode ve Objective-C + iOS, Eclipse ve Java + Android) kullanılarak herhangi bir mobil platforma (iOS veya Android) spesifik olarak geliştirilmiş uygulamalardır. Native uygulamalar en iyi görünüm ve performansa sahiptir.

HTML5 uygulamalar, standart çoğunlukla HTML5, JavaScript ve CSS web teknolojilerini kullanırlar. Bu bir kere yaz heryerde kullan yaklaşımı birden çok cihaz üzerinde çalışabilen mobil uygulamalar geliştirilebilmesine olanak sağlayacaktır. Uygulama geliştiriciler sadece HTML5 ve JavaScript kullanarak sofistike uygulamalar geliştirebilirler. Yine de session (oturum) yönetimi, güvenli çevrimdışı depolama ve kaynak cihaz özelliklerine erişim gibi can alıcı özellikler kısıtlı kalacaktır.

Hybrid uygulamalar, native ve HTML5 mobil uygulamaların en iyi yanlarını biraraya getirerek HTML5 uygulamaları hassas bir container(kap) içerisine entegre edebilmeyi sağlıyor.

Mobil Uygulama Geliştirme: Native, HTML5 ve Hybrid

Native (Doğal) Mobil Uygulamalar

Native uygulamalar, en iyi kullanılabilirlik, en iyi özellikler ve en iyi mobil kullanıcı deneyimini sağlar. Sadece native uygulamalarda bulabileceğiniz birkaç özelliğe değinecek olursak:

Multi touch – çift tıklama, çift parmak zoom in / zoom out ve diğer kullanıcı arayüzü (UI) hareketleri

Hızlı Grafik İşlemci – Native Platform birkaç farklı elemente sahip istatistiki grafikler veya yüklü veri içeren ve hızlı yenileme (refresh) gerektiren grafiklere en hızlı şekilde ulaşmanızı sağlar.

Akıcı Animasyon – Hızlı Grafik API’ leri ile akıcı animasyonlara sahip olabilmenizi sağlar. Oyun, interaktif raporlama veya ses ya da görüntü işlemek için bilgi işlem algoritmalarının yoğun olduğu mobil uygulamalarda bu oldukça önemli bir özelliktir.

Built-in bileşenleri – Cihaza ait kamera, adres defteri, yer bildirimi gibi özelliklerin düzgün bir şekilde mobil uygulamaya entegre edilebilmesi. Bir diğer önemli bileşen ise şifreli depolama özelliğidir.

Kolay Kullanım – İnsanların alışık olduğu platformların temellerine dayandırarak tasarlanmış bir grafik arayüz ile kullanımı kolay bir mobil uygulamaya sahip olabilirsiniz.

Döküman Yönetimi – Sadece iOS ve Android mobil uygulama geliştirme ile ilgili 2500′ den fazla kitap bulunmaktadır. Bunun yanısıra makale, blog yazıları ve StackOverflow gibi sitelerdeki detaylı teknik dökümanlarda yer almaktadır.

Native uygulamalar genellikle birleşik uygulama geliştirme ortamları (IDE) kullanılarak geliştirilmiştir. IDE’ ler profesyonel uygulama geliştirenlerin ihtiyacı olan hat ayıklama(debug) kontrol, proje yönetimi, versiyon kontrol sistemi gibi birçok araçları sağlar. iOS ve Android mobil uygulamalar farklı IDE’ ler ve diller kullanılarak geliştirilmiş olsa da uygulama ortamlarında farklılıklarını gözetmeyecek kadar birçok ortak nokta bulunmaktadır. Özetle, cihazın gereksinimi olan araç kullanılmaktadır.

Native mobil uygulama geliştirmenin zor olmasından ötürü bu araçlara ihtiyaç duyulmaktadır. Diğer mobil uygulama geliştirme senaryolarına kıyasla Native moibl uygulama geliştirme daha çok deneyim gerektirmektedir. Takımınızın teknolojik bilgi birikimi oldukça önemli rol oynamaktadır. Eğer profesyonel bir uygulama geliştirici iseniz, API veya framework üzerinde satılan komponentler üzerinde gelen özel efektler veya tümleşik paketler halinde sunulan fonksiyonlara ihtiyacınız bulunmamaktadır. Açıkça söylemek gerekirse bugün yetenekli bir native iOS veya Android uygulama geliştiricisine rock star gözü ile bakılmakta ve rock star taleplerini yapabilmektedir.

Native uygulamalara, mobil uygulama geliştirme perspektifi ile baktık. Bir diğer daha önemli perspektif ise son kullanıcı bakış açısıdır. Cihazınızın üretici şirketinden beklediğiniz; uygulama markette yer alma, anında açılma, hızlı performans, tutarlı platform görünümü, güncelleme gereksinimlerini bildirme gibi tüm özelliklere Native mobil uygulamalar ile ulaşabilirsiniz.

 

HTML5 Mobil Uygulamalar

Mobil uygulama geliştirmede yeni iseniz, partiye geç kalmışsınız demektir. Yine de Web tabanlı mobil uygulamalar için, 1999′ daki partiler gibi diyebiliriz. Geçtiğimiz yıllarda browser’ lar oldukça gelişme katetse de temel teknolojik altyapı Y2K bug’ ından korktuğumuz dönemlerden çok da farklı değildir.

Bu bahsedilen özellikler avantaja dönüşebilir. Basitçe değinecek olursak bir HTML5 mobil uygulaması küçük bir ekranda çalışabilen bir veya birden çok web sayfasından meydana gelmektedir. HTML5 uygulamalar cihaz uyumlu olup herhangi bir modern mobil webtarayıcı’ da çalışabilir. İçeriğiniz web üzerinde olduğundan ötürü arama motorlarına açık olup mobil uygulamanın özelliğine göre (ör: alışveriş) önemli bir avantaj olabilir.

Web tabanlı mobil uygulama geliştirme üzerine deneyiminiz var ise HTML5′ i çok kolaylıkla kullanıyor olacaksınız. Web tabanlı uygulama geliştirmeye yabancı iseniz, native ya da hybrid bir uygulamadan ziyade HTML5 ile başlamanız daha kolay olacaktır. Maalesef ki her cihaz kendi çözünürlük ve ekran ölçüsüne sahip olduğundan ötürü uygulamanın her cihazda test edilmesi gerekmektedir. Tarayıcı uyumsuzluğu durumu Android cihazlar için yaygın olduğundan ötürü farklı tarayıcılar üzerinde de test etmeniz tavsiye edilir.

“Bir kez yaz heryerde kullan” HTML5 metodolojisinin bir diğer önemli özelliği de yayınlama ve teknik destek Native uygulamalara göre daha kolaydır. Hata düzeltme ya da yeni bir özellik eklemek istediğinizde, tek seferde tüm kullanıcılar üzerinde bu değişiklikleri aktive edebilirsiniz. Native uygulamalarda ise daha uzun geliştirme ve test aşamaları söz konusudur. Ayrıca, kullanıcılar son düzeltmelere ulaşabilmek için uygulama markete girip son güncel versiyonu indirmek durumundadır.

Geçtiğimiz son yıllarda, mobil uygulama geliştirmek isteyenler için HTML5 tekniği oldukça popüler hale geldi. Çoklu grafik arayüz (UI) yapısı ile birden çok uygulama geliştiricisinin uğraşmak istemediği karmaşık problemlere çözüm sağlar. Momentum stili scroll yapısı ile iScroll fenomen olmuş bir işlev görmektedir. JQuery Mobile ve Sencha Touch şık mobil komponentler sağlamaktadırlar.

Eğer HTML5 moibl uygulamaları geliştirmek, destek vermek kolay ve cihaz uyumluluğunda en geniş yelpazeye sahip ise bu uygulamaların tercih edilmeme sebebi ne olabilir ? Native uygulama geliştirmenin en önemli faydalarına yukarıda değindik öyleyse sadece cihaz üzerindeki Native özelliklere erişemeyeceğinizi tekrar dile getireceğiz. Kullanıcılar alışık oldukları Native tabanlı görünüme ya da kullanım kolaylığına sahip olamayacaklardır.

En son sürüm tarayıcılar donanım destekli CSS3 animasyon özelliklerini desteklemektedirler. Kayan paneller (sliding panel) ve ekranlar arasında yalın (smooth) geçişler dahi Native moibl uygulama yapısının güç ve esnekliğini yakalayamaz. Bugün, ekran üzerine birden çok girdinin aynı anda yapıldığı durumlarda doğru komutu tespit edebilmek halen mümkün değildir.

Özellikle kurumsal mobil uygulamalar için güvenlik ve çevrimdışı depolama gözle görülür kısıtlamalar olarak yer almaktadır. Bazı dosyaları cihaz üzerindeki ön bellekte(cache) de depolayarak offline (çevrimdışı ) depolama kapasitesini kazanabilecek olsanız da bu iyi bir çözüm olmayacaktır. Veritabanı her ne kadar şifrelenmiş olsa da her uygulamayı ayrı bir developer sertifikası ile koruyan Native tabanlı keychain encryption özelliği kadar başarılı olamayacaktır.
Eğer Web tabanlı bir uygulama mobil cihaz üzerinde arka planda çalışıyor ise desktop üzerinden her çağırıldığında kullanıcıların herdefasında kimlik doğrulama yapması gerekecektir
Bu gibi durumlar kullanıcılar için kötü bir deneyimden öteye gitmeyecektir. Genel olarak, hayati güvenlik ölçütlerini uygularken Native platform mobil uygulama geliştirenler için karmaşık bir iş haline gelebilir.
Özetle, eğer güvenlik sizin için en önemli özellik ise, uygulama geliştirirken hangi mobil teknoloji altyapısını seçeceğinize karar veren faktör olabilir.

 

Hybrid Mobil Uygulamalar

Hybrid mobil uygulama geliştirme tekniği HTML5 ve Native dünyasının en önemli özelliklerini bir araya getirir. Hybrid mobil uygulamaları, HTML5 ve JavaScript kullanılarak geliştirilmiş sonrasında Native platform özelliklerine erişebilmesi için Native bir taşıyıcı (container) ile sarmalanmış bir web uygulaması olarak tanımlarız. PhoneGap, hybrid mobil uygulamalar yaratırken en çok tercih edilen taşıyıcıya (container) örnektir.

Hybrid uygulamalar, her iki dünyanında en iyi yanlarını bir araya getirir. JavaScript optimizasyonunda, iyi tasarlanmış CSS şablonları yaratmada, herhangi bir platform üzerinde çalışabilecek HTML kodları yazmada guru haline gelmiş herhangi bir web tabanlı uygulama geliştirici hayli başarılı Native uygulama özelliklerini gözardı etmeden sofistike uygulamalar geliştirebilir. Native mobil uygulama geliştirenler nadir de olsa görüntü işleme gibi taskları(görevleri) yerine getiren pluginleri(eklentileri) geliştirebilirler. Ama bu gibi durumlarda şeytan ayrıntı da gizlidir.

iOS işletim sisteminde, gömülü web tarayıcı ya da UI WebView Safari tarayıcısı için çok da kritik değildir. Farklılıklar önemsiz görünse de, debug işlemi sırasında can sıkıcı durumlar meydana gelebilir. Bu nedenle, bu gibi tüm kısıtlamaları adresle yen popüler yapılara (framework) yatırım yapmak daha karlı olacaktır.

Native uygulamaların cihaz üzerinde kurulu olması yanısıra HTML5 cihazların Web Sunucular üzerinde çalıştığını biliyoruz. Öyleyse, hybrid uygulama dosyalarının cihaz mı sunucu üzerinde mi durduğunu merak ediyor olabilirsiniz. Evet aslında hybrid uygulamayı hayata geçirebilmek için iki durum söz konusudur..

Lokal – Native mobil uygulama yapısındaki yaklaşım ile Mobil uygulama içerisindeki HTML ve JavaScript kodlarını paketleyebilir siniz. Bu senaryoda cihaz ve cloud arasında gidip gelen data(veri) transferi için REST API leri kullanabilirsiniz.

Server – Alternatif olarak web tabanlı uygulamayı tamamı ile ( daha iyi performans alabilmek adına ekstra cache yapısı ile ) sunucu üzerinden kullanabilirsiniz. UIWebview üzerindeki taşıyıcıları (container) kullanmanız gerekecektir.

Netflix; tablet, telefon, smart TV, DVD oynatıcı, buzdolabı ve araba gibi değişik her cihazda aynı grafik arayüzü çalıştıran oldukça ilgi çeken bir uygulamaya sahiptir. Birçok insanın uygulamanın nasıl implemente edildiğine yönelik hiçbir fikri ya da ilgisi olmasa da optimal kullanıcı etkileşimini belirlemek için; A/B testlerini yönetebilmeyi, kullanımda olan kullanıcı arayüzünü değiştirebilmeyi bilmek isteyeceklerdir. Video decode etme ve yayınlama özelliklerini Native uygulama katmanına almak ile en iyi performansı elde edebilirsiniz. Native bir uygulama her iki dünyanında en iyi özelliklerini sağlamaktadır.

Sonuç

Mobil uygulama geliştirme sürekli gelişen bir yapıya sahiptir. Her 6 ayda bir, sadece Native API’ ler aracılığı ile ulaşılabilen özerk özelliklere sahip yeni bir işletim sistemi çıkmaktadır. Web tabanlı teknolojiler her bir kaç yılda bir muazzam bir sıçrama yaptıkça taşıyıcılar (container) bu özellikleri er ya da geç hybrid mobil uygulamalara getirmektedir. Şu anki teknolojiyi temel alacak olursak, bu makalede üzerinde durulan senaryolardan bir tanesi ihtiyaçlarınıza yönelik bir mobil uygulamaya yönelmenizdir. Tüm bu konuştuklarımızı bir tabloda özetlersek;