Mobil Uygulamalarda Hibrit ve Native Nedir ? Farkları Nelerdir ?

Akıllı telefonların hayatımızda yer edinmesi, tablet pazarının yükselişi, akıllı televizyonların çıkması ve en son giyilebilir cihazların da hızla yayılması ile mobil işletim sistemleri birçok platform ile hayatımıza bir şekilde dahil oldu. Bu sebeple artık kullanılan cihaz sayıları milyarlar ile ifade edilen Ios ve Android işletim sistemi firmaların ve geliştiricilerin ilgisini fazlası ile çekmekte. Yeni uygulamalar hazırlayarak  kolayca milyonlarca insana ulaşmanın artık mümkün olması ile birçok kişide mobil uygulama geliştirmeye ilgi duyuyor ve bu alana yönelmek istiyor. Peki, mobil uygulama geliştirmeye yeni başlayacak kişilerin ilk etapta karşılaşacağı Hibrit ve Native uygulama nedir, aralarında hangi farklar mevcut bu yazımda sizlere bu iki kavramı detaylıca açıklayacağım.

Ayrıca daha önce birçok mobil uygulama geliştirmenize olanak sağlayan teknolojinin bulunduğunu belirtmiş ve bunları sizlere Xamarin Nedir ? Avantajları ve Dezavantajları Nelerdir? adlı yazım ile tanıtmaya başlamıştım. Native ve Hibrit kavramlarını detaylandırmadan da diğer teknolojileri anlatmak istemedim, bu yazımızdan sonra yine mobil uygulama geliştirmemize imkan sağlayan teknolojileri size anlatmaya devam edeceğim.

Hibrit Uygulama Nedir ?

Web teknolojilerinin güçlenmesi ile artık HTML + CSS ve JavaScript üçlüsü ile hemen hemen her alanda çalışabilecek uygulamalar geliştirmemiz mümkün. Hibrit (Hybrid) uygulama kavramı da aslında buradan gelmektedir. Web teknolojilerinin güçlenmesi sonucu web geliştiricilerinin mobil alana kolayca uyum sağlaması amacı ile ortaya çıkan Hibrit uygulama kavramı son yıllardaki birçok yazılım teknolojisinde gördüğümüz; “bir defa yaz her yerde çalıştır” mottosuna hizmet etmektedir. Yazdığınız tek bir kod ile hem IOS hem de Android için uygulama yazmanızı sağlayan Hibrit kavramında uygulamalarınızı HTML + CSS ve JavaScript kullanarak kolayca geliştirebilirsiniz.

Tüm akıllı cihazların içinde bulunan WebView teknolojisine kodları import ederek her cihazda çalışan uygulamalar hazırlayabilirsiniz. Yani burada aslında yazdığınız uygulamaları Android veya Ios cihazların içinde tarayıcıda kullanıcıların anlamayacağı şekilde gösteriyorsunuz. Mantık olarak düşündüğümüzde her şey yolunda gibi gözüküyor bir kod yazıyoruz ve cihazların içindeki WebView’e gömüyoruz ve her yerde kolayca çalıştırıyoruz, peki hiç dezavantajı yok mu ?

Hibrit Uygulama Dezavantajları Nelerdir ?

Java ile Android veya Swift ile Ios uygulama geliştirirken iki katmanda çalışma yapıyoruz. Bunlardan altta bulunan işletim sistemi, üstünde ise yazdığımız kodlar bulunmakta. Böylece kolayca uygulama geliştirdiğimiz cihazın kamera, konum, internet gibi işletim sistemine ait özelliklerine erişip müdahale edebiliyoruz. Fakat Hibrit uygulamalarda işletim sistemi ile uygulama katmanları arasında bir katma daha eklemeniz gerekiyor bu katmadan API yani yazılım programlama yüzü ya da diğer ismi ile erişim anahtarı katmanı. Bu katmanın görevi ise eğer Hibrit bir uygulama yazıyorsak ve cihazın özelliklerine erişmek istiyorsak yardımcı oluyor bu da maalesef beraberinde performans kayıplarını getiriyor ki bu Hibrit uygulama geliştirmenin önündeki en büyük handikaplardan biri. Yani Hibrit uygulamalar Native uygulamalara göre performans noktasın daha geri planda. Ayrıca Web View ile cihazlarda çalıştırdığımız için arayüzde cihaz bütünlüğünü sağlamak daha zor ve genellikle sezgisel olmayan tasarımlar ortaya çıkıyor.

Native Uygulama Nedir ?

Native uygulama;  çalıştığı cihazın kaynaklarına doğrudan müdahale edebilen,  işletim sistemine özel makine kodlarına dönüştürülerek hazırlanmış uygulama demektir. Örnek vermek gerekirse Java ile yazdığınız Android uygulamaları veya Swift, Objective-C ile geliştirdiğiniz IOS uygulamaları native olarak adlandırılır.Bildiğiniz üzere ister C# ile ister Java ile isterseniz de herhangi bir dil ile kod yazdığınızda bu kodlar derlendiği zaman binary (2’lik sistem) yapısına yani makine kodlarına dönüştürülüyor. Böylece direkt olarak geliştirme yapılan cihazın özelliklerine erişebilen Native uygulama yapısı Hibrit uygulamalarda ki performans sorunu ile karşılaşmanızı engelliyor. Fakat burada da yeni bir problem var; her platform için ayrı ayrı kod yazmanız gerekiyor.

Native Uygulama Dezavantajları Nelerdir ?

Yani siz eğer Android uygulaması geliştirecekseniz ona özel Java ile veya Kotlin gibi diller ile uygulamanızı geliştirmelisiniz.Sonrasında da IOS için aynı uygulamayı geliştirmek isterseniz Swift veya Objective-C ile tekrar aynı uygulamayı yazmanız gerekiyor. Böylece zaman noktasında ve harcanan efor noktasında ciddi kayıplar meydana gelecektir.Fakat bunun sonucunda performans ve tasarım alanında daha başarılı bir uygulama meydana getirmeniz mümkün.

Native mi Hibrit Mi ?

Her zaman sunumlarda ve yazılarımda belirttiğim gibi yazılım alanında herhangi iki dili kıyasladığımızda kesin A veya B olsun dememiz neredeyse imkansız. Çünkü bu kavramlar kişiden kişiye, projeden projeye hatta ekipten ekibe değişiklik gösterebilir. Bu noktada herhangi bir proje geliştireceğiniz zaman birçok kriterde yazılım dillerinin projenize ve size göre avantajları ile dezavantajlarını listelemeniz gerekiyor ki sizin için en uygun teknolojiyi tercih edebilin.

Bu yazımda amaç daha önce tanıttığım Xamarin Nedir adlı yazımda da sıklıkla kullandığım Native ve Hibrit kavramlarını sizlere detaylı olarak açıklayabilmekti. Peki, hem kodları ortaklaştıran yani bir defa yazdığımız kod ile hem Android hem de IOS için  uygulama geliştirmemize fırsat veren bir teknoloji yok mu ? Aslında bu sorunun cevabına bilenler Xamarin diyebilir fakat Xamarin maalesef ortaklaşa kodlar ile Native uygulama geliştirmeyi sağlasa da maalesef kaynak ve geliştirici ilgisini bulamadı. Bunun yerine bir sonraki yazımda sizlere Xamarin’e göre hem çok daha kolay bir geliştirme ortamı sunan hem de son yıllarda oldukça popüler olan bir teknolojiden bahsedeceğim.

Buraya kadar okuduysanız ne mutlu bana, gösterdiğiniz ilgi için teşekkürler. Unutmayın bilgi paylaştıkça çoğalır 🙂

Bir cevap yazın

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