İlk yazımı mobil ile ilgilenen ya da ilgilenmeyi düşünen, hemen hemen herkesin aklına gelen, kesin ve net bir cevabı olmayan “Native mi, Hybrid mi?” sorusuna cevap aramak için yazmak istedim.

İlk olarak her konuda olduğu gibi terimleri açıklayarak başlayalım. Native uygulamalar, üzerinde çalıştığı platformun yazılımsal ve donanımsal tüm imkanlarına doğrudan erişebilen, cihazın kendi ana platformu tarafından desteklenen bir dille yazılmış uygulamalardır.

Hybrid uygulamalar ise tek bir kod ile yazılan ve birden fazla platformda çalışabilen uygulamalardır. Temel olarak bu uygulamalar pek çoğumuzun bildiği gibi HTML, CSS ve JavaScript veya JavaScript temelli frameworkler üzerine inşa edilerek her platforma uygun çıktılar alınarak çalıştırılırlar. Hybrid uygulamalar Native uygulamalar gibi sistem kaynaklarına doğrudan değil, bir ara katman aracılığıyla erişirler. Cross-platform uygulama geliştirme olarak da adlandırılan hybrid uygulamanın temel hedefi tek bir dil kullanarak native benzeri uygulamalar üretmektir.

Buraya kadar olan kısmı dikkate aldığımızda Hybrid uygulama kulağa çok daha mantıklı geliyor “bir kez yazarım tüm platformlarda çalışır”. Şu ana kadar hybrid’in artıları var gibi ancak net bir karar vermeden önce bir de konuyu native uygulama yönünden ele alalım artıları eksileri nelerdir bakalım.

Native uygulama,- benim de üzerinde çalıştığım ve çalışmaktan keyif aldığım bir IOS uygulaması-geliştiriyorsak, Apple’nın bize sunduğu ve IOS işletim sistemine uygulama geliştirmek için bilmemiz gereken Objective C veya Swift uygulama geliştirme dilini öğrenmemiz gerekiyor. Eğer android için native uygulama geliştiriyorsak bu dil Java olacaktır. Ayrıca IOS için Xcode, android için ya Android Studio ya da Eclipse veya Netbeans gereklidir. Bunları bir şekilde tamamladığımızı düşünelim, yazılım bilgisi olarak eksiğimiz yok, her türlü kodu yazabilecek seviyedeyiz ancak bitti mi diye sorarsanız cevabı hayır. Eğer IOS için native uygulama geliştireceksek Mac OSX işletim sistemli bir macbook bilgisayarımızın olması şart. Bu gereklilik Hybrid uygulamaya göre daha fazla maddi kaynak ve iş gücü gerektirmesi bakımından olumsuz bir yön olarak nitelendirilebilir. Ancak native uygulamaların bir çok olumlu yönü de var. Performansının yüksek olması, görsel olarak işletim sistemine tam uyumlu arayüzlere sahip olması, kontroller, işletim sistemine tam uyumlu olması ve açık tüm kaynaklara doğrudan erişme olanağı uygulamanın sıralanabilecek olumlu yanlarından bazılarıdır. Buraya kadar olan kısmı toparlamak gerekirse;

Hybrid uygulama geliştirmenin artıları:

  • Kodu bir kez yazarak, aynı uygulamayı her platformda çalıştırabiliriz
  • Bakım ve güncelleme maliyeti daha düşüktür. Çoğu zaman tek bir yazılımcı ile tüm platformlarda uygulama yayınlama imkanı vardır
  • Tek kod, tek tasarım, tek proje ile daha kısa zamanda uygulama yapma imkanı sağlar Hybrid uygulama geliştirmenin eksileri:
  • Uygulamada gözle görülür yavaşlıklar olabilir.
  • Hybridin görsel olarak native uygulamadan gözle görülür seviyede geride kalması, platform farklılıklarından doğan özgünlüğü yakalayamaması
  • Apple ve Google’ın çıkaracağı yeni sürümlerde ortaya çıkan uyuşmazlıklara geliştirdiğimiz platformun geliştiricilerinin hızlıca çözüm bulamaması.
  • Hybrid uygulamalar için kullanılan IDE’ lerin geliştirme ortamlarının birbirinden çok farklı olması IDE değişikliğinde ciddi farklılıklarla karşı karşıya kalmanıza neden olabilir platformu tanımak alışmak vs zaman alabilir. Sonuç olarak kısaca toparlayalım. Native mi hybrid mi sorusuna benim cevabım:
  • Eğer çok büyük kitleye uygulama geliştiriyorsak,
  • Uygulamamız telefonun yada tabletin özelliklerini çok fazla ve etkin bir şekilde kullanıyorsa,
  • Uygulama sadece veri alıp göstermek dışında daha karmaşık işler yapıyorsa
  • Uygulama için görsellik ve performans olmazsa olmazınız ise tercihiniz Native uygulama olmalıdır. Ancak;
  • Eğer basit şekilde veri çekip ekrana basıyorsak,
  • Görsel çok fazla önemli değil ise,
  • Maddi olarak bütçe az ya da tüm platformlara ayrı ayrı uygulamayı yazacak benim gibi bir çalışanınız yoksa,
  • Kısa sürede uygulamayı geliştirmek istiyorsanız
Hybrid uygulama seçimi mantıklı olacaktır.