selenintech@hotmail.com

Flutter Nedir?

İlk olarak Google’ın 2017 I/O developer konferansında duyurulan Flutter, 1.0 sürümünün duyurmasının üstünden çok geçmemesine rağmen Groupon, Philips Hue, Tencent, Alibaba gibi birçok şirket tarafından beta sürecinde uygulamalar geliştirilmiş ve kullanıma sunulmuştur.

Peki Flutter nedir, geliştiricilerin Flutter’ı tercih etmesini sağlayan özellikleri nelerdir?

Flutter, Google tarafından geliştirilen ve Dart programla dilini kullanan software development kit (SDK) yani bir uygulama geliştirme aracıdır. Aynı android ve ios sdk’larda olduğu gibi geliştiricilerin kullanımına sunulmuş birçok kod kütüphanesini içinde barındırmasına karşın Flutter’ın geleneksel android ve ios uygulama geliştirme yöntemlerinden ayıran birçok özelliği bulunmaktadır. Örneğin önceden android’e uygulama geliştirmek isteyen geliştiriciler için Google yalnızca android sdk’yı sunuyordu. Böylece uygulamanızı Java programlama dilini kullanarak native yani makine dilinde oluşturabiliyordunuz. Her ne kadar direkt olarak makineyle konuşmak performans konusunda büyük avantajlar sağlasa da android sdk’yı öğrenmek ve hakim olmak uzun süreler gerektiren bir geliştirme ortamı istiyordu. Buna ek olarak kodun her değişiklikte compile edilmesinden ötürü, (makine diline derlenmesi) hata giderme sürelerinin de uzamasına yol açıyordu. Benzer senaryoları ios için de söylemek mümkün. İşte Flutter bu tarz sorunları çözerek geliştiricilere uygulamaları üzerinde daha çok yaratıcı zaman geçirebilmelerini sağlamayı amaçlıyor. Bu doğrultuda Flutter’ın önemli özelliklerini birkaç madde altında toplamak gerekirse:

-Flutter ile uygulamanızda yaptığınız bir değişikliği hot reload özelliği ile hızlı bir şekilde görebilirsiniz. Yani compile etmek(derlemek) için artık uzun süreler beklemeye gerek yok. Örnek vermek gerekirse Flutter ile varsayılan olarak gelen increment uygulamasını android sdk ile çalıştırmak ortalama 3 dakika iken, Flutter ile bu süre 10 saniye gibi bir süreye düşüyor.

-Flutter kütüphanesi ile hazır gelen birçok widget’ı (ekran aracını) sıfırdan kodlamanıza gerek kalmadan kullanıcı arayüzünüzü oluştururken kullanabilirsiniz.

-Android ve ios için ayrı ayrı uygulama geliştirmek yerine yazacağınız tek kod ile iki platforma da uygulama oluşturabilirsiniz.

-Performans konusunda da oldukça başarılı olduğundan kullanıcıya uygulama içinde akıcı bir deneyim sunabilirsiniz.

-Uygulamanın görsel dizaynıyla pek uğraşmak istemiyorsanız varsayılan olarak gelen android için Material Design ve ios için Cupernito-style temalarıyla uygulamanızın başlangıçtan itibaren iyi görünen bir tasarıma sahip olmasını sağlayabilirsiniz.

Peki Flutter uygulama geliştirme alanındaki bu tarz çözümleri ilk sunan bir girişim mi? Daha başka araçlar da var mı?

Bir kez kodla, her yerde kullan anlayışı birçok geliştiricinin hep istediği bir özellik olmuştur. Geliştiriciler bir uygulamayı diğer platformlar için yeniden yazmakla uğraşmaktansa bu zamanı kendi uygulamaları üzerinde iyileştirmeler yapmak için harcamayı tercih ediyorlar. Aynı zamanda yapılan değişiklikler hızlı bir şekilde görebilmek de zamandan tasarruf bakımından önemli bir olay. Bu yüzden de geliştiriciler bu sorunlara bir takım çözüm yolları bulmaya çalıştı. Bu çözümlerin başında Ionic ve React Native gibi ios ve android için uygulama geliştirebileceğiniz, hot reload özelliğini de içinde barındıran sdk’ler geliyor.

İlk olarak 2013’de tanıtılan Ionic, bir web sitesinin uygulama içinde çalıştırılması prensibine dayanıyor. Javascript kullanıldığı için büyük bir web sitesi kütüphanesi desteği sunuyor ve aynı zamanda her ne kadar bir uygulama olsa da sonuç olarak bir web sitesi geliştirildiği için native koda göre daha hızlı bir şekilde oluşturuluyor. Tabi bir web sitesinde olduğu gibi yapılan değişiklik de anında görülebiliyor. Bu gibi özellikleri nedeniyle oldukça tercih edilmişti. fakat web sitesi ile uygulama arasındaki iletişim için ekstra bir katman kullanılması gerektiğinden bu durum performans sorunlarına yol açabiliyor.

Facebook tarafından 2015 yılında tanıtılan React Native’de de javascript kullanılsa da temelini bir web sitesi oluşturmuyor. Javascript yalnızca arayüz bileşenlerinin (buton,resim,metin vb) birbiriyle iletişimini ve bu bileşenlerin sayfadaki dizaynını sağlamakta kullanılıyor. Tüm arayüz bileşenleri native code kullandığı için de performans olarak Ionic’den daha iyi. Hot reload özelliğiyle de yapılan değişiklikleri hızlı bir şekilde görebiliyorsunuz ve şu an Facebook, Skype, Uber, Discord vb. gibi uygulamalar React Native kullanmakta. Burada Flutter’ın, React Native ile benzer özelliklere sahip olduğunu görebilirsiniz. İkisinin de arkasında büyük bir şirket olmasıyla birlikte native bileşenler, hot reload ve performans gibi uygulama geliştirme alanına benzer çözümler getiriyor.Peki hangisini tercih etmek daha mantıklı? Bu iki uygulama geliştirme platformunu birbiriyle karşılaştırırsak:

Flutter vs React Native

-Flutter performans olarak React Native’den daha üstün. Bu React Native’deki uygulamaların yavaşlığı fark edilebilecek düzeyde olduğu anlamına gelmiyor. Yalnızca Flutter’da fps oranı daha yüksek.

-Flutter ile birlikte gelen birçok widget varken React Native’de daha az.

-Her ne kadar ‘Bir kez yaz,her yerde kullan’ anlayışı kullanılsa da platforma göre yine bir takım düzenlemeler yapmak gerekiyor ki bu yapılan düzenlemeler Flutter’da çok daha az.

-Flutter için Dart öğrenmek gerekirken React Native için Javascript bilmek yeterli. Yani web sitesi geliştirme bilgisi olan geliştiriciler daha kolay bir şekilde React Native’yi öğrenebilirler.

-React Native 2015 yılında, Flutter ise 2017 yılında geliştiricilere sunulmasından dolayı React Native daha büyük bir ekosisteme sahip. İş alanlarında da bu durumu görmek mümkün.

Flutter & React Native karşılaştırması için bazı görseller:

Flutter’ın geleceği

React Native, Flutter’dan daha önce çıkmasının avantajını kullanarak daha büyük bir ekosisteme sahip olsa da , Flutter hızlı bir şekilde arayı kapatıyor. Google birçok Flutter odaklı uygulama geliştirme konferansları düzenliyor, kendi uygulamalarında kullanıyor. Google’ın Flutter’a verdiği önem büyük ve geliştiriciler tarafından da gerçekten tercih edilmesini istiyor. Ios ve android geliştiricilerini ortak paydada toplamak amaçlarından bir tanesi olarak görülebilir.

Google’daki Flutter odağının önemli nedenlerinden biri ise Google’ın Fuchisa adlı yeni işletim sistemine geçmek istemesi. Fuchisa için şu an çok erken olmasına karşın Google bir işletim sisteminin tutanabilmesi için gerekli olan uygulama ekosistemini şimdideden kurmak istiyor. Yani Flutter ile yazılmış uygulamalar Fuchisa ile de çalışabilecek. Böylece daha Fuchisa yokken bile önceden uygulamaları hazır olacak.

Google her ne kadar Flutter’a çok önem verse de başarısız olması durumunda Flutter’a olan desteğini kesmeyeceğinin tabi ki bir garantisi yok. Google’ın hayata geçirdiği birçok yararlı uygulamaları olsa da (Google maps ,gmail ,chrome gibi) başarısız olması nedeniyle kapattığı birçok servis de bulunmakta.Bunlara örnek olarak Picasa ,Google buzz, Google dictionary, Google answers, Goo.gl vb verilebilir.Aynı zamanda yakın bir tarihte kapatılacak olan Google Allo ve Google+ servislerini de unutmamak gerek.

Sonuç olarak uygulama geliştirmek için geliştiriciler kullanabilecekleri birçok araca sahip olmuş oluyor. Flutter da, React Native de uygulama geliştirilebilecek güçlü araçlar. Her aracın kendince iyi ve kötü yanları var. Burada seçim geliştiriciye kalıyor.

Alper.

  • Kaiser LEKA Mart 17, 2019 at 3:24 pm

    Monitörün ekranına dokununca bile hata vermeye meyilli React-native’e karşı; insan “Flutter… hım, neden olmasın” demeden edemiyor

  • Tunga Haziran 11, 2019 at 4:14 am

    Şahsi fikriniz nedir acaba?

    • selen demir Temmuz 27, 2019 at 12:53 pm

      Benim flutter ile ilgili bir deneyimim bulunmamakta 🙂

    Leave a Reply