Cross Platform Mobil Uygulama Geliştirme ve Apache Cordova/PhoneGap

2 Kasım 2012
Bu yazıyı beğendiysen paylaşmayı unutma :)
Pin It

Mobil ve mobil uygulama geliştirme hiç şüphesiz günümüzün en popüler konularından biri. Özellikle Android ve iPhone/iPad geliştirme bu konuda tam bir motor görevi üstleniyor. Her iki işletim sistemi içinde uygulama geliştirmek istiyorsanız ya iki konuda da uzmanlaşmanız ya da ortaya hibrid bir uygulama çıkarmanız gerekiyor.

Bu yazı da mümkün olduğunca native, hibrid ve web uygulama geliştirme arasındaki farklılıklar, üstünlükleri, özellikleri gibi pek çok konuya değinmeye çalışacağım.

Konumuza cross platform mobil geliştirme ortamlarındaki teknoloji yaklaşımlarına bir göz atarak başlayalım..

Cross Platform Araçlarının Teknoloji Yaklaşımları

1. JavaScript Frameworks

Tarayıcı uyumluluğuna sahip, dokunmatik ara yüzler oluşturabileceğiniz fonksiyonlar sunar.

Örnekler: jQuery Mobile, Sencha Touch, Cocos2D, DHTMLX Touch, Zepto JS, ImpactJS, LimeJS

2. App Factories (Uygulama Fabrikaları)

Create your own app” – Kendi uygulamanı kendin yarat tarzındaki ürünlerdir. Görsel tasarım araçları ile mobil uygulama geliştirmeyi sağlarlar.

Örnekler:  AppMkr, Wix Mobile, Tiggzi, Mobile Nation HQ, Mobjectify, Spot Specific, Red Foundry, Games Salad

3. Web-to-native wrappers (Web’ten yerli uygulama oluşturma)

Web uygulamalarının HTML, CSS ve Javascript’ten oluşan web kodunun paketlenebilir bir yerli uygulama haline getirilerek kullanılmasını sağlar. Böylelikle yerli uygulamaları yapabildiği pek çok özelliğe sahip olması sağlanır. Ayrıca bu işlem uygulamaların Uygulama dükkanlarında yayınlamasını da sağlar.

Örnekler: Adobe (PhoneGap),Uxebu (Aparrat.io), Sencha (Touch v2), MoSync (Wormhole)

4. Runtimes (Çalışma zamanı uygulamaları)

Örnekler: J2ME, Adobe Air, Ansca Mobile (Corona), AppMobi, Antix, Unity, Appcelerator, Xamarin

5. Source code translators (Kaynak kod çeviricileri)

Bu çözümde kaynak kodun bytecode, yerel dil veya direkt olarak makine düzeyi koduna çevrilmesi ile hazırlanır.

Örnekler: MoSync, Eqela, Marmalade, Bedrock, XMLVM

Uygulamanın Web ya da Native olmasının avantajları neler?

İki uygulama şekli arasındaki en önemli fark native uygulamaların aygıtın yerel işlevlerine yüzde yüz erişim sağlaması ve daha performanslı olmasıdır. Ancak PhoneGap gibi Web-to-native wrappers uygulamaları burada  olduğu gibi pek çok farklı işletim sisteminde, aygıt yerel işlevlerinin pek çoğuna ulaşabilmektedir.

Buna karşın web tabanlı geliştirmenin de aynen İnternet uygulamalarının geliştirilmesinde olduğu gibi tarayıcı farklılıklarından ötürü sıkıntıları bulunmakta. Örneğin; HTML5test.com üzerinden 20.02.2012 tarihli yapılan mobil tarayıcılar HTML5 desteği testinde aşağıdaki sonuç ortaya çıkmıştır.

Not: Test Maksimum 475 puan üzerinden gerçekleştirilmiş.

Bu test sonuçlarının daha güncel halini siz de aynı site üzerinden gerçekleştirebilirsiniz.

Gerçekleşecek uyum sıkıntıları için en önemli case, Ocak 2012’de Financial Times tarafından satın alınan ve yoluna FT Labs olarak devam eden Assanka’nın Financial Times uygulamasıdır. Financial Times’ın HTML5 ile yapılmış olan haber okuma uygulaması iPad için 12, Andorid için 12 olmak üzere toplam 24 aylık bir zaman içerisinde tamamlanabilmiştir.

Web ve Hibrit uygulamaların mimarisi

Mimarinin bu şekilde kurulmuş olması, hibrit uygulamalarının her ne kadar web çalıştırsa da, cihaz üzerine native uygulamalar gibi marketten indirilme, widget ve uygulama olarak kullanabilme gibi özelliklere sahip olmuş olur. Bu özelliği ile hibrid uygulamalar, tam da ismine yakışacak şekilde web ve native uygulamalar arasında gerçek bir ara yapıdadır.

Ne yapmak istiyorsunuz? Ne kullanmalısınız?

VisionMobile’ın Cross Platform Developer’lar arasında yapmış olduğu araştırma da ortaya aşağıdaki gibi oldukça pratik bir tablo ortaya çıkmış.

Örneğin; Eğer siz XXX iseniz ve XXX yapmak istiyorsanız XXX kullanın. Boşlukları kendi ihtiyacınıza göre doldurarak, kullanmanız için en uygun cross platform mobil uygulama geliştirme araçları hakkında bu şekilde bilgi sahibi olabilirsiniz.

Umarım buraya kadar cross platform mobil uygulama geliştirme araçlarının teknoloji yaklaşımları, özellik, farklılıkları, mimarisi ve size uygun mu? sorusunun cevabı hakkında fikir sahibi olmuşsunuzdur.

Şimdi gelin en popüler cross platform mobil uygulama geliştirme araçlarının başında gelen Apache Cordova ya da nam-ı diğer PhoneGap‘i yakından tanıyalım.

Apache Cordova ya da PhoneGap Nedir?

Cordova‘yı basitçe HTML5, CSS3 ve Javascript ile farklı platformlarda mobil uygulamalar hazırlamanızı sağlayan Javascript SDK’sına verilen isim olarak tanımlayabiliriz. Daha genel olarak ise günümüz web teknolojilerini kullanarak farklı mobil platformlar için uygulama geliştirmenizi sağlayacak geliştirme kiti olarak söz edebiliriz.

Apache Cordova ne amaçla geliştirildi? Dünü ve bugünü nedir?

Mobil ile ilgilenenler için Apache Cordova ismi yerine PhoneGap çok daha tanıdık gelecektir. Bu yüzden yazının bu bölümünde PhoneGap ismini kullanacağım.

En popüler cross platform development araçlarından biri olan PhoneGap, yaklaşık 20 çalışanı ile Kanada, Vancouer merkezli bir web ve uygulama geliştirme firması olan Nitobi tarafından geliştirilmiştir.

PhoneGap, native uygulamalar sunmak için web geliştirme becerilerini kullanmak amacıyla 2008 yılında düzenlenen iPhoneDevCamp etkinliğinde doğdu. Hemen akabinde 2009 yılında Web 2.0 Expo LaunchPad yarışmasını kazandı ve open source (MIT) lisansı altında yayınlandı.

Son olarak Ekim 2011 yılında Nitobi‘nin Adobe tarafından satın alınmasından sonra Apache Yazılım Vakfı’na (Apache Software Foundation) bağışlandı ve “Apache Cordova” ismini aldı. Bu yüzden başta da belirttiğim gibi daha önce ilgilenenler Apache Cordova’yı PhoneGap olarak hatırlayacaklardır.

Bu projenin partnerleri ve önemli katkı sağlayanları arasında IBM, Sony Ericsson, Symbian, Palm, RIM ve Sencha’da yer alır.

Cordova nasıl çalışır?

Tanımında da belirttiğim gibi Cordova, günümüz web teknolojilerini kullanarak farklı mobil platformlar için uygulama geliştirmenizi sağlayacak bir geliştirme kiti. Tam da bu özelliğine uygun olarak iOS, Android, Blackberry, Symbian, Bada, Windows Phone 7 gibi pek çok mobil platform için native uygulama geliştirebilirsiniz.

Burada ifade ettiğim “native” bilgisi uygulama mağazalarında satılabilmesi anlamına geliyor. (Daha iyi kavramak adına yazıdaki “Web ve Hibrit uygulamaların mimarisi” başlığına yeniden göz atabilirsiniz.)

Yoksa uygulama geliştirme bir web uygulaması gibi HTML, CSS ve JavaScript gibi standart geliştirme ortamlarında gerçekleştiriliyor, Dreamweaver, NotePad++ ya da Eclipse gibi bir IDE ile geliştirmenizi yapabiliyorsunuz.

Geliştirilen bu kodlar Cordova kütüphaneleri ile paketlenerek native uygulama haline getirilip, hybrid web uygulaması olarak ortaya çıkar ve uygulama User Interface‘i bir WebViews olarak kullanılır.

Küçük bir bilgi daha.. Yine VisionMobile‘ın yapmış olduğu bir araştırmaya göre cross platform mobil geliştirmede Cordova, %32’lik payı ile lider durumdadır.

Avantajları, Dezavantajları, Özellikleri

– Cordova ile yazılan uygulamaları tüm platformlarda çalıştırmak mümkün.

– Ancak bunun için her platforma ayrı derleme ve gerekli uyarlamaların yapılması gerekiyor. Her bir cihaz için tekrardan o cihaza uygun yapıda geliştirme yapılması gerekiyor.

– Cordova, Native ile Web uygulamaları arasında bir köprü durumunda olmasında dolayı hem uygulama marketlerinde yer alabilir, hem de web uygulamalarının yeteneklerini kullanabilir.

HTML5‘in gücünü kullanarak sistem kaynaklarına erişmek teorik olarak bir dereceye kadar mümkün. Ancak burada dikkat edilmesi gereken nokta, Cordova’nın bu işlemi yaparken native uygulama içerisinden erişim yetkilerini alarak HTML5‘e aktarmasıdır.

Cordova ile uygulama yapmak bir web uygulaması yapmak DEĞİLDİR. Uygulama HTML5, JavaScript ve CSS3 kullanılarak yazılıyor olsa da oluşan yükleme dosyası native’dir. Örneğin; Android sürümü için bir APK dosyası oluşur. (Teknik Detay: Android için Activity’nin tek yaptığı bir html dosyasını yüklemektir. Activity’nin DroidGap sınıfından türediği rahatlıkla gözlemlenebilir. Bunun için aşağıdaki örneğe göz atabilirsiniz.)

public class MainActivity extends DroidGap{
        public void onCreate(Bundle savedInstanceState){
             super.onCreate(savedInstanceState);
             super.loadUrl("file:///android_asset/www/index.html");
        }
}

Cordova hakkında kısa bilgiler

– Ücretsiz ve açık kaynak kodlu.

– Geliştiriciler için resmi sitesinde yeterli ve zengin dokümasyon desteği veriliyor.

– Açıklanan rakamlara göre Cordova SDK’sı  600K’den fazla indirilmiş durumda.

Netflix, LinkedIn ve Ars Technica Reader for iPad Cordova ile yazılmış.

– Cordova ile geliştirilmiş uygulamalar hakkında fikir sahibi olmak açısından http://phonegap.com/app adresini ziyaret edebilirsiniz.

Cross Platform Developer Tools 2012 raporuna göre %61 ile “Hedef Platformlara Erişim” Cordova’nın en önemli seçim nedeni.

Cross Platform Developer Tools 2012 raporuna göre native uygulamalar,  cross platform uygulamalardan hız ve performansa göre her zaman bir adım önde. Araştırma katılımcılarının %29’u ilk sırada bu durumu belirtiyor.

Şimdilik benden bu kadar. Umarım cross platform mobil uygulama geliştirme ve Cordova ile ilgili yeterli bilgi verebilmişimdir. Konunun devamı olarak bir sonraki yazımda Cordova geliştirme ortamının kurulması ile devam edip, adım adım Cordova ile mobil geliştirme nasıl yapılacağı hakkında yazılarıma devam edeceğim.

Benzer Yazılar


DeliPenguen'i Google+'da bulun



  1. teoman
    4 Şubat 2014 - 18:22

    yazilarinizi takip etmeye basladim, cok akici ve bilgilendirici. tesekkurler.

  2. Özgūr
    17 Eylül 2015 - 18:28

    Merhaba
    Adobe dreamweaver ve phonegap ile veritabanlı mobil uygulamalar geliştirirken php scrlpti kullanabilirmiyiz?

    • :DeliPenguen
      18 Eylül 2015 - 17:07

      Merhaba. Hayır, kullanamazsınız. Web’in ve Mobil’in dinamikleri birbirinden çok farklıdır. PhoneGap/Cordova’nın Web’e benzeyen tek tarafı aynı temel teknolojileri kullanıyor olmasıdır.

  3. İbrahim
    20 Ekim 2015 - 16:04

    Selam.

    Phonegap ile UDP protokolü kullanarak kamera ve tcp kullanarak mesajlaşma sistemleri yapmak mümkün mü? Eğer mümkünse performansı ne derecededir?
    Teşekkürler.