Flutter vs React Native vs Xamarin. Hangisini Tercih Etmeliyiz?

flutter-xamarin-react-native

Son beş yılda, mobil endüstri, mobil uygulama geliştirme hizmetleri alanında muazzam bir büyüme ve değişim gördü. Mobil uygulama geliştirirken ise Flutter, React Native veya Xamarin kullanıldı. Geliştiriciler hem dinamik hem de tek kod ile birden fazla platforma (çapraz platform / cross platform) geliştirme yapmak için çoğunlukla bu dilleri kullandılar. Şimdi gelin bu dillerin/frameworklerin artılarına, eksilerine bakarak, kafanızdaki “Hangisini kullanmalıyım?” sorusu için yanıt bulalım.

Rapora göre  2022 yılında dünya genelindeki akıllı telefon kullanıcılarının sayısı yaklaşık olarak 4 milyar. Bu gerçekten inanılmaz bir rakam. Bu yaklaşık 4 milyar telefonda ise çoğunlukla iOS, Android ve Windows işletim sistemleri bulunmaktadır.

Bununla birlikte, aralarından seçim yapabileceğiniz çok sayıda mobil uygulama geliştirme platformu arasında, geliştiriciler hangisinin en iyi olacağı konusunda sürekli ortaya çıkan bir soruyla karşı karşıyadır. Native uygulama geliştirme, Hibrit uygulama geliştirme, Platformlar arası (çapraz platform) uygulama geliştirme ve PWA’lar gibi birçok mobil uygulama geliştirme çerçevesi bulacaksınız. Ancak sınırlı bir bütçeniz varsa ve maksimum gösterim istiyorsanız, platformlar arası uygulama geliştirme sizin için doğru seçim olacaktır.

Artık platformlar arası uygulama geliştirme çerçevelerini seçtiğinizde soru daha da kafa karıştırıcı hale geliyor. Bu, Flutter, React Native ile Xamarin arasında büyük bir rekabet olduğu anlamına geliyor.

Bildiğimiz gibi, mobil uygulama pazarının yükselişiyle birlikte en iyi mobil uygulamaları yaratma isteği de artıyor. Bu nedenle, her işletme, kaynaklarını iki farklı platformda dağıtmak zorunda kaldıkları için verimli bir mobil uygulama geliştirmek istiyor.

Platformlar arası uygulama geliştirme hizmetlerinin devreye girdiği yer burasıdır. Çerçeve, aşağıdaki gibi sorular için tek noktadan çözüm olarak ortaya çıkıyor:

  1. iOS ve Android için daha iyi platform hangisidir?
  2. Bir uygulama geliştirmek için en iyi teknoloji platformu hangisidir?
  3. Birden çok platformda çalışan bir uygulama oluşturmanın maliyeti nedir?

Bu sorular ile karşılaşmış iseniz bu içerik tam da bu sorulara cevap verir nitelikte sizlere yardımcı olacaktır.

Platformlar Arası Mobil Uygulama Geliştirmenin Artıları ve Eksileri

Çapraz platform ile native uygulamayı karşılaştırıp artılarına ve eksilerine bakabiliriz.

cross platform vs native

1. Popülerlik

Her yıl platformlar arası uygulama frameworklerinde yeni bir artış ortaya çıkıyor ve bu nedenle popüler frameworklerin konumu değişiyor. Ancak, yerinde aynı kalan üç framework var. Bu frameworkler Flutter, React Native ve Xamarin’dir.

A. Flutter

flutter

Flutter, 2017 yılında Google tarafından oluşturulan ve sürdürülen açık kaynaklı, platformlar arası bir mobil uygulama geliştirme çerçevesidir. Bu üç çerçeve arasındaki en yeni çerçevelerden biridir ve front-end geliştiriciler arasında popülerlik kazanmıştır.

Ankete göre Flutter, Geliştirici Anketi Sonuçlarında React Native‘i geride bırakarak en çok sevilen üçüncü çerçeve oldu (Flutter %75,4 ve React Native %62,5).

2022 yılında Google trendlerde Flutter ilk sırada oldu;

Dünya Geneli
Türkiye Geneli

 

Flutter’ın Avantajları:

  • Eksiksiz Geliştirme Ekosistemi: Flutter, platformlar arası uygulama geliştirme hizmetleri için gereken API’ler, CLI araçları, önceden oluşturulmuş widget’lar ve diğer birçok aracı sunar.
  • Kolay Özelleştirme Seçenekleri: Kendi widget’larınızı oluşturmanıza veya mevcut olanları özelleştirmenize olanak tanır.
  • Güvenilirlik: Flutter, Google tarafından geliştirilmiş ve sürdürülmüştür.
  • Hot Reload: Çalışırken yeniden yükleme özelliği sayesinde, geliştiriciler daha hızlı kod uygulaması yoluyla hataları kolayca düzeltebilir.
  • Açık Kaynak Platformu: Açık kaynaklı bir platform olduğu için kullanımı ücretsizdir.

 

Flutter’ın Dezavantajları:

  • Büyük uygulama boyutu: Bir Flutter uygulaması geliştirmenin en büyük dezavantajı, diğer çerçevelere kıyasla büyük bir uygulama boyutuna sahip olmasıdır. Diğer çerçeveler, geliştiricilerin kullanılan kitaplıkların, paketlerin sayısını azaltmasına ve görüntüleri sıkıştırmasına izin verirken, Flutter bu tür işlevleri kolaylaştırmaz. Ortalama bir Flutter uygulaması 4,7 MB boyutundan oluşur ve bu boyutu, tipik olarak 1 MB’tan başlayan bir Android yerel uygulamasıyla karşılaştırdığımızda oldukça büyüktür.
  • Yerel API’ler: Flutter, geliştiricilerin çok sayıda yerel API kullanmasına izin vermez. Bu nedenle, birçok nedenden dolayı üçüncü taraf paketlere ihtiyacınız olacak. Bu, ekosisteme bağımlı olmanız gerektiği anlamına gelir. Ancak, her zaman gerekli özelliğe erişen yerel kodunuzu yazabilirsiniz ve Flutter, bu özelliği Dart kodunuz içinden kullanmak için bir köprü görevi görecektir.

 

Flutter Geliştirici Araçları:

  • Flutter geliştirme dili
  • Dart
  • Flutter IDEs:
  • Flutter Araçları:
  • Flutter Paketleri:
    • Dart Packages

 

Flutter İle Geliştirilen Uygulamalar:

  • Google AdWords
  • Google Greentea
  • Alibaba
  • AppTree
  • Reflectly
  • Hookle
  • Topline
  • Birch Finance
  • OfflinePal
  • Hamilton (musical)
  • BetaBubs

B. React Native

react-native

2015 yılında Facebook tarafından geliştirilen ve kullanıma sunulan React Native, bir başka popüler platformlar arası mobil uygulama geliştirme çerçevesidir.

React Native, geliştiricilerin gerektiğinde Swift, Objective C veya Java kullanarak birkaç bileşenle JavaScript’te kod yazmasına olanak tanır. Kısa öğrenme eğrisi nedeniyle geliştiricilerin favori dili haline geldi.

React Native Avantajları:

  • Geliştirici Topluluğu Tarafından Yönlendirildi: React Native, geliştiricilerden oluşan bir ekip tarafından sunulan topluluk odaklı bir platformdur. Çevik bir ortamla üstün mobil uygulama geliştirmenin bir karışımıdır. React native geliştiricileri, sorgularını topluluk uzmanlarıyla tartışabilir ve fikirlerini onlarla paylaşabilir.
  • Kodun Yeniden Kullanılabilirliği: React Native geliştirmeyi kullanan geliştiriciler, hem iOS hem de Android platformları için aynı kod tabanını kullanabilir. Aynı zamanda geliştirme maliyetini de düşürür. Bir araştırma, bir geliştiricinin iOS ve Android arasındaki kodun yaklaşık %90’ını yeniden kullanabileceğini gösteriyor. Bu, geliştiricilerin her farklı platform için tekrar kod yazmak zorunda olmadığı anlamına gelir. Zamandan ve maliyetten tasarruf etmelerine yardımcı olur ve geliştirme sürelerini artırır.
  • Canlı Yeniden Yükleme Yeteneği: React Native, React’ın fikirleri üzerinde çalışır. Geliştiricilerin kullanışlı mobil uygulamalar geliştirmesine olanak tanır. Bir geliştirici, canlı yeniden yükleme özelliğini kullanarak kodda yapılan son değişiklikleri gerçek zamanlı olarak görüntüleyebilir.
  • Sağlam Performans: React Native, her tür mobil cihazda mükemmel derecede iyidir. Diğer yerel platformların aksine, daha yoğun CPU kullanan GPU’yu (Grafik İşleme Birimi) kullanır. Bu sağlam bir performans sağlar. Geliştiriciler, React Native çerçevesini kullanarak uygulamaları hızla geliştirebilir. Geliştiriciler, yerel kodu kullanarak ve React Native ile kalarak bir uygulamanın bazı bölümlerini geliştirebilir. Yerel kodun kullanılması, uygulama performansını artırır.
  • Sezgisel Tasarım: React çerçevesi, modüler ve sezgisel mimari ile gelir. Bu, geliştiricilerin web uygulamalarını geliştirmesine, güncellemesine ve yükseltmesine olanak tanır. Ek olarak, QA ekibi mantığı kısa sürede anlayabilir ve yararlı test durumları oluşturabilir.

 

React Native Dezvantajları:

  • Navigasyon: React Native’deki navigasyon yapısı sorunsuz değildir ve yerel navigasyonla karşılaştırılamaz.
  • Karmaşık Kullanıcı Arabirimi: React Native, karmaşık animasyon ve geçişler oluşturmakta zorlanır.

 

React Native Geliştirici Araçları:

  • React Native geliştirme dili
  • JavaScript
  • React Native IDEs:
    • Atom
    • Nuclide
    • Visual Studio Code
    • React Native Tools
  • React Native Araçları:
    • Expo
    • Redux
    • Ignite
    • Flow
    • Reduxsauce
    • ESLint
    • React Navigation
  • React Native UI Kitleri:
    • NativeBase
    • Snowflake
  • React Native Test Araçları:
    • Enzyme
    • Reactotron

 

React Native İle Geliştirilen Uygulamalar:

  • Facebook
  • Facebook Analytics
  • Facebook Ads Manager
  • Instagram
  • Uber Eats
  • Tesla
  • Skype
  • Pinterest
  • SoundCloud Pulse
  • Walmart
  • Bloomberg
  • Discord
  • Myntra
  • Gyroscope
  • Chop
  • Vogue
  • Artsy
  • F8

 

C. Xamarin

xamarin

Xamarin, 2011’de geliştirilen açık kaynaklı, platformlar arası bir mobil uygulama geliştirme çerçevesidir ve üçü arasında en eskisidir.

Xamarin’i React Native ile karşılaştırdığımızda, React Native geliştirme, başlangıcından bu yana en çok tercih edilen seçenek değildi. En üst konuma ulaşmak için devasa dalgaları aşması gerekiyordu.

Aşağıdaki grafikte Kasım 2015 ile Eylül 2016 arasındaki farkı görebiliriz; Xamarin’in diğer tüm platformlar arası uygulama çerçevelerini geride bırakarak popülerlik tablosunda zirveye ulaştığı yıl.

Mod-2017’de, React Native ve Xamarin geliştiricileri arasında sıkı bir rekabet görebilirsiniz. Ve son olarak, 2018’de React Native, platformlar arası geliştirme çerçeveleri arasında ilk sırayı almak için Xamarin’i geri itti.

google-trends

 

Xamarin’in Avantajları:

  • Performans: Xamarin kullanılarak geliştirilen uygulamaların neredeyse native uygulama performans seviyelerine sahip olduğu bilinmektedir.
  • Sorunsuz Kullanıcı Deneyimi: Xamarin.Forms, kodunuzu farklı platformlarda yeniden kullanabilmeniz için bir şablon kitaplığı sağlayarak standart arabirim öğelerinden yararlanmanıza olanak tanır. Gerekirse manuel özelleştirme için Xamarin.iOS ve Xamarin.Android’i de kullanabilirsiniz.
  • Açık Kaynak: Xamarin SDK, Visual Studio’nun bir parçası olarak MIT lisansı altında işletmelerin kullanımına sunulan açık kaynaklı bir teknolojidir. Red Hat, JetBrains, Unity ve .NET Foundation tarafından desteklenen Xamarin, sağlam bir teknoloji yığını olarak ün kazanmıştır.
  • Basitleştirilmiş Bakım: Xamarin, geliştiricilerin bir uygulamayı çok kolay bir şekilde bakımını ve güncellemesini sağlar. Hem iOS hem de Android uygulamaları için geçerli olan güncellemeleri kaynak dosyaya dağıtmanız gerekir. Zamandan ve paradan tasarruf etmeye yardımcı olur.

 

Xamarin’in Dezvantajları:

  • Gecikmeli Güncellemeler: Yeni bir özellik veya güncelleme kullanıma sunuluyorsa, Xamarin araçlarında uygulamanızda sorunlara neden olabilecek değişiklikler yapılana kadar genellikle bir gecikme olur.
  • Büyük Uygulama Boyutu: Xamarin uygulamaları, sürümler için yaklaşık 5 megabayt ve hata ayıklama yapıları için 20 megabayt ekleyebilir, bu da onları yerel uygulamalardan daha ağır hale getirir. Bunun başlıca nedeni, C# çağrılarını native çağrılara çevirmek için kullanılan kitaplıklardır.
  • Ağır Grafikler: Xamarin’i kullanarak basit bir kullanıcı arabirimiyle harika uygulamalar geliştirebilirsiniz. Ancak, Xamarin ile karmaşık uygulamalar veya mobil oyunlar geliştirmeyi planlıyorsanız, bu sizin için doğru çerçeve olmayabilir. Amacını yitiren platforma özgü kodu kodlamak için çok zaman harcamanız gerekir.
  • Platforma Özgü Kod: Geliştiricilerin, kullanıcı arayüzünün bazı bölümlerini yerel kodda yeniden yazması gerekir. Bu, geliştiricilerin Android için Kotlin veya Java ve iOS için Swift veya Objective-C gibi programlama dilleri hakkında bazı temel bilgilere ve anlayışa sahip olmaları gerektiği anlamına gelir.

 

Xamarin Geliştirici Araçları:

  • Xamarin programlama dili
  • C#
  • Xamarin IDEs:
    • Visual Studio
    • XCode
  • Xamarin Araçları:
    • NuGet
    • Xamarin Inspector
    • Prism
    • MFractor
    • Resharper
  • Xamarin Test Araçları:
    • NUnit
    • xUnit.net
    • Visual Studio Unit Testing Framework

 

Xamarin İle Geliştirilen Uygulamalar:

  • Skulls of the Shogun
  • SuperGiant Games
  • Storyo
  • Insightly
  • FreshDirect
  • The World Bank
  • Just Giving
  • Olo
  • Thermo Fisher Scientific
  • APX
Nihai Karar: Popülerlik

2. Performans

Uygulama performansı, proje için platformlar arası uygulama geliştirme çerçevesini seçerken göz önünde bulundurmanız gereken en önemli faktördür.

A. Flutter

Flutter, geliştiricilerin hızlı bir şekilde bir uygulama geliştirmesine olanak tanıyan en iyi platformlar arası uygulama geliştirme çerçevelerinden biridir. Geliştiriciler, native kodu kullanarak native bir hisse sahip olabilir ve böylece olağanüstü bir kullanıcı deneyimi geliştirebilir.

Flutter’ın en iyi ve en istisnai uygulama performansını sunmasının nedeni “Dart Kodu”dur. Bu kod bir C kitaplığında derlenir ve JavaScript köprüsünü ortadan kaldırır.

Ayrıca ‘Hot Reload’ özelliği, Flutter geliştiricilerinin native teknolojileri kullanırken olduğu gibi zaman içinde kodda yaptıkları değişiklikleri görmelerini sağlar. MVP uygulamaları geliştirmek için tercih edilen platformdur.

Flutter ilk açılış ekranı
Flutter ilk açılış ekranı

Flutter’da gezinme, kaydırma, yazı tipleri ve daha birçok araç vardır. Bu nedenle, çok fazla geliştirme süresi tasarrufu sağlar. Flutter uygulamaları yerleşik widget’lar kullanılarak geliştirildiğinden, boyutu daha büyük olabilir. Flutter uygulaması en az 4MB ağırlığında olabilir.

B. React Native

React Native uygulamaları, kod öğelerini özellikle yerel API’lere işleyebilme yetenekleri nedeniyle native uygulamalarla aynı performansı gösterir. Geliştiriciler, karmaşık uygulamalar geliştirmek için native dillerde yazılmış native modülleri kullanabilir.

React Native, JavaScript’ten yararlandığından, büyük veri kümelerini oluşturmaya yönelik bir endişe ortaya çıkıyor.

C. Xamarin

Geliştiriciler, Xamarin’i kullanarak uygulamaları hızlı bir şekilde geliştirebilir ve yayınlayabilir. Xamarin, geliştirme süresini basitleştirmek ve azaltmak için Shell, Hot Reload, Hot Restart ve Visual gibi çeşitli özellikler sunar.

Xamarin şunlara sahiptir,

  • Yaygın bir navigasyon kullanıcı deneyimi.
  • Entegre bir arama işleyicisi.
  • Bir uygulamanın görsel hiyerarşisini açıklayan tek bir yer.

Xamarin uygulamaları, aşağıdaki grafikten çıkarılabilecek yerel uygulama geliştirme standartlarıyla eşleşir:

Ancak, grafik açısından zengin uygulamalar için Xamarin, ekranları görsel olarak düzenlemek için farklı bir yönteme sahip olduğundan önerilmez. UI/UX açısından zengin uygulamalar geliştirmenize yardımcı olabilir.

performans
Nihai Karar: Peformans

3. Mimari

Platformlar arası uygulama geliştirme hizmetlerini seçtiğinizde, bu çerçevenin mimarisi önemli bir rol oynar.

A. Flutter

Flutter mimarisinden bahsettiğimizde Reactive UI yaklaşımını destekler. Ayrıca, Facebook’un Flux ve RefluxJS’den yükselen tek yönlü veri akışına sahip bir Dart uygulama çerçevesini de paketler.

Flux
Flux

Flutter uygulaması büyük bir boyuta sahip olduğu için geliştiriciler hüsrana uğrayabilir. Yine de, boyutunu küçültürseniz bile uygulamanız, diğer uygulamalardan daha büyük kalır.

B. React Native

React Native uygulamasının mimarisi, istemci tarafı web uygulamaları geliştirmek için “Flux” olarak bilinir. Her uygulama çerçevesi genellikle MVC (Model – View – Controller) çerçevesini izler.

Modül ve sezgisel doğası nedeniyle, geliştiriciler mevcut bir projeyi kolayca değiştirebilir.

MVC

C. Xamarin

Xamarin mimarisi, yerel uygulamalar oluşturmak için görsel bir tasarım platformuna sahiptir. Xamarin, uygulama sürecini daha kısa bir çapla hızlandıran MVC ve MVVM (Model–View–ViewModel) mimarisini kullanır.

  • MVVM modeli, geliştiricilerin aynı kod tabanıyla ayrı prosedürler geliştirmesine olanak tanır.
  • MVC modeli, uygulama ve sunum mantığı arasındaki farkı tanımlamaya yardımcı olur, böylece uygulama geliştirme prosedürünü hızlandırır.
Nihai Karar: Mimari

4. Topluluk Desteği

Güçlü topluluk desteğine sahip olmak, her platform için en büyük destektir. Topluluk, sorularınızın neredeyse tüm yanıtlarına sahiptir.

A. Flutter

Flutter iyi bir topluluk desteğine sahiptir. React Native’e çok yakın olarak GitHub’da 140.000’den fazla yıldıza sahiptir. Ayrıca, çerçeveyi geliştirmek ve en iyi geliştirme deneyimini sağlamak için çalışan 1000’den fazla katılımcısı var. Flutter geliştiricileri, farklı QA web sitelerinde de aktiftir.

B. React Native

React Native, bir geliştirici topluluğu Native React ve daha iyi mobil uygulama geliştirme kombinasyonuna bir alternatif ararken oluşturuldu.

React native, GitHub’da platformu geliştirmek için çalışan 100 binden fazla yıldız ve 2000’den fazla katılımcıyla en iyi topluluklardan birine sahiptir. Bu nedenle, dünya çapında geniş bir geliştirici topluluğuna sahiptir ve QA siteleri ve Stack Overflow gibi forumlarda çok aktiftirler.

C. Xamarin

Topluluk desteği söz konusu olduğunda, Xamarin üç platform arasında çok sınırlı topluluk desteğine sahiptir. Platformun ücretsiz olmadığını, kullanıcıların bu çapraz platformu satın alması gerektiğini düşünüyoruz.

Bir Xamarin geliştiricisi olarak, internet’teki Xamarin topluluğundan anında yardım ve destek bulamazsınız. Bu nedenle, GitHub’da kullanıcı, veri havuzu ve katkıda bulunanların sayısı React Native çerçevesine yakın bile değil.

Nihai Karar: Topluluk
Genel Karşılaştırma

İlgili Yazılar