Mobil Uygulama Geliştirme Yaklaşımlarının (Native, MobileWeb, Hybrid ) Mimari Açıdan Karşılartırılması

'GonzaLes

Stajyer Grafiker
17 Nis 2015
11,801
356
85
u bilmiyorum maalesef
Giderek sosyalleşen ve her konuda paylaşımın ön planda tutulduğu dünyamızda, mobil uygulamalar hayati bir rol oynamakta ve tüm ilgi odaklarını “internette neler oluyor ?” sorusundan “mobil uygulamalarda neler oluyor ?” sorusuna çevirmiştir. Mobil uygulama ve akıllı telefon kavramı bir lüks ve seçenek olmaktan çıkmış artık hayatın değişmez bir parçası ve zorunluluk haline gelmiştir, en azından büyük bir çoğunluk için böyle. Haber uygulamaları gibi içerik tabanlı uygulamalardan bankacılık uygulamalarına, kurumsal uygulamalardan fitness uygulamalarına, sosyal medya uygulamalarından oyunlara artık hemen her işimizi mobil uygulamalar üzerinden zahmetsiz ve kolay bir şekilde yapar duruma geldik.


mobilmimari.jpg


Sizin de bir mobil uygulamaya ihtiyacınız var diyelim, peki nereden başlamak gerek ? Mobil uygulamanız için en doğru stratejiyi seçmek konusunda kararlarınızı etkileyebilecek pek çok faktör bulunmakta ; yazılımı geliştirecek olan takımın teknik yetenekleri, yapmayı planladığınız uygulama için gerekli olan cihaz özellikleri, veri güvenliğine vereceğiniz önem, çevrimdışı (offline) çalışabilme yeteneği vb daha pek çok konuyu hesaba katmanız gerekir. Ve günün sonunda geldiğiniz noktada uygulamanın ne yapacağı kadar nasıl yapacağı da önem kazanmış olacaktır.

Mobil uygulama geliştirme stratejilerimizin karşılaştırılmasına başlamadan önce onları kısaca tanımak gerekirse ;

Native uygulama geliştirdiğimiz uygulama platformuna (iOS yada Android) bağımlı olarak o platformun bize sunduğu araç ve dil desteği (iOS için Xcode ve Objective-C, Android için Eclipse ve Java) ile geliştirdiğimiz uygulamalardır. Native uygulamalar hem görsel açıdan hem performans açısından en iyi sonuç veren uygulamalardır.

Web (HTML5) uygulama HTML5, Javascript ve CSS gibi standart web teknolojileri ile geliştirilen uygulamalardır. Cihaz bağımlılığı olmadan write-once-run-everywhere yaklaşımı ile geliştirilen platform bağımsız uygulamalardır. Mobil Web uygulama geliştiricileri uygulamalarını HTML5 ve Javascript’in tüm esnek ve güçlü yanlarını kullanılarak oluştursalar da hala pek çok kısıtlayıcı problemle karşılaşmaktadır.

Hibrid uygulama HTML5 uygulamaların native uygulamalar içerisine gömülmesi ile oluşturulan ve native ve HTML5 uygulama geliştirme yöntemlerinin en iyi (yada en kötü) özelliklerinin bir araya getirilmesi sonucu ortaya çıkan yöntemdir.

Her yöntem kendi içinde avantaj ve dezavantajlarını barındırmaktadır, bu avantaj ve dezavantajları ayrıntılı olarak incelemeye devam edeceğiz.

1. Native Mobil Uygulamalar

Tek cümleyle özetlemek gerekirse, native mobil uygulamalar kullanılabilirlik, mobil uygulama deneyimi ve fonksiyonel özellik açısından en iyi sonuçları veren yaklaşımdır. Sadece mobile native uygulamalarda yapılabilecek birkaç fonksiyonel özelliğe değinmek gerekirse :

Multi touch – çift tıklama, basılı tutma, swipe vb.

Hızlı grafik APIsi – native platformu göstereceğiniz ekranın karmaşıklığından bağımsız olarak en iyi ve en hızlı grafik deneyimini sunar.

Akıcı animasyonlar – native platformu hızlı grafik APIsi sayesinde akıcı bir animasyon deneyimi sunar, özellikle oyun gibi hızlı etkileşim gerektiren uygulamalarda bu özellik hayati önem taşımaktadır.

Built-in components – native uygulamanın en önemli özelliklerinden birisi de uygulamalar arası etkileşim ve veri alış verişi yapılabilir olmasıdır. Adres tefteri, geo******** ve kamera gibi komponentlerle entegre olma şansınız vardır.

Native uygulamalar IDE adı verilen araçlar (iOS için Xcode, Android için Eclipse) ile geliştirilir ve bu IDE’ler geliştiriciye kodu build etme, debug etme, versiyon kontrolü, proje yönetimi ve daha pek çok konuda yardımcı araçlar sunarlar. IDE seçimi hangi cihaz için uygulama yapacaksak ona göre seçilir; Eclipse Windows Vista/7/8, Linux ve MacOs işletim sistemlerinde ücretsiz olarak kullanılabilirken Xcode en iyi performansı MacOs işletim sistemi ile birlikte verir. Ayrıca Android uygulamalar herhangi bir ücret ödemeden Play Store üzerinde dağıtımı yapılabilirken, iOS uygulamaların dağıtımını yapmak için mutlaka bir Mac sahibi olmanız ve Apple Store’da senelik 99$ ödeyerek bir hesap oluşturmanız gerekmektedir.

Ayrıca iOS uygulamalar Objective-C ve Android uygulamalar Java dili ile yazıldığından yapacağınız native uygulama iki cihaz tipinde de çalışsın istiyorsanız hem Objective-C hem de Java öğrenmeniz gerekmektedir. Bu nedenle native uygulama sahibi olmak diğer yöntemlere göre daha çok bilgi ve bu bilgiye bağlı olarak da daha çok zaman ve maliyet gerektirir.

Bütün bu maliyetler platforma özel bilgilerin edinilmesi için harcanan zaman ve emek de size en iyi kullanıcı deneyimi olarak geri dönecektir. Native uygulama yazmanın en avantajlı noktası da budur, bir yazılım geliştirici gözünden bakmak gerekirse bütün uygulamalarımızı müşteriyi memnun etmek ve ona uygulamamızı sevdirmek için yazıyorsak native bu konuda tamamen bizimle aynı düşüncede.

2. HTML5 Mobil Uygulamalar

HTML5 mobil uygulamalarda temelde birer web sayfası yada bir grup web sayfasından oluşur. HTML5 mobil uygulamalar bu nedenle cihaz bağımsızdır ve tüm modern browserlar tarafından kullanıcıya gösterilebilir. HTML5 uygulamarında tüm içerik internet üzerinde olduğundan bunun arama motorları tarafından indexlenme ve arama sonuçlarında gösterilmesi yapacağınız uygulama için kritik bir öneme sahip olabilir, mesela bir alışveriş uygulaması yapacaksanız.

Eğer daha önceden web uygulaması geliştirme tecrübeniz varsa mobil uygulamanızı HTML5 kullanarak yapmanız daha faydalı olabilir ve çok daha hızlı bir şekilde sonuca gidebilirsiniz. Eğer HTML5 ve web konusunda tecrübeniz yoksa direk native uygulama yazmayı öğrenmek sizin için daha faydalı olabilir. Özellikle Android söz konusu olduğunda, farklı ekran boyutları ve farklı çözünürlüğe sahip pek çok cihaz bulunduğu için yapacağınız HTML5 mobil uygulamanın farklı cihazlarda nasıl göründüğünü test etmeniz kötü kullanıcı deneyimi yaşatmamak ve kullanıcılarınızı kaçırmamak adına sizler için faydalı olacaktır.

HTML5 mobil uygulamalar write-once-run-everywhere mantığı ile yazıldığından cihaz bağımsızdır ve uygulamanızı tamamladığınız zaman her çeşit mobil cihaz kullanıcısına aynı anda ulaşma şansına sahip olursunuz. Kullanıcının uygulamayı kendi platformunun uygulama mağazasından indirip kurması ve ara ara uygulamayı güncellemesi gerekmez, mobil cihazın browserından uygulama adresini yazdığı zaman hep uygulamanın en güncel versiyonunu görecektir.

HTML5 uygulama geliştirirken web uygulama geliştirme ailesinin tüm nimetlerinden faydalanma şansınız olacaktır. Javascript ile yazılmış tonlarca kütüphaneyi ve CSS’in tüm görsel gücünü deneyiminiz ve bilginiz el verdiği derinlikte kullanma imkanına sahip olursunuz.

Peki bütün saydığımız bu iyi görsel özellikler ve kütüphane çeşitliliğine rağmen web mobil uygulama geliştirme yaklaşımı nerede kaybediyor ? Tabiki performans ve native uygulamaların sağladığı akıcı grafik deneyimi. Mobil web teknolojisinde pek çok görsel kütüphane ve fonksiyonel komponent sağlayan tool olmasına rağmen yine de native yaklaşımının sunduğu görsel akıcılığı ve performansı yakalayamamıştır. Ayrıca bunun yanında adres defteri, takvim, geo******** gibi pek çok mobil hayatın vazgeçilmezi olan uygulama halen web uygulamaları ile etkileşim kuramamaktadır. Bunun yanında mobil web uygulamaları offline yani cihaz internete bağlı değilken çalışmamakta ve pek çok güvenlik açığını barındırmaktadır. Özellikle kurumsal ve veri güvenliğinin önemli olduğu uygulamalarda (mobil bankacılık uygulamaları gibi) native uygulamaların sağladığı şifreli veritabanı kullanma imkanı mobil web uygulamalarında bulunmamaktadır. Bu nedenle güvenliğin önemli olduğu bir uygulama yapmak istiyorsanız native yaklaşımını tercih etmek daha faydalı olacaktır.

3. Hibrid Mobil Uygulamalar

Hibrid uygulama geliştirme yaklaşımı native ve web uygulama geliştirme yaklaşımlarının avantajlarını bir arada kombin etme imkanı sunan yaklaşımdır. Hibrid yaklaşımında native uygulama içerisinde açılan sınırlandırılmış bir browser aracılığı ile web uygulamalar gösterilmekte ve böylece hem native uygulamanın hem de web uygulamanın artılarından faydalanılmaktadır. Burada browser içinde gösterilen web uygulaması internette bir yerlerde sunucuda da saklanabilir, hibrid uygulamanın içine statik olarak da gömülebilir. Eğer farklı alanlarda (Web ve native konusunda) tecrübeye sahip bir ekibiniz varsa ozaman sonuca daha hızlı ulaşmak adına hibrid geliştirme sizin için daha doğru bir tercih olabilir.

Sonuç

Sonuç olarak her yaklaşımın kendi içinde artıları ve eksileri bulunmakta. Her altı ayda bir yeni özelliklere sahip bir mobil işletim sistemi ve birbirinden donanımlı mobil cihazlar üretilmekte. Hangi yaklaşımı seçeceğiniz konusunda yapacağınız uygulamanın fonksiyonel özellikleri, hedeflediğiniz kullanıcı kitlesi, yazılımı yapacak olan ekibin bilgi ve beceri düzeyi, zaman ve bütçe maliyetleri gibi pek çok belirleyici etken olacaktır. Burada önemli olan tüm bu yaklaşımların limitlerini bilmek ve ihtiyacınız doğrultusunda onu kullanmaktır.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.