java
27 Temmuz 2024

Flutter ve Native Mobil Uygulama arasındaki geliştirme farkları

ile umut

İçindekiler

1.Giriş

Beta aşamasından itibaren Flutter frameworkü ile irili ufaklı geliştirmeler yapıyor olmamdan kaynaklı anlatacağım detayların aslında Flutter ve native özelinde olmasından çok yeni gelişmekte olan dil veya frameworklerin yaşadığı problemlerin yaşandığını anlatmaya çalışacağım.

2.Geliştirme koşulları

Bu olaya şu perspektiften bakmalı; Siz bir yazılım dili geliştiriyorsunuz ve olması gerekenleri şu anki dillerde olan eksiklikleri biliyorsunuz. Buna göre de gereklilikleri çıkarıp dili oluşturmaya başladınız ve yayınladınız. Dilimizin adı Kıbrıs olsun, herkes bir ada koyma peşinde. Ne de olsa soyadım Adalı değil mi? Şaka bir yana Kıbrıs dilimizi herkes beğendi ama ortada var olan diller var ve bunca yılın deneyimiyle completionlar yani yani bir özellik geldiğini görüyoruz ve diyoruz bu kesin bizim dilimizde de olmalı. Ama biz bunu koyarsak ana metodlarımızdan birini deprecate yani kullanımına veda etmemiz gerekiyor. Ama kararlıyız çünkü önemli bir özellik. Daha sonra yeni deneyimli bir yazılımcı ekibe geliyor ve herkesi ikna ederek yine ana metodlarımızdan birinin memory leak yani sızıntıya sebep olup performans sorunu yaşattığını ve değiştirmemiz gerektiğine ikna ediyor. Biz de dolayısıyla metodu değiştiriyoruz. Ama bu ana değişiklikler dilimizi kullanan developerların geliştirme süreçlerinin devam edebilmesi için taklalar atmasına sebep oluyor.

3. Flutter Özelindeki Sorunlar

Buraya kadar hem fikir isek eğer diğer dillerde yaşanan benzer problemleri de anlatalım. En bilinen ve en güçlü programlama dillerinden Java ki Android’in ilk programlamlama dilidir bu aynı zamanda, ama tam olarak Java 8 ile fonksiyonel programlama özelliği kazanarak lambda fonksiyonları diğer dillerde closure olarak adlandırılan yapılar geldi. Bu bana kalırsa Java’da yapılmış en önemli geliştirmelerden birisidir. Yani Java’nın ilk versiyonunudan tam 18 yıl sonra bu geliştirme geldi ortalama 1 ile 3 yıl içinde de sürekli versiyon çıkılıyor. Dolayısıyla 1 yıl içinde bu gibi temelli değişiklikler yapıldığında geliştirici bu değişiklikleri kendisi düzeltmesi, güncellemesi gerekiyor. Bu da hele ki dökümantasyon iyi yapılmadıysa (bunu Java veya Flutter için demiyorum) çok daha güç ve karmaşık oluyor. Flutter ise bu konuda nasibini özellikle null check yani Java’nın on yıllar sonra yaptığı null olabilme güncellemesini yapınca Flutter Community’si bir tökezliyor çünkü tam olarak syntax yani yazım şeklini değiştirmiş oluyor. Bu durum da neredeyse yazılan tüm kodların güncellenmesine sebep oldu.

4. Bağımlılıklardaki Yapı Değişimleri

Benzer yapı değişimleri gibi konuların altında bir de dependency yani bağımlılıklarımız olan kütüphanelerimiz var. Aynı güncellemeleri kullanabilmek yani kod geliştirmemize devam edebilmemiz için kütüphaneleri de güncellemek zorunda kalıyoruz. Hele ki bu kütüphaneler bir kişinin veya kütüphaneyi geliştirmeye zaman ayıramayan bir ekibin ürünü ise bu geliştirmeyi yapmak size düşebiliyor. Bu da projenin gelişmesini büyük bir ölçüde yavaşlamasına sebep oluyor.