Mobil uygulama geliştirirken neye benzemesi gerektiğini, verilerinizi, iş modelinizi, iş gücünüzü biliyorsunuz ama teknolojiye karar veremediniz. Hangisi sizin için en doğrusu?
Mobil yatırım yapacak pazarlamacıların ilgisini çekecek ve uygulama hazırlarken karar verecekleri dili seçmelerini kolaylaştıracak konuya, mobilike’ın her çeyrekte yayınladığı madreport Q1 2013 sayısında yer veriliyor.
Uygulama geliştirmek için onlarca yol mümkün; hazır uygulama geliştirme çözümlerinden, kiralık üçüncü parti geliştiricilere, “her yerde” çalıştığı iddia edilen HTML teknolojilerden, açık ara daha performanslı olduğu söylenen Native kodlamaya, akıllı TV’ler dahil her donanıma girebilen fakat anlaması zor teknolojilere kadar uzun bir liste var.
Mobil uygulamaların büyük çoğunluğunun yapısal olarak birbirine benzediği aşikar. Görece küçük bir ekran üzerinde belirli bir içeriği okuyabilmenin zorluğu, kullanıcı alışkanlıkları ve popüler biçimler, ister web içeriği sunan bir haber uygulaması düşünün, ister bir multimedia uygulaması tasarlayın, isterseniz bir e-ticaret çözümü planlıyor olun sizi ve tasarımcılarınızı kendini kanıtlamış önyüzlerden birini seçmeye doğru itiyor. Fakat bu uygulama tamamen HTML5 ve Javascript ile geliştirilmiş bir mobil web uygulaması mı olmalı, yoksa tamamen Native mi geliştirilmeli? Bu teknolojilerin hibrit bir formda kullanılması da mümkün. Peki bu seçeneklerin birbirlerine göre avantaj ve dezavantajları nelerdir?
HTML5
Web’in bu günlere gelmesini sağlayan HTML’in yeni sürümü olarak nitelendirebileceğimiz HTML 5, CSS3 ve JavaScript kütüphaneleri doğal olarak tüm browser ve cihazlar tarafından destekleniyor. Yaygın cihaz tarayıcıları web içeriğinin yorumlanması konusunda minör farklılıklar gösterse de, web standartları halen en yaygın önyüz ve uygulama geliştirme standardıdır. Ayrıca ses-video, web depolama (web storage), konum belirleme gibi tarayıcı destekli özellikleri onu avantajlı kılıyor. (1)
Özellikleri;
•Tüm tarayıcılar tarafından desteklenir. (Ufak farklar için ihtiyaç duyduğunuz ek geliştirme, her platforma özgü native kodlama ile karşılaştırılamayacak kadar azdır.)
•Daha az masraflıdır. (Hali hazırda çok sayıda HTML UI geliştiricisi bulunmakta, bu iş için birçok hazır araç da mevcut.)
•Geliştirmesi ve üzerinde güncelleme yapılması daha kolaydır.
•Uygulama güncellemesi son kullanıcıyı etkilemez.
•Uygulamaların cihazda veri depolamasına izin verir.
•Video ve ses özellikleri kullanılabilir.
•Donanım özelliklerinin bir çoğu kullanılmaz.
•İşlemci hızı önem arz etmez. (Büyük ölçüde, zaten temel kısıt burada tarayıcının Javascript’i işleme hızıdır ki, bu sınır her web uygulaması için aynı olacaktır.)
•Çevrimiçi çalışır.
•Bulunduğu sunucu içerisinden veri tabanı erişimi yapılabilir.
Native Uygulamalar
Native uygulamalar cihaza özel olarak geliştirilen uygulamalardır. Her platform için kendi geliştirme dilinde yazılır ve donanımın imkanlarını daha iyi kullanır. Her cihaz için ayrı uygulama yazılacağından HTML5’e göre daha fazla vakit alan ve daha zahmetli bir yöntemdir. Güncelleme yapılabilmesi HTML5’e göre daha zordur ve son kullanıcının uygulamanın son versiyonuna erişebilmesi için güncellemeyi yüklemesi zorunludur.
Cihaza özel geliştirilen uygulamalara örnek olarak App Store, BlackBerry AppWorld, Google Play Store verilebilir.
Özellikleri;
•Donanım ve lokasyon ihtiyacında kullanılabilir. (HTML5 uygulamaları içerisinde tarayıcı API’leri ile eriştiğiniz özellikler artık daha yakındır. Konum güncelleme hızı ve kesinliği gibi noktalarda avantajlıdır.)
•İşlemci hızının önemli olduğu uygulamalarda kullanılır. (Eğer geliştirici kabiliyetleriniz yüksek ise uygulamalarınız da iyi olacaktır.)
•Cihazda veri saklanabilir. (Tarayıcı cookie alanları yerine, uygulama kaldırılmadığı sürece veri saklayabilecek alanlarınız vardır.)
•Cihaza özel uygulamalar yapıldığından cihazın tüm özellikleri kullanılabilir ve böylece daha kompleks ve gelişmiş uygulamalar yazılabilir.
•Çevrimdışı çalışır.
•Güncellemeler son kullanıcıyı etkiler.
•Geliştirmesi masraflıdır.
Hibrit (Hybrid) Uygulamalar
Hibrit uygulamalar Native ve HTML5’in karışımından meydana gelen uygulamalardır. Tıpkı Native uygulamalarda olduğu gibi cihaza özel geliştirilir ve HTML 5’de olduğu gibi web teknolojisi kullanılarak yazılır. Bu şekilde iOS, Android, Blackberry, Symbian gibi platformlarda da web teknolojisi kullanılarak uygulama geliştirmek mümkün olur. Böylece web teknolojisi ile geliştirilen bir uygulama, uygulama mağazasında satılabilir. Hibrit uygulama yapmak için PhoneGap, PhoneGap Build, Titanium, Kendo UI, Sencha gibi geliştirme yöntemleri kullanılanılır.
Hibrit uygulamalar ile daha az masraf ile daha iyi bir performans elde etmek mümkün olur.
Özellikleri;
•Tüm platformlarda çalışıyor fakat her bir platform için gerekli uyarlamaların yapılması gerekiyor.
•Hibrit uygulamalar, hem uygulama mağazasında yer alıyor hem de web uygulama özelliklerini taşıyorlar.
•Native uygulama içerisinden erişim yetkileri alınarak HTML5’e aktarılıyor. Böylece sistem kaynaklarına ulaşılabiliyor.
•Çevrimdışı da çalışıyor.
Hibrit uygulamaların desteklediği donanım sistemlerini şu şekilde sayabiliriz;
•Akselerometre
•Kamera
•Pusula
•Takvim
•Bağlantı
•Kişiler
•Lokasyon
•Dosya
•Depolama
•Medya
•Ağ
•Uyarılar
•Depolama
•Barkod Okuma
Yukarıda verilen özelliklerin kullanılabilirliği platformdan platforma değişiklik gösteriyor. Örneğin iOS ve Android tüm erişimlere izin verirken, Symbian pusula erişimine izin vermiyor. Bu yüzden Hibrit bir uygulama yaparken her platformun özelliğine göre ayarlama yapmak gerekiyor.
Üç uygulama geliştirme yönteminin karşılaştırmasını yaparsak;
Doğal | HTML5 | Hibrit | |
Uygulama Özellikleri | |||
Grafik | Doğal Uygulama Arayüzü | HTML, Canvas, SVG | HTML, Canvas, SVG |
Performans | Hızlı | Yavaş | Yavaş |
Doğal görünüm | Doğal | Benzetilmiş | Benzetilmiş |
Dağıtım | Uygulama Mağazası | Web | Uygulama Mağazası |
Cihaza Erişim | |||
Kamera | Evet | Hayır | Evet |
Bildirimler | Evet | Hayır | Evet |
Kişiler, Takvim | Evet | Hayır | Evet |
Çevrimdışı Depolama | Güvenli Depolama | Paylaşılmış SQL | Güvenli Depolama, Paylaşılmış SQL |
Lokasyon | Evet | Evet | Evet |
El Hareketleri | |||
Ekranı kaydırmak | Evet | Evet | Evet |
Ekranı küçültmek ve büyütmek | Evet | Hayır | Evet |
Bağlantı | Çevrimiçi ve çevrimdışı | Genellikle online | Çevrimiçi ve çevrimdışı |
Geliştirme yöntemleri | ObjectiveC, Java | HTML5, CSS, Javascript | HTML5, CSS, Javascript |