Android App iOS App Mobil

Flutter ve React Native – 2021’de Ne Seçmeli?

Uygulamaları daha hızlı geliştirmek ister misiniz? Platformlar arası geliştirme ile maliyetleri düşürmek için hangi teknolojiyi seçeceğinizden emin değil misiniz?

Bu makalede, hangi çerçevenin uygulama fikrinize en uygun olduğunu belirlemenize yardımcı olmak için, uygulama sahiplerinin bakış açısından önde gelen pazar oyuncuları olan Flutter ve React Native’i karşılaştırıyoruz.

Flutter vs. React Native: Özetle

 FlutterReact Native
Nedir?Tek bir kod tabanından mobil, web ve masaüstü * genelinde yerel olarak derlenmiş uygulamalar oluşturmak için taşınabilir bir UI araç seti  React kullanarak yerel uygulamalar oluşturmak için bir çerçeve
Resmi YayınAralık 2018, Google I/OMart 2015, F8 Konferansı
YayıncıGoogleFacebook
Ücretsiz ve Açık KaynakEvetEvet
Programlama DiliDartJavaScript
PopülerlikGithub’da 81.200 Yıldız (Aralık 2019)  Github’da 83.200 yıldız (Aralık 2019)
Çalışır Durumda Yeniden YüklemeEvetEvet
Native PerformansEvetEvet
UIFlutter uygulamaları, eski sürümlerde olduğu gibi güncel işletim sistemlerinde de iyi görünür. Yalnızca bir kod tabanına sahip oldukları için, uygulamalar iOS ve Android’de benzer şekilde görünür ve davranır – ancak Materyal Tasarım ve Cupertino widget’ları sayesinde platform tasarımının kendisini de taklit edebilirler. Bu nasıl mümkün olabilir?   Flutter, belirli tasarım dillerine uyan iki takım widget içerir: Materyal Tasarım widget’ları, Google’ın aynı adlı tasarım dilini uygular; Cupertino widget’ları, Apple’ın iOS tasarımını taklit eder.   Bu, Flutter uygulamanızın her platformda doğal olarak görüneceği ve kendi bileşenlerini taklit edeceği anlamına gelir.Uygulama bileşenleri tıpkı yerel olanlar gibi görünür (örneğin, bir iOS cihazındaki bir düğme yerel bir iOS düğmesi gibi görünür ve Android’de de aynı şekilde görünür). React Native’in temelde yerel bileşenleri kullandığı gerçeği, herhangi bir işletim sistemi kullanıcı arayüzü güncellemesinden sonra uygulamanızın bileşenlerinin de anında yükseltileceği konusunda size güven vermelidir.   Bununla birlikte, bu, uygulamanın kullanıcı arayüzünü bozabilir ancak çok nadiren olur.   Uygulamanızın, bir işletim sisteminin eski sürümlerinin yanı sıra (Flutter’ın başardığı gibi) platformlar arasında neredeyse aynı görünmesini istiyorsanız, üçüncü taraf kitaplıkları kullanmayı düşünün (bunun gibi). Yerel olanların yerine Materyal Tasarım bileşenlerini kullanmanıza olanak sağlarlar.
Paylaşım koduŞu anda iOS ve Android’de – ancak Flutter’ın uzun vadeli vizyonu, geliştiricilerin hem masaüstü hem de mobil hem de web için tek bir kod yazmasına olanak tanıyan entegre bir çözüm sunmaktır. Flutter for Web desteği teknik önizleme olarak mevcuttur, ancak yine de bu bir alfa kanalı değildir.   Flutter ile masaüstü uygulamaları geliştirmeye gelince, API’ler geliştirmenin ilk aşamalarındadır ve bu nedenle muhtemelen daha ileride piyasaya sürülecektir.iOS ve Android – ancak iOS, Android, web ve Windows10 uygulamaları oluşturmak için aynı kodu kullanmanıza izin veren seçkin kitaplıklar vardır. Ayrıca paylaşılan kodu mobil, masaüstü ve web uygulamalarında ayrı bir depoya çıkarabilirsiniz; ayrı bir proje olarak ele alın; daha sonra başka bir bağımlılıkla aynı şekilde enjekte edin.   Bu, bir geliştiricinin başka bir platformla uyumluluğu düşünmek zorunda kalmadan belirli bir platform için kod yazmaya odaklanmasına olanak tanır.
Bu teknolojiyle yapılan en iyi uygulamalarAlibaba’dan Xianyu uygulaması, Hamilton Musical için Hamilton uygulaması, Google Ads uygulamasıInstagram, Facebook, Facebook Reklamları, Skype, Tesla
MarketTipik olarak yerel geliştirmeden çok daha hızlı.Flutter ile muhtemelen geliştirme kadar hızlı. Ancak…   React Native, köprü ve yerel öğeler kullanır, bu nedenle her platform için ayrı optimizasyon gerektirebilir – parçacık tabanlı Flutter’ın karşılaşmadığı bir sorun. React Native ile uygulama geliştirmeyi daha uzun sürebilir.
Rekabet avantajıZengin widget’lar sayesinde harika görünüm ve his; Hızla büyüyen topluluk ve popülerlik; Flutter ekibinin güçlü desteğiyle mükemmel belgeler (bu, Flutter ile geliştirmeye başlamayı kolaylaştırır); Mobil ve web platformlarında tek bir kod tabanı için potansiyel sunan Web için Flutter’ı iyileştirme Pazara sürüm süresini aşmak zorİstikrar (piyasada 5+ yıl); React Native kullanan birçok başarılı, önde gelen piyasa oyuncusu; Olgun, geniş topluluk; Öğrenmesi kolay teknoloji; Hızlı ve kolay geliştirmeye izin veren çok sayıda öğretici ve kitaplık; Kod, hem web uygulaması hem de masaüstü uygulaması geliştirme için kolayca yeniden kullanılabilir.
Ne zaman uygun olmazEğer… • Uygulamanızın 3D Touch’ı desteklemesi gerekiyor (şimdilik, Flutter 3D’yi desteklemiyor, ancak Flutter ekibinin uzun vadeli yol haritasında yer alıyor)   • Uygulamanızın tasarımı platforma özeldir   • Uygulamanız bir işletim sistemi ile birden fazla etkileşim gerektiriyor; veya nadir, az bilinen yerel kitaplıklar gerektirir   • Minimalist bir kullanıcı arayüzüne ihtiyacınız var, ancak telefon donanımının önemli ölçüde kullanılmasına güveniyorsunuz (örneğin, müzik çalan veya yalnızca fotoğraf çeken bir uygulama)   • Hazır uygulama (küçük boyutlu uygulama) oluşturmak istiyorsunuz   Uygulamanız yukarıdakilerden herhangi birine benziyorsa yerel uygulama geliştirmeyi seçmeniz büyük olasılıkla daha iyidirEğer… • Uygulamanızın daha az yaygın olan veya çok spesifik görevleri (hesaplamalar gibi) arka planda işlemesi gerekiyor   • Bluetooth üzerinden özel iletişime ihtiyacınız var (React Native kullanarak uygulamak zor olabilir)   • Yalnızca Android için bir uygulama oluşturmak istiyorsunuz   Gerçekte, bir iOS uygulaması oluşturmak istiyorsanız ve JavaScript biliyorsanız, React Native’i düşünün; ancak yalnızca Android’e yönelik bir uygulama istiyorsanız, başka bir ekiple yerel olarak oluşturmak daha iyidir. Neden? Şu anda iOS, Android’den daha iyi desteğe sahip.   Uygulamanız yukarıdakilerden herhangi birine benziyorsa yerel uygulama geliştirmeyi seçmeniz muhtemelen daha iyi olacaktır.
   

Flutter ve React Native’e Giriş

İlk olarak, Flutter ve React Native ile ilgili temel (ancak gerekli) ayrıntıları ele alalım.

Flutter nedir?

Flutter, taşınabilir bir UI araç setidir. Diğer bir deyişle, widget’lar ve araçlarla tamamlanan kapsamlı bir uygulama Yazılım Geliştirme Kiti (SDK).

Flutter ne için?

Flutter, platformlar arası uygulama geliştirmeye olanak tanır.

Geliştiricilere mobil (iOS, Android), web ve masaüstü için görsel olarak çekici, yerel olarak derlenmiş uygulamalar oluşturmanın ve dağıtmanın kolay bir yolunu sunar – hepsi tek bir kod tabanı (kaynak: resmi Flutter web sitesi) kullanarak.

  • Lütfen aklınızda bulundurun:

Flutter ile masaüstü uygulamaları geliştirmeye gelince, API hala geliştirme aşamasındadır. Google, hedef ortam olarak masaüstünü desteklemek için Flutter’ı genişletmek için çalışıyor ve geliştiricilerin teknolojiyle macOS, Windows ve Linux uygulamaları oluşturmalarına olanak tanıyor.
Uzun vadede, bu çaba, geliştiricilerin mobil platformlar için yaptıkları gibi masaüstü platformları için uygulamalar oluşturabilecekleri tam entegre bir çözüme yol açacaktır – ancak, yazım sırasında çözüm geliştirme aşamasındadır (kaynak).

Flutter for Web şu anda yalnızca teknik bir önizleme olarak mevcuttur. Flutter for Web, Dart’ta yazılmış mevcut Flutter kodunu tarayıcıya gömülebilen ve herhangi bir web sunucusuna dağıtılabilen bir istemci deneyiminde derlemenize olanak tanıyan kod uyumlu bir Flutter uygulamasıdır. Flutter’ın tüm özelliklerini kullanabilirsiniz ve bir tarayıcı eklentisine (kaynak) ihtiyacınız yoktur.
Flutter hakkında biraz daha …

Ücretsiz ve açık kaynak

Hızlı, nesne yönelimli bir programlama dili olan Dart’a dayalıdır (Google, kod olarak kullanıcı arabirimi özellikleri için yeni destekle birlikte Dart 2.3’ü yayınladı – Dart’ın artık 2.6 sürümünde olduğunu unutmayın). Dart nispeten yenidir ve öğrenmesi kolaydır – özellikle Java ve C # konusunda daha deneyimli deneyimli geliştiriciler için
Mimari, çok popüler reaktif programlamaya dayanmaktadır (React ile aynı stili takip eder)
Kendi yüksek performanslı oluşturma motorundan alınan kendi widget’larını sağlar – bunlar hızlı, çekici ve özelleştirilebilir
Widget deneyimi sayesinde, Flutter uygulamaları harika bir görünüme ve hisse sahiptir (yine de belirli platform yönergelerini izleyen, kullanıma hazır UI öğelerini kullanarak kendi özel uygulama tasarımınızı oluşturabilirsiniz)

Flutter’ı kim yarattı?

Google’daki bir ekip Flutter’ı oluşturdu.

Ancak açık kaynaklı bir proje olarak, hem Google hem de Flutter topluluğu, gelişimine katkıda bulunur.

Flutter ne kadar olgun?

Flutter’ın kısa bir tarihi:

  • Şubat 2018, Mobil Dünya Kongresi – Flutter’ın ilk beta sürümü
  • Nisan 2018, Google I / O – Flutter beta 2 sürümü
  • Mayıs 2018, Google I / O – Flutter beta 3 sürümü
  • Flutter, GitHub’ın en iyi 100 deposuna katıldı
  • Haziran 2018 – Flutter Preview 1 sürümü
  • Eylül 2018 – Flutter Preview 2 sürümü
  • Kasım 2018 – Dart 2.1 sürümü
  • Aralık 2018, Google I / O – Flutter 1.0 sürümü
  • Teknoloji için çok önemli bir kilometre taşı – Aralık 2018’den beri Flutter, istikrarlı ve üretime hazır olarak görülüyor
  • Şubat 2019, Mobil Dünya Kongresi – Flutter 1.2 sürümü
  • Mayıs 2019, Mobil Dünya Kongresi:
  • Flutter 1.5 sürümü
  • Web önizleme sürümü için Flutter
  • Dart 2.3 sürümü
  • Temmuz 2019, Flutter 1.7 sürümü
  • Eylül 2019, Flutter 1.9 sürümü
  • Gördüğünüz gibi Google, Flutter beta sürümünden hızlı bir şekilde Flutter 1.0 için stabilizasyonun son aşamalarına geçti.

Daha da iyisi, Flutter 1.0’ın piyasaya sürülmesinden bu yana, takım şöhretine güvenmedi. Araç setini daha güçlü ve daha dayanıklı hale getirmek için aktif olarak çalıştı – gelişmiş kararlılık, performans ve kaliteye öncelik verdi.

Dahası, Flutter 1.5, geliştirici geri bildirimlerine (kaynak) yanıt olarak yüzlerce değişiklik içerir.

Flutter şu anda GitHub’daki en iyi 20 aktif yazılım havuzundan biri (11 Aralık 2019 itibarıyla 16. sırada), geliştirici topluluğunun onu kullandığını ve geliştirilmesine katkıda bulunmaya devam ettiğini kanıtlıyor.

Özetle, Flutter yeni bir teknoloji olmaya devam ediyor.

Yine de, Flutter’ın iyileştirmelerinin hızı ve patlayıcı popülaritesi göz önüne alındığında, etkileyici bir şekilde istikrarlı ve yaşına göre olgun olduğunu güvenle söyleyebiliriz.

Ve geliştirme oranına bakılırsa, Flutter for Web’in de 12 ay içinde istikrarlı hale gelmesini bekliyoruz.

React Native nedir?

React Native, JavaScript kullanan açık kaynaklı bir mobil uygulama çerçevesidir.

React Native ne için?

React Native, aşağıdakiler için etkili bir çerçevedir:

Çapraz platform geliştirme

JavaScript dilini kullanarak mobil uygulamalar oluşturma
Tek bir kod tabanı kullanarak hem Android hem de iOS için uygulamalar geliştirme
React ile aynı tasarımı kullanmak

  • Lütfen aklınızda bulundurun:

React Native kullanılarak oluşturulan uygulamalar mobil web uygulamaları değildir. React Native, normal iOS ve Android uygulamalarıyla aynı temel UI yapı taşlarını kullanır: Bu, Java, Kotlin veya Swift’de oluşturmak yerine, JavaScript ve React (kaynak) kullanarak aynı yapı taşlarını bir araya getirdiğiniz anlamına gelir.
React Native, Flutter’daki widget’lara benzer bileşenler kullanır.
React Native ile web ve masaüstü uygulamaları geliştirmek için en iyisi harici kitaplıkları kullanmaktır (bu paragrafta ayrıntılı olarak açıklandığı gibi).

Ayrıca okuyun: React Native nedir ve Nasıl Kullanılır? Uygulama Sahipleri için Giriş.

React Native’i kim yarattı?

Facebook, React Native’i yarattı.

React Native ne kadar olgun?

React Native’in kısa bir geçmişi:

  • 2013 Yazı, Facebook hackathon – React Native, dahili bir Facebook projesi olarak başladı
  • Ocak 2015, React.js Konferansı – React Native 1 Önizleme sürümü
  • Mart 2015, F8 Konferansı – React Native’in Resmi Lansmanı
  • Facebook, React Native’i “kullanıma açık ve Github’da mevcut” ilan etti
  • Yukarıya baktığımızda iki şey kesindir: React Native, Flutter’dan daha eskidir ve daha büyük bir topluluğa sahiptir. Facebook ekibinin API’yi stabilize etmek ve altta yatan sorunları gidermeye odaklanmak için bolca zamanı olduğu gerçeğinden bahsetmiyorum bile.

Ve unutmayalım – Facebook diğer bazı önemli iyileştirmeler üzerinde de çalışıyor:

Yalın Çekirdek – isteğe bağlı bileşenleri / özellikleri ayrı havuzlara taşıyarak bir uygulamanın boyutunu küçültme (gerektiğinde / gerektiğinde bir uygulamaya eklemek için)
TurboModules – yerel modüllerin daha iyi işlenmesi için
React Native Fabric – yeniden tasarlanmış UI katmanı

Flutter – artıları ve eksileri

Bu bölümde, Flutter’ın temel artılarını ve eksilerini kısaca tartışıyoruz.

Daha fazlasını okumak istiyorsanız, Uygulama Sahipleri için Flutter’ın Artıları ve Eksileri’ne adanmış bu makaleye göz atın.

✅ Flutter’ın Artıları:

Çalışırken Yeniden Yükleme = hızlı kodlama
Geliştirici bakış açısından, Flutter daha dinamik ve daha hızlı uygulama geliştirme sunar. Her en iyi mobil uygulama geliştirme şirketi tarafından takdir edilen, Flutter ile ilgili en büyük şeylerden biridir.

Geliştiriciler anında kod tabanında değişiklikler yapabilir ve bunların uygulamaya anında yansıdığını görebilir. Bu, Çalışırken yeniden yükleme olarak adlandırılan özelliğidir ve değişikliklerin görünmesi genellikle (mili) saniye sürer.

Bu özellik, ekiplerin anında özellikler eklemesine, hataları gidermesine ve yeni fikirleri denemesine yardımcı olur. Ayrıca, geliştirici-tasarımcı işbirliği söz konusu olduğunda Hot Reload çok kullanışlıdır.

Bununla birlikte, tam yeniden başlatma gerektiren güncellemelerin bir listesi için bkz. Hızlı Yeniden Yükleme sınırlamaları.

Bir kod tabanı, 2 mobil platform (ve daha fazlası!)
Flutter ile geliştiriciler, hem iOS hem de Android platformlarını kapsayan iki uygulama için yalnızca bir kod tabanı yazabilir.

Flutter, kendi widget’larına ve tasarımlarına sahip olduğu için platformdan bağımsızdır, bu da aynı uygulamaya iki platformda sahip olabileceğiniz anlamına gelir (aynı şekilde kolayca elde edilen uygulamalarınızı farklılaştırmak istiyorsanız).

Google şu anda önizleme sürümü olarak görebileceğiniz Flutter for Web üzerinde çalışıyor. Bu yayınlandıktan sonra, tek bir kod tabanı Android, iOS ve web platformlarını kapsayacaktır.

%50’ye kadar daha az test
Her iki platformda da aynı uygulamaya sahip olduğunuz göz önüne alındığında, daha az test yapabileceğiniz için Kalite Güvence süreciniz çok daha hızlı olacaktır.

Yaklaşık% 50 daha az otomatik test yazıyoruz, çünkü her iki platformda da aynı testleri oluşturarak QA ekibimizin taleplerini azaltıyoruz.

Bununla birlikte, QA uzmanlarınızın her platformda her iki uygulamayı da elle kontrol etmesi gerekeceğinden, yerel programlamayla benzer bir düzeyde manuel test çalıştırmanız gerekecektir.

Daha hızlı uygulamalar
Flutter uygulamaları, kaydırma sırasında takılmadan veya kesmeden sorunsuz ve hızlı bir şekilde çalışır. Neden?

Flutter, Skia Grafik Kitaplığını kullanır. Bu sayede, bir görünüm her değiştiğinde kullanıcı arayüzü yeniden çizilir.

İşin çoğu GPU (grafik işleme birimi) üzerinde yapılır; bu nedenle Flutter UI sorunsuzdur ve 60 fps (saniyede kare) sunar.

Ancak, verileri değişmeyen görünümün öğelerinin yeniden çizilmesine neden olmamak için geliştirme sırasında dikkatli olmalısınız.

Yalnızca değişen öğeler yerine tüm görünümü yeniden çizmek, özellikle görünümü sık sık yeniden yüklemeniz gerekiyorsa, uygulamanın performansını ve hızını etkileyebilir, örn. bir kronometre uygulamasında.

Kullanıcılarınızın seveceği tasarımlar
Flutter, yerel sistem bileşenlerine güvenmez. Aksine, Flutter, çerçevenin grafik motoru (kaynak) tarafından işlenen ve yönetilen kendi özel widget setine sahiptir. Kullanıcılar, tipik yerel uygulamalardan farklı UI bileşenleri göreceklerdir, ancak bu mutlaka bir dezavantaj değildir.

Flutter uygulamalarının özellikle kullanıcı dostu bir kullanıcı arayüzü vardır: Flutter için React Native’e göre çok önemli bir avantaj, görsel ayrıntılara olan süper dikkatten kaynaklanmaktadır. Flutter, kendi widget’larınızı kolayca oluşturabilmeniz veya mevcut bir widget’ı özelleştirebilmeniz için oluşturuldu.

Flutter widget’ları kataloğuna göz atmaktan çekinmeyin; veya Materyal Tasarım widget’ları ve Cupertino widget’larının örneklerini görmek için bağlantılara tıklayın.

Daha eski cihazlarda bile aynı uygulama kullanıcı arayüzü
Yeni uygulamalar bile eski iOS veya Android sistemlerinde aynı görünür, bu nedenle eski cihazları destekleme konusunda asla endişelenmenize gerek kalmaz.

MVP’ler için mükemmel
Uygulamanız için bir MVP (Minimum Uygulanabilir Ürün) oluşturmanız gerekiyorsa – örneğin, potansiyel yatırımcılar için bir vitrin olarak – Flutter, özellikle zaman kısaysa mükemmel bir seçenektir.

Flutter Eksileri:

Geliştirici topluluğunun boyutu (??)
Çoğu kişi size şunu söyleyecektir: React Native’in Flutter’a göre önemli bir avantajı, daha köklü, daha deneyimli geliştirici topluluğudur. Dahası, programlama dilleri açısından Dart, en azından şimdilik JavaScript kadar yaygın olarak kullanılmamaktadır.

Gerçekte, Flutter’ın “ağabeyiyle” eşleşecekse yapması gereken çok şey var – ki bu anlaşılabilir bir durum. Topluluğun hedef kitlesini eğitmek ve daha fazla deneyim kazanmak için zamana ihtiyacı vardır ki bu, her yeni, genç araç için tipiktir.

Ancak, bunu önemli bir dezavantaj olarak görmüyoruz ve bu yüzden başlığa (??) karakterini ekledik. Flutter topluluğunun katlanarak büyüdüğünü de belirtmek gerekir. Ayrıca, araç setinin etrafında olağanüstü bir heyecan var.

Lütfen aklınızda bulundurun:

Yığın taşma etiketi trendleri, geliştiricilerin Flutter’a olan ilgisinde yoğun bir artış olduğunu gösteriyor
Udemy’de 50’den fazla Flutter kursu vardır (yaklaşık 213.000 kurs katılımcısı)
Ayrıca 35 Dart kursu vardır (yaklaşık 187.500 kurs katılımcısı ile (25 Haziran 2019))

React Native sayıları aşağı yukarı aynıdır – 59 kursta yaklaşık 287.000 öğrenci

Flutter’ın Github’da 80.600’den fazla yıldızı varken, React Native’de 83.000’den fazla yıldız var
Özetlemek gerekirse, Flutter şu anda daha küçük, daha az deneyimli bir topluluğa sahip ve Dart JavaScript’ten daha niş.

Yine de mevcut eğilimler, Flutter’ın bu konuda rakibini yakında yakalayacağını gösteriyor.

Kitaplıklar ve destek – etkileyici, ancak yine de yerel geliştirme kadar zengin değil
Google’ın Flutter desteği etkileyici, ancak Flutter hala oldukça yenidir. Bu, ihtiyaç duyduğunuz işlevselliği mevcut kitaplıklarda her zaman bulamayacağınız anlamına gelir, bu nedenle geliştiricilerinizin özel işlevleri kendilerinin oluşturması gerekebilir ve bu da zaman alır.

Bu dezavantaj hakkında daha fazla bilgiyi buradan okuyun >>

Sürekli Entegrasyon desteği
Yazma sırasında Flutter, Travis veya Jenkins gibi CI platformları için destekten yoksundur. Bu nedenle, otomatik derleme, test etme ve dağıtım elde etmek için geliştiricilerinizin bunun gibi özel komut dosyalarını kullanması ve sürdürmesi gerekir.

Bununla birlikte, şunu belirtmekte fayda var:

Flutter uygulamaları için yeni bir CI / CD sistemi var – Codemagic – Flutter Live 2018’de duyuruldu
Ocak 2019’da Bitrise, tam özellikli Flutter CI’yi duyurdu

Platform riski
Flutter açık kaynak kodlu olsa da, Google proje için destek almaya karar verirse felaket anlamına gelir.

Bununla birlikte, Google ekibi Flutter’ın Beta sürümünü yayınladığından beri, son Flutter Live etkinliğinin yanı sıra Flutter’ın Google IO ’19 sırasındaki önemli rolünün de gösterdiği gibi, çabalarını yalnızca artırdı.

Şu anki noktada, Google’ın Flutter’dan uzaklaştığı bir dünya hayal edemiyoruz.

Uygulamanın boyutu
Flutter ile yazılan uygulamalar yerel uygulamalardan daha büyüktür. Ancak Flutter ekibi, Flutter ile yapılan uygulamaların boyutunu küçültmek için çalışıyor.

React Native – artıları ve eksileri

✅ React Native’in Artıları:

Çalışırken Yeniden Yükleme = hızlı kodlama Hızlı yenileme = hızlı kodlama
Esasen Flutter ile aynı özellik.

Çalışır Durumda Yeniden Yükleme, bir geliştiricinin yeni kodu doğrudan çalışan bir uygulamaya enjekte etmesine izin vererek geliştirme sürecini hızlandırır. Böylece bir geliştirici, uygulamayı yeniden oluşturmadan değişiklikleri anında görebilir.

Hot Reload ayrıca uygulamanın durumunu korur ve tam bir yeniden yükleme sırasında uygulamayı kaybetme riskini ortadan kaldırır (durum tabanlı çerçeveler bağlamında kritik bir avantajdır) – mobil uygulama geliştirme sürecini daha da hızlandırır.

Geliştiricinin çalışırken yeniden yükleme deneyimini iyileştirmek için React Native ekibi, 0.61 sürümünde canlı ve çalışırken yeniden yüklemeyi birleştiren hızlı yenileme adı verilen yeni bir özellik içerir. Önceki sürüme kıyasla yazım hatalarına ve hatalara karşı daha dayanıklıdır. Hızlı yenileme hakkında daha fazla bilgiyi buradan okuyabilirsiniz.

Bir kod tabanı, 2 mobil platform (ve daha fazlası!)
Flutter ile tamamen aynı: 2 uygulamayı güçlendirmek için tek bir kod tabanı yazın – hem Android hem de iOS platformlarını kapsar.

Daha da iyisi, JavaScript, web uygulamalarıyla kod paylaşarak platformlar arası uygulamalar yazarken size destek sağlar. Bu, hedef platformlara derleyebileceğiniz soyutlama bileşenleri oluşturarak gerçekleştirilir.

İOS ve Android dışındaki platformlarda (web ve masaüstü uygulamaları dahil) aynı anda kod oluşturmanıza olanak tanıyan örnek kitaplıklar için aşağıya bakın:

React Native for Web – Android, iOS ve web’i destekler (Twitter bunu Twitter Lite’ı oluşturmak için kullandı)
ReactXp – Android, iOS ve web’i desteklemek için Skype Ekibi tarafından geliştirilmiştir; ayrıca Windows 10’da (UWP) çalışır
react-native-windows – Microsoft ekibi tarafından geliştirilen, Windows 10 tarafından desteklenen tüm cihazları (PC’ler, tabletler, 2’si 1 arada cihazlar, Xbox, Karma gerçeklik cihazları vb.)
Kenar notu:

Bartosz (React Native geliştiricimiz) olayları çoğundan biraz farklı görür ve bu nedenle alternatif bir yaklaşım tercih eder.

Bir web masaüstü uygulamasını, bir mobil web uygulamasını ve yerel bir uygulamayı karşılaştırırsanız, aynı iş mantığını paylaştıklarını varsayabilirsiniz – ancak büyük olasılıkla farklı kullanıcı gereksinimlerine uyan belirli bir kullanıcı arayüzüne ihtiyaç duyarlar.

Yani neden olmasın:

Paylaşılan kodu ayrı bir havuza çıkarın;
Bunu ayrı bir proje olarak ele alın;
Kodu diğer bağımlılıklarla aynı şekilde mi enjekte edersiniz?
Bu şekilde çalışmak, geliştiricilerin, platformlar arası uyumluluğu düşünmek zorunda kalmadan gerçek bir platforma uygulama yazmaya odaklanmalarına olanak tanır.

Çılgınca popüler bir dil kullanıyor – JavaScript
React Native, birçok geliştiricinin iyi bildiği bir programlama dili olan JavaScript kullanır (oysa Dart hala çok yaygın olarak bilinmemektedir veya kullanılmamaktadır). Statik olarak yazılmış programlama dillerini tercih eden bir geliştiriciyseniz, bir JavaScript alt kümesi olan TypeScript’i bile kullanabilirsiniz.

Geliştirici seçme özgürlüğü
React Native, geliştiricilerin platformlar arası uygulamalar oluşturmasına olanak tanır; ne fazla ne az.

Bunun avantajı, React Native’in geliştiricinin tam olarak hangi çözümleri kullanmak istediklerine karar vermesine izin vermesidir; hem projenin gereksinimlerine hem de geliştiricinin tercihlerine göre.

Bir geliştiricinin global durumun nasıl ele alınacağına (uygulamadaki birçok bileşende kullanılan verilerin nasıl saklanacağına ve yönetileceğine) karar vermesi gerekiyorsa, bir yönlendirici kitaplığı seçin veya JavaScript ile TypeScript arasında seçim yapıp yapmayacağına karar verebilirler. d özel bir kullanıcı arayüzü kitaplığı kullanmayı veya kendi kütüphanesini yazmayı tercih eder.

Göreli olgunluk
Resmi React Native sürümü 5 yıldan fazla bir süre önceydi, bu nedenle Facebook ekibinin API’yi stabilize etmek ve sorunları düzeltmek ve sorunları çözmek için bolca zamanı oldu.

Şimdi, uygulama boyutunu küçültmek gibi birkaç heyecan verici iyileştirme üzerinde çalışıyorlar.

Aktif ve geniş bir topluluk
React Native, büyük bir geliştirici topluluğuna sahiptir. Sadece bu da değil, aynı zamanda teknolojiyi öğrenmeyi ve onunla geliştirmeyi hızlı ve kolay hale getiren sayısız öğretici, kitaplık ve kullanıcı arayüzü çerçevesi var.

Ve belirli teknolojilerle ilgili makaleler, araçlar ve materyaller toplamaya odaklanan depoları karşılaştırırsanız, React Native, Xamarin, Flutter veya Ionic’ten çok daha iyi yerleştirilir (kaynak: Awesome-Flutter, Awesome-ReactNative, Awesome-Ionic, Awesome-Xamarin).

Dahası, React Native “React ailesinin” bir parçasıdır. Kütüphanelerinin çoğu platformdan bağımsızdır (Formik, React Router, stilize bileşenler gibi), bu da hem web hem de mobil cihazlarda çalıştıkları anlamına gelir.

Ayrıca, tipik mobil özellikler (ör. Push bildirimleri) için hazır çözümlere sahip yerel API’lere erişimi basitleştiren React anayasal çerçevesi olan Expo’yu dikkatinize çekmeye değer.
Bahsetmeye değer ikinci bir kitaplık AWS Amplify’dir: kimlik doğrulama, depolama, push bildirimleri ve analitiği kapsayarak AWS özellikleriyle entegrasyonu basitleştiren bir çözüm.

React geliştiricileri için öğrenmesi kolay
Listemizdeki bu avantaj, büyük ölçüde React geliştiricilerine yöneliktir. Web geliştirmede bir geçmişiniz varsa ve halihazırda popüler React çözümlerini kullanıyorsanız, yeni kitaplıklar öğrenmenize gerek kalmadan kolayca React Native ile çalışmaya başlayabilirsiniz. Aynı kitaplıkları, araçları ve kalıpları kullanabilirsiniz.

%50’ye kadar daha az test
Yaklaşık% 50 daha az otomatik test yazıyoruz, çünkü her iki platformda da aynı testleri oluşturarak QA ekibimizin taleplerini azaltıyoruz. Flutter uygulama geliştirme ile aynı görünüyor – burada açıkladık.

🔻 React Native’in EKSİLERİ

Gerçekten Yerel değil
Herhangi bir çapraz platform çözümü gibi, ne UI deneyimi ne de performans yerel uygulamalardakilerle aynı olmayacak – sadece onlara yakın.

Ancak yine de React Native ile “doğal bir his” elde etmek Flutter’dan daha kolaydır. Flutter uygulamanızın yerel bileşenlere sahip olmasını istiyorsanız, ek çalışma gerektirecektir.

Kutudan çıkan daha az bileşen
React Native yalnızca kutudan çıktığı gibi temel bileşenleri destekler (bunların çoğu, düğme, yükleme göstergesi veya kaydırıcı gibi kutudan çıkmış bir platforma uyarlanabilir).

Bu paragrafta söylediğimiz gibi, React Native için birçok ek bileşen içeren dış depolar vardır. Bir geliştirici bunları bir projede kullanabilir, ancak bu ek çaba ve zaman gerektirir.

Öte yandan, Flutter Materyal Tasarımını kutudan çıkarmak için tasarlanmıştır, bu nedenle çerçeve çok daha fazla parçacığı destekler. Zaman kazandırır. Flutter kullanan bir geliştirici, görünümlerin çoğunu, kolayca özelleştirilebilen ve platformlar arası tutarlı olan önceden hazırlanmış widget’larla oluşturabilir.

Geliştirici seçme özgürlüğü
… Hem bir lanet hem de bir lütuf.

Bir geliştirici yeni bir proje oluşturduktan sonra, hangi navigasyon paketinin yanı sıra hangi küresel durum yönetimini kullanacağına karar vermelidir.

Her çözümün nüanslarını anlamak ve nihayetinde proje için kullanılacak en iyi çözümlere karar vermek çok zaman alabilir.

Çok sayıda terk edilmiş paket
React Native, muazzam sayıda kitaplığa sahiptir. Ne yazık ki, bunların pek çoğu ya düşük kaliteli; ya da tamamen terk edilmiş.

Dan Abramov, terk edilmiş paketlerin kullanılmasını önlemek için bir depodaki sorunların sayısını ve işlemlerin sıklığını kontrol etmeyi tavsiye ediyor.

React Native’in mevcut şeklinin sorunları ve sınırlamaları hakkında daha fazlasını “React Native hakkında neyi sevmiyorsunuz?” Tartışmasının bu özetinde okuyun.

Kırılgan Kullanıcı Arayüzü
React Native’in başlık altında yerel bileşenleri kullanması, her işletim sistemi kullanıcı arayüzü güncellemesinden sonra uygulama bileşenlerinizin de anında yükseltileceği konusunda size güven vermelidir.

Bununla birlikte, bu, uygulamanın kullanıcı arayüzünü bozabilir ancak çok nadiren olur.

Daha da kötüsü, güncellemeler Yerel Bileşenler API’sinde belirli değişikliklere neden olurlarsa daha da tehlikeli hale gelebilir. Güzel haberler? Bu tür olaylar çok nadiren olur.

Flutter söz konusu olduğunda (çerçevenin kendi başına yerel bileşenleri yeniden oluşturma şekli sayesinde), uygulama kullanıcı arayüzü çok daha kararlıdır.

Uygulamalar yerel uygulamalardan daha büyüktür
React Native’de yazılan uygulamaların Javascript kodunu (JavaScript Sanal Makinesi) çalıştırabilmesi gerekir. Android, varsayılan olarak bu işleve sahip değildir; bu, uygulamaların JavaScript kodunu destekleyen bir kitaplık içermesi gerektiği anlamına gelir, bu da uygulamalar yerel Android eşdeğerlerinden daha büyük uygulamalarla sonuçlanır.

React Native ile yapılan iOS uygulamaları bu sorunu yaşamaz, ancak yine de yerel uygulamalardan daha büyüktürler. Güzel haberler? Daha önce de bahsettiğimiz gibi, React Native ekibi uygulamalarının boyutunu küçültmek için çalışıyor.

Geleceği tahmin etmek: Flutter & React Native

Flutter giderek daha fazla şirkete ilgi duyuyor. Sonuçta, Google aracını geliştirmeye devam ederken Flutter SDK’da aylık iyileştirmelere tanık oluyoruz. Artı, topluluk her zaman yardımsever ve heveslidir. Dahası, yakında Flutter’ın sadece mobil uygulamalar değil aynı zamanda web ve masaüstü uygulamaları oluşturmamızı sağlayacağını umabiliriz.

Hepsini bir araya getirirsek – ve Alibaba gibi önde gelen şirketlerin halihazırda Flutter’ı kullandığı düşünüldüğünde – araç takımı için gelecek umut verici görünüyor.

React Native’e gelince, Facebook şu anda teknolojinin büyük ölçekli yeniden mimarisine odaklanıyor.

Ekip, hem React Native kullanıcıları hem de daha geniş topluluk için desteği geliştirmek için elinden gelenin en iyisini yapıyor. Ve bu sayede topluluk artık özel bir GitHub deposu kullanan bir RFC süreci aracılığıyla çerçevenin temel işlevlerinde değişiklikler önerebilir.

Bu tür mimari iyileştirmelerin gerçek sonuçları şunlardır:

Hermes – etkileşim süresini artıran ve uygulama boyutunu ve bellek kullanımını azaltan mobil uygulamalar için optimize edilmiş açık kaynaklı bir JavaScript motoru
0.60 sürümünde büyük değişiklikler (tam özeti burada bulabilirsiniz):
varsayılan olarak en popüler bağımlılık yöneticisi CocoaPods’u kullanarak iOS bağımlılığını yönetmek daha kolaydır,
React Native’i AndroidX’e taşıyabilirsiniz,
Yalın çekirdek işleminin bir parçası olarak isteğe bağlı özellikleri elde edebilirsiniz.
React Native’i tartışmak için açık bir ortam yaratmak önemli bir adımdır. Bu hem süregelen bir gelişimin işaretidir hem de teknolojinin parlak geleceği için bir sinyaldir.

React Native’in piyasada böylesine istikrarlı bir pozisyonu olduğu ve sürekli bir gelişim yörüngesinde olduğu göz önüne alındığında, araç setini yakın bir zamanda tozda bırakma ihtimalimiz düşük. Bu makalede React Native’in uzun vadeli vizyonunu okuyun.

Yine de Flutter, React Native için etkileyici bir rakip.

Özetle

React Native ne zaman ve Flutter ne zaman seçilir?
Projeleri zamanında teslim etmek, mobil ve web uygulaması geliştirmenin en kritik yönlerinden biridir.

Hem React Native hem de Flutter’ın çapraz platform yapısı, pazara sunma süresini kısaltır. Ayrıca, üçüncü taraf kitaplıkları ve kullanıma hazır bileşenleri, uygulamanızı oluşturmak için bunları kullanmayı daha verimli hale getirir.

Daha da iyisi, Flutter ve React Native hızlı geliştirmeden daha fazlasını sunar, proje maliyetlerini de düşürebilir.

… Ve bunlar, projeniz için her iki çerçeveyi de göz önünde bulundurmanız gereken temel nedenlerdir. Ancak hangi çözüm en hızlı geliştirme süresini sunar? Veya uygulama fikrinize en iyi uyuyor mu?

Bu, projenizin özelliklerine ve ekibinizin becerilerinin dengesine bağlıdır.

Geliştiricileriniz Dart’ı biliyor mu? Cevabınız evet ise, Flutter ile programlama parkta bir yürüyüş olacaktır.
Geliştiricileriniz JavaScript konusunda akıcı mı? Cevabınız evet ise, o zaman React Native mantıklı bir seçim gibi görünüyor.
Yerel kullanıcı arayüzü bileşenlerini kullanarak uygulamanızın GUI’sini oluşturmak istiyor musunuz? Cevabınız evet ise React Native’i seçin.
Önceliğiniz marka odaklı tasarım mı? Cevabınız evet ise, Flutter’ın faturaya uymasını öneririz.
Her uygulamanın farklı olduğunu unutmayın, bu nedenle her birini kendi yararına göre değerlendirmelisiniz. Projenizi her zaman deneyimli bir geliştirici ekibiyle tartışmaya değer: farklı yaklaşımları dikkate alabilen, platformlar arası geliştirme söz konusu olduğunda yeterince çeşitli becerilere sahip insanlar – sanki tek bir çerçeveyi bilen programcıların tavsiyelerini arıyormuşsunuz gibi Muhtemelen sizi bu aracı kullanmaya yönlendirecektir.

Hiçbir şey değilse, bundan emin olun: Hem Flutter hem de React Native çok iyi teknolojilerdir. Büyük popülariteden ve kalıcı güvenden faydalanırlar.

Yorum Yap

Yorum yapmak için tıklayın