MOBİL UYGULAMA GELİŞTİRME YÖNTEMLERİ

 

  • Mobil uygulama geliştirmek istiyorum, nereden başlamalıyım? Hangi dilleri öğrenmem gerekiyor?
  • Şirketimizin bir mobil uygulaması olmasının vakti geldi de geçiyor bile. Peki, Android, IOS ve Windows Phone için ayrı uygulamalar mı geliştirmemiz gerekiyor?
  • “Şirketimize mobil uygulama geliştirici ekip arkadaşları arıyoruz. Başvuracak adayların Android, Apple IOS ve Windows Phone tabanlı cihazlara… C, Objective C, Swift XCode, Java (Dalvik VM), Java (J2ME), C++, Phyton, HTML/CSS/JS, .NET, Web servisleri/REST API, MVC ve XML/JSON, CSS3, Javascript, HTML5, AngularJS, NodeJs, ExpressJS, WS, Socket.io, OOP, konularında deneyimli HTML5, CSS3, JQuery ve Bootstrap ile Responsive arayüzler geliştirebilmesini istiyoruz.“ Henüz birinci sınıftayım. Bu dillerin hepsini öğrenebilirim de ben öğrendikçe sanki yenileri eklenecek bu listeye J Bu işin kolay bir yöntemi yok mu peki?

Yukarıdaki sorulara benzer sorular hepimizin aklından geçiyordur. Öğrenci isek nereden başlamalıyım, işveren isek bu yeteneklerin hepsinin olduğu birisini bulsam da mobil uygulama geliştirmek için daha az kişi çalıştırsam, işletme isek bir uygulama yaptırayım bütün platformlarda çalışabilsin, beni çok uğraştırmasın diyoruzdur.

Bu yazımızda uygulama geliştirme pazarı ile ilgili rakamsal veriler, mobil uygulama geliştirme platformları ve tabi ki soruların cevaplarını bulmaya çalışacağız.

Rakamlar ile Mobil Uygulama Geliştirme Pazarı

Gün geçtikçe masaüstü uygulamalar yerini mobil uygulamalara bırakmaya başladı. Gelecek yıllarda teknolojik gelişmeler ile birlikte internet tabanlı uygulamalar mobil cihazlar ile tamamen bütünleşeceği kesin gibi. E-ticaretten, borsa işlemlerine, oyun sektöründen sağlık sektörüne kadar birçok alanda kullanılan mobil uygulamalar hemen hemen her yaştan insanın hayatına dokunmuş durumda. Peki, mobil uygulama geliştirme pazarının büyüklüğünü rakamlar ile açıklamaya çalışalım.

  • Dünya üzerinde 1,5 Milyardan fazla akıllı telefon kullanıcısı bulunmakta,
  • 2016 yılı sonu itibari ile mobil uygulama marketlerinden indirilen uygulama sayısı yaklaşık 150 Milyar,
  • Bireylerin mobil uygulamalarda harcadığı ortalama süre bir önceki yıla göre %63 artış gösterdi.
  • Mobil cihaz kullanıcılarının uygulamalarda harcadıkları süre günlük 1-5 saat arası değişmekte,
  • Mobil uygulama marketlerinin 2016 yılı pazarı yaklaşık 50 milyar doları iken bu rakamın 2020 yılında 101 milyar dolar olması beklenmekte,
  • İşletmelerin %68’i mobil platformlar üzerinden pazarlama stratejileri geliştirmekte,
  • Mobil cihazlar ile arama motorlarından yapan kullanıcıların oranı %48,
  • Hali hazırda bankacılık işlemlerinin %35’i mobil platformlar üzerinden yapılmakta,
  • Türkiye’de sosyal medya uygulamalarının mobil platformlar üzerinden kullanılma oranı %43,
  • Türkiye’de oyun uygulamalarının mobil platformlar üzerinden kullanılma oranı %28,
  • 2017 yılı sonu itibari ile mobil marketlerden indirilecek uygulama sayısının 255 Milyar, Pazar büyüklüğünün ise 77 milyar dolar olması beklenmektedir.

Şekil 1 2012-2017 Yılları Uygulama Marketlerinden İndirilen Uygulama Sayısı (Kaynak:Statista.com)

Şekil 2 2011-2017 Yılları Arası Mobil Uygulama Pazarı – Milyar $ (Kaynak: Statista.com)

Yukarıdaki şekilde ve istatistiklerdeki rakamlar gösteriyor ki bir şekilde mobil uygulama geliştirmeliyiz. Bu işte gelecek var J Ama nereden nasıl başlamalıyım? Hangi mobil cihaza hangi platform ve hangi dili bilmem yeterli olur?

 

Mobil Uygulama Platformları

Geliştirilen mobil uygulamanın etkili bir şekilde kullanılabilmesi, gereksinimlere cevap verebilmesi için;

  • Performans,
  • Anlaşılabilirlik,
  • Görünüm ve etkileşim (kullanıcı dostu arayüzler),
  • Uygulama güvenliği
  • Stabilite,
  • Geliştirme, test ve bakım süreçleri,
  • Yeni geliştirmelere destek,
  • Kullanılacak platform ve eklenti desteği

gibi birçok kriter saymak mümkündür. Bu açıdan bakıldığında günümüzde mobil uygulama geliştirirken teknolojik altyapıya uygun çözümler üretilmektedir. Mobil uygulama geliştirilirken projenin yapısına göre yerel (native), melez (hybrid), uyumlu (responsive) ve çapraz (cross) yapılar kullanılmaktadır.

Yerel (Native) Mobil Uygulama Geliştirme:

Mevcut mobil cihazlar incelendiğimizde karşımıza Apple IOS, Google Android, Windows Mobile, RIM BlackBerry gibi işletim sistemlerine sahip olduklarını görmekteyiz. Bu cihazlar için geliştirilen uygulamalara Apple Store, Google Play, Windows Store gibi uygulama mağazalarından erişebilmekteyiz. Mobil uygulamaların farklı özellikteki cihazlar ayrı ayrı geliştirilmesine Yerel (Native) uygulama geliştirme çözümü olarak tanımlamaktayız.

O zaman ilk akla gelen soru ben native bir uygulama geliştirmek istiyor isem nasıl geliştireceğim ve hangi programlama dillerini bilmem gerekiyor sorusudur. Native bir uygulama geliştirmek için sahip olmanız gereken uzmanlıklardan birkaçını aşağıdaki tabloda bulabilirsiniz.

Tablo 1 Mobil Platforma Göre Bilmemiz Gereken Programlama Dilleri

Mobil Platformlar Programlama Dilleri 
Apple IOS C, Objective C
Google Android Java
Windows Mobile .NET, C#
Window 7 Phone .NET, C#
Symbian C, C++, Phyton, HTML/CSS/JS
RIM BlackBerry Java (J2ME)
HP Palm WebOS HTML/CSS/JS
Samsung Bada C, C++, HTML/CSS/JS
MeeGo C++

 

 

Yukarıdaki tabloda da görüleceği gibi native platformlarda mobil uygulama geliştirmek için platforma ve cihaza göre seçilecek programlama dilleri birbirinden farklı ve özel uzmanlıklar gerektirmektedir.

Native mobil uygulama geliştirmenin performans, özgün kullanıcı arayüzü tasarımı gibi avantajlarının yanında her platforma ayrı uygulama geliştirme gerekliliğinin beraberinde getirdiği maliyet, farklı becerilere sahip geliştiricilerin ekip içerisinde yer alması, geliştirme, test ve bakım süreçlerinin her platform için ayrı ayrı yapılması gerekliliği dezavantajları olarak ortaya çıkmaktadır.

Melez (Hybrid) Mobil Uygulama Geliştirme:

Melez (Hybrid) mobil uygulama geliştirme temel anlamda tek bir kodlama yapısının kullanılarak geliştirilen uygulamanın birden fazla mobil platformda (Apple IOS, Google Android vb.) kullanılabilmesi esasına dayanmaktadır. Hybrid mobil uygulama geliştirmek için genellikle HTML5, CSS3 ve JavaScript dilleri ile geliştirilen uygulama çözümleri karşımıza çıkmaktadır. Farklı platformlardaki farklı cihazlara uyum sağlayabilecek bir altyapı ile geliştirme yapılmaktadır. Hybrid olarak geliştirilen mobil uygulamalar genellikle mobil cihaz içerisindeki gömülü web tarayıcısı (browser) üzerinden çalışmaktadır. Hybrid mobil uygulama geliştirmenin maliyetinin Native uygulama geliştirmeye göre daha düşük olması avantajı olarak görülmekle beraber birçok dezavantajı da yanında getirmektedir. Mobil cihazların kaynaklarını etkin kullanamaması, gömülü web tarayıcının yeni sürümlerinde tüm mobil cihazlar için tek tek yazılmış kod parçalarının testinin yapılması gerekliliği, performans gerektiren karmaşık projelerde kullanımında ortaya çıkan sorunlar hybrid mobil uygulama geliştirmenin önündeki handikaplar olarak görülmektedir.

Uyumlu (Responsive) Mobil Platformlar:

Geliştirilen web sayfalarının, farklı ekran boyutlarına sahip mobil cihazlar üzerinde (cep telefonu, tablet vb) bir web tarayıcısı aracılığı ile düzgün bir şekilde görüntülenebilmesi için oluşturulmuş tasarım tekniğidir. Aslında geliştirilen web sayfasının mobil cihazlarda da sağlıklı çalışabilmesi için web tasarımcısı tarafından yapılan kodlamadan ibarettir. Fazla kod bilgisi ve becerisi gerektirmeden gerçekleştirilebilir. Bu yüzden uygulama marketlerinde yer almadan mobil platformlarda olmanın basit yoludur. Responsive tasarım HTML5, JavaScript, CSS gibi standart web teknolojileri kullanılarak geliştirilmektedir. Esnek tasarım teknikleri ile tasarlanmış yapı ile geniş kitlelere mobil cihazlar ile hızlı bir şekilde ulaşmak en büyük avantajı olarak saymak mümkündür. Ancak API’lere sınırlı erişim, uygulama marketlerinde bulunamama gibi dezavantajları bulunmaktadır. Kurumsal işletmelerin tercih ettiği bir yöntem değildir.

Çapraz (Cross) Mobil Platformlar

Ben sadede bir programlama dilinde mobil uygulama geliştirmek istiyorum ama geliştirdiğim uygulama Android, IOS ve WP’ler de çalışsın diyorsanız doğru çözüm Cross platformları seçmek olacak. Cross Platform kullanarak geliştirilen kod parçalarının Android, IOS ve WP’de derlenmesi mümkündür. Bu da bize uygulama geliştirme hızında ciddi avantaj sağlamaktadır. Ayrıca farklı platformlar için farklı yetenekteki geliştiricilere olan bağımlılık azalmaktadır. Cross mobil platform geliştirme araçları incelendiğinde yapılacak projeye göre farklı platformlar göze çarpmaktadır. Bunlardan bazıları:

  • Unity3D: Mobil oyun geliştirmek ya da etkileşimli oyun tabanlı eğitsel içerikler geliştirmek için tercih edilen oyun motoru olarak tanımlanabilir. C#, JS dillerini kullanarak on yedi farklı platformda kullanabileceğiniz uygulamalar geliştirmek mümkündür. Daha açık bir ifade ile Unity platformunu kullanarak geliştireceğiniz oyun herhangi bir altyapı değişikliği ya da düzenleme gerektirmeksizin masaüstü bilgisayarlar, web tabanlı uygulamalar, Android, IOS, WP, Playstation, Xbox vb gibi platformlarda kullanılabilir. Detaylı bilgiye https://unity3d.com adresinden ulaşabilirsiniz.

  • Xamarin: Yakın zamanda Microsoft tarafından satın alınan ve .NET / C# programlama dilini kullanarak Android, IOS ve WP’de mobil uygulama geliştirebileceğiniz oldukça güçlü bir Cross Mobil Platform geliştirme aracıdır. Xamarin, mobil uygulama geliştirmek isteyenler için geliştirme süreçlerinden test süreçlerine kadar komple bir çözüm sunuyor. Bu sayede geliştiriciler Xamarin’in sunmuş olduğu IDE (Tümleşik Geliştirme Ortamı) ile C# dilinde tek bir uygulama geliştirerek Android, IOS ve WP için aynı anda uygulama geliştirebiliyorlar. Aynı zamanda Xamarin’in Test Cloud aracı ile gerçekleştirdikleri uygulamaları gerçek cihazlar üzerinde test etme imkânı buluyorlar. Xamarin’in bir güzel özelliği de uygulamalara ait raporlamaların sunulduğu Xamarin Insights aracı. Xamarin kütüphaneleri Objective-C, Swift ve Javada yapılabilecek her şeyi destekleyecek kadar geniş tutulmuş. Xamarin, geliştiricilerin C# ile yazmış olduğu uygulama kodlarını App uzantılı IOS Arm Binary kodlarına dönüştürmek için Apple’ın AOT (Ahead of Time) derleyicisini kullanmaktadır. Yine geliştiricilerin C# ile yazmış olduğu uygulama kodlarını apk uzantılı Android IL+JIT uygulamasına dönüştürmek için kodlarına dönüştürmek için ise JIT (Just in Time) derleyicisini kullanmaktadır. Xamarin Cross Mobil Platform çözümünün mimari yapısı yukarıdaki şekilde görülmektedir. Detaylı bilgiye https://xamarin.com adresinden ulaşabilirsiniz.

  • PhoneGap: Adobe firmasının desteklediği Css, Html ve JavaScript geliştiricilerinin kullanabileceği OpenSouce kütüphanedir. Geliştirilen tek kod ile uygulama marketlere mobil uygulamanın yüklenebilmesinin mümkün olduğu platform geliştirme ve test süreçleri ile ilgili başarılı sonuçlar verirken native uygulama geliştirme noktasında kütüphanelere erişememesi PhoneGap’in dezavantajı olarak sayılabilir. Detaylı bilgiye http://phonegap.com adresinden ulaşabilirsiniz.

  • Sencha: Cross Mobil Platformalardan biriside Sencha’dır. Android, IOS, WP ve BlackBery marketleri için tek bir kod parçacığı ile uygulamanın geliştirilmesi Sencha Touch ile mümkün olabilmektedir. MVC yapısını destekleyen Sencha mimarisi Extjs kütüphanesi ile başarılı çözümler sunabilmektedir. Mobil uygulamanın büyüklüğü ve karmaşıklığına paralel olarak Sencha ile geliştirilen uygulamalarda performans sıkıntıları yaşanabilmektedir. Arayüzde değişiklikler noktasında sınırlı imkân tanıyan Sencha’nın bazı kontrollerin yapılamaması da dezavantajları arasında saymak mümkündür. Detaylı bilgiye https://www.sencha.com adresinden ulaşabilirsiniz.

  • Appcelerator Titanium: OpenSource olması dolayısı ile JavaScript kullanılarak Android ve IOS tabanlı uygulama geliştirenlerin tercih nedeni olabilmektedir. Appcelerator Titanium sitesinde sunduğu dokümantasyon gayet başarılıdır. Detaylı bilgiye http://www.appcelerator.com adresinden ulaşabilirsiniz.

 

Bir sonraki yazımızda “Platform Bağımsız Tüm Mobil Cihazlara Uygulama Geliştirmek için Çözüm: XAMARIN” adlı makalemizi bulacaksınız.

Share on FacebookTweet about this on TwitterShare on LinkedInEmail this to someone

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir