Geleceği Yazanlar

Cross-Platform ve Geleceği: Native Programlama

Native programlamadan bahsetmeden önce, diğer cross-platformları geliştirme konularına değinmek gerekir. Cross-platform (çapraz platform), uygulamalar geliştirmek için farklı geliştirme ortamları ve farklı teknolojiler kullanır. Cross-platform geliştirmenin amacı “Tek bir yerde yazılan kodlar, her platformda çalıştırılabilir.” olmasıdır.

Çalışma Yapılarına Göre Cross-Platform Çözümleri

 

Cross-platform çalışma yapılarına göre Hybrid (hibrit) veya Native (yerel) geliştirme ve ortam teknolojilerine sahiptir. Burada tercihiniz uygulamanızın ihtiyaç ve gereksinimlerine bağlı olmalıdır. En temel örneğini vermek gerekirse cihazınızın donanımsal özelliklerine erişim gerektiren bir uygulama için Native (yerel);  HTML5, CSS3 ve Javascript kullanarak web tabanlı bir uygulama geliştirmek istenirse Hybrid (hibrit) çözümler tercih edilebilir.

 

Native ve Hybrid Uygulama Arasındaki Farklar

 

Net bir yanıt vermek doğru değildir. Native uygulamalar cihazınızın donanımsal özelliklerini kapsayan projeler de kullanılmaktadır. Hybrid uyulamalar ise bu ihtiyaçları karşılayamazlar.

 

Hybrid uygulamaların maliyetleri daha düşüktür, Native uygulamalar da geliştiriciler platform ya da cihaza özel geliştirmelerde bulunmak durumundadır. Hybrid uygulamalar ise tüm platformlarda ortak şekilde geçerli çalıştırılabilir. Native uygulamalar, hybrid uygulamalar göre çok daha kısa sürede tamamlanabilir.

 

Native Mobil Uygulama Nedir?

 

Native uygulama demek sadece tek bir işletim sistemi için geliştirilen uygulama demektir. Mobil uygulama geliştirme konusunda akla gelen çözüm native uygulamadır. Mobil uygulamalar ilk native geliştirme ortamları ile hazırlanmıştır.

 

Native Mobil Uygulama Geliştirme Süreci

 

Native mobil uygulamalar geliştirmek için öncelikle kendi kimliğinizi belirlemeniz gerekiyor.

 

Örnek vermek gerekirse;

 

Siz Turkcell TV+ mobil uygulamasını geliştiriyorsunuz ve Iphone 13 piyasaya sürülürken cihaza yeni özellikler eklenmiş. Ekran boyutu değişmiş, ekrana bir çentik atılmış veya kaldırılmış, GPS’e algılama sistemi değişmiş vs. bu gibi durumlarda geliştirilen uygulamanız için kritik bir öneme sahip ise cihazda gerçekleştirilen güncellemelerin uygulamanızdaki etkisini anında verebilmeniz gerekir.

 

Native Mobil Uygulama Geliştirme Teknolojileri

 

React Native; JavaScript'i programlama dili olarak kullanan bir framework’dür. Ayrıca; C, Swift ve Java gibi dillerde modüller yazılabilmesi react-native’in güçlü yanını oluşturmaktadır. React ile birlikte daha güçlü bir geliştirici community’sine sahip olması diğer native teknolojilerine göre daha fazla kaynak ve dökümana ulaşmanızı sağlamaktadır.

 

Flutter; iOS, Android ve Google Fuchsia için uygulamalar oluşturmak üzere tasarlanmıştır. Yeni bir platform olmasına rağmen güçlü native geliştirme teknolojilerinden biridir. Google tarafından geliştirilen modern bir uygulama geliştirme kitidir.

 

Xamarin; Windows, iOS ve Android gibi farklı platformlar için tek bir .net kodu kullanarak uygulamalar oluşturmanıza olanak sağlar. Xamarin cross-platform aracının en iyi yanı, yerleşik tüm uygulamaların bir kullanıcının kullanmak istediği şekilde çalışan native arabirimleri kullanması nedeniyle native uygulamalar gibi görünmesi ve hissedilmesidir.

 

Unity3D; Bu cross-platform uygulama geliştirme aracı, kesinlikle inanılmaz grafik kalitesi nedeniyle çok popülerdir. Unity3D aracı ile uygulamanızı veya oyunlarınızı, birçok platforma aktarabilirsiniz.

 

Hangi Native Mobil Uygulama Teknolojisini Kullanmalıyım?

 

Yukarıda kısaca açıkladığımız teknolojiler dışında birçok popüler ya da az popüler native geliştirmek teknolojileri bulunmaktadır.

 

Peki geliştirme teknolojileri konusunda nasıl tercih yapmalıyız?

 

Yazımızının “Uygulama Geliştirme Süreci” kısmında bahsettiğimiz örnek üzerinden düşünelim. Eğer siz react-native ya da flutter kullanıyorsanız, react-native ya da flutter community’leri cihaza gelen geliştirme ile ilgili eksiklikleri kendi teknolojilerinde de güncellemesi gerekmektedir. Eğer böyle bir güncelleme eksikliği varsa güncellemenin gelmesini beklemek zorundasınız. Aksi durumda kendiniz geliştirmelerini yapmanız gerekecektir.

 

Bu durumdan dolayı dinamiklerin geliştirilmesine hızlı adapte olmak zorunda olan firmalar; native framework teknolojileri yerine, native diller ile geliştirmeler yapmaları daha doğru olacaktır. Dinamiklere hızlı adapte olma zorunluluğunuz olmayacak ise react-native ve flutter gibi framework teknolojileri ile uygulamanızın geliştirilmesi daha mantıklı olabilir.

 

Ayrıca; react-native ve flutter karşılaştırma veya seçim yapmamız gerekirse, burada karar yine tamamen yaptığınız işe bağlıdır. İkisinin de kendisine göre artı ve eksileri bulunuyor.

 

React Native; daha eski bir ürün, community’si daha geniş ve web geliştirme becerisi olan bir geliştirici için yakın bir konu olmaktadır. Daha kolay öğrenirken, performansı görece daha düşük kalabilmektedir.

 

Flutter ise react-native’e göre daha yeni ve community’si düşük ama performansı daha yüksektir. Yazım şekli tek bir düzene sahiptir, bu yüzden yeni başlayanlar için daha basitken web geçmişi olan bir geliştirici için daha zor olabilir.
Burada karar tamamen kendi ihtiyaçlarınıza ve müşterinizi ihtiyaçlarına göre verilmelidir.

 

React Native İle Yapılmış Uygulamalar Nelerdir?

 

React Native tartışılmaz bir şekilde cross-platform uygulama geliştirme için kullanılacak iyi bir platformdur. Çünkü kaynak kodunuzu yorumlar ve daha kısa sürede native öğelere dönüştürür. Hem Facebook hem de Instagram, React Native'i dünyanın en çok kullanılan uygulamaları olan native uygulamalarını oluşturmak için kullanıldı. Geliştirilmelerinin ilk test edileceği uygulamaların önemini göz önüne alırsak daha güncel ve güven veren bir native mobil uygulama teknolojisi olarak kabul edilebilir.

 

Yorumlar

Ramazan
18.04.2022 - 06:29

Teşekkürler 

Mustafa Oğuz Baran
19.04.2022 - 02:29

Teşekkürler, Flutter eğitimini dört gözle bekliyoruz. :)

Emre Yıldırım
26.06.2022 - 12:19

Teşekkürler. React native ile bir projenin yapım sürecini içeren bir video gelirse seviniriz :) 

Alper Yüceer
01.07.2022 - 02:26

Teşekkürle. Burada da bir Flutter eğitimi bekliyoruz :)

Ömer Faruk Öztürk
07.09.2022 - 08:10

Açıkçası makaleyi biraz eksik buldum. Flutter için yazılan konular biraz eksik. Flutter'ın söylenilenin aksine Community'si inanılmaz derecede geniştir. Sadece Flutter Türkiye telegram grubunda bile inanılmaz derecede insan var ve hepsi yardım sever. En çok içerik şuan Youtube'da Flutter da var.

Ayrıca, Flutter yazıyoruz diye native geliştiremeyeceğimiz anlamına geliyor, hayır. Flutter içerisinde Native kodlama yapmak da mümkün.

Bir diğer örnek, Flutter, sadece Android ve iOS değildir. Aynı zamanda Web programlama da mümkün. Aynı zamanda, macOS, Windows ve Linux masaüstü program çıkarmakta mümkün.

Flutter tamamen açık kaynak kodlu olduğu için 3. part kütüphaneler inanılmaz derecede fazla. Bugün pub.dev de onbinlerce toplam kütüphane paylaşılmış durumda.

Son olarak, inanılmaz basit, öğrenmesi kolay bir Kit. Konuşma dili gibi.

 

Ancak benim gördüğüm Flutter'ın 3 çok büyük dezavantajı var.

1. İş imkanı çok az. Maalesef şirketler için çok büyük bir imkan olsa da, tercih edilmiyor. Ancak bu durum Türkiye'de geçerli. Bugün Flutter'ın web sitesine girin Alibaba'dan araba şirketlerine kadar her yer de Flutter var. Ancak Türkiye'de iş ilanı yok. Ancak tabi freelance için en güzel tercih Flutter'dır.

2. Eğer yazılım mimari oluşturma konusunda yetenekli değilseniz, boğulabilirsiniz kodların arasında. Eğer bir şirkette mimariyi oluşturacak birisi yoksa, boğulabilirsiniz. Ancak eğer yazılım mimariyi kurmayı biliyorsanız, State yönetimi konusunda tecrübeliyseniz. Flutter kodlamak inanılmaz keyifli olacaktır.

3. Bugün Flutter çok ama çok iyiyken ya Google desteği keserse ne olacak? Daha önce örnekleri yaşanmadı mı yaşandı. Öyleyse bir native dili muhakkak iyi derecede bilin. Ancak Cross platformda geliştirin.

 

Özetleyecek olursam, bu makale de Flutter internette duyma kalıplarla hareket ederek yazılmış. Benim tavsiyem JS bilgisi bir insanda olsun ya da olmasın farketmez. Dart-Flutter geliştirmeye çalışsın. En azından deneyin şansınızı. Sevip sevmemek size kalmış. Ancak ben her insanın muhakkak denemesini tavsiye ederim. Flutter ile tek bir kodla Android, iOS, iOS akıllı saat, Android akıllı saat, Apple TV, Android TV, Web Programlama, Windows, Linux ve macOS masaüstü çıkarabilecek olmak, inanılmaz büyük bir olay.

Esra Haytaoğlu
12.10.2022 - 11:39

Ben de react kullanarak website geliştiriyordum. React native öğrenmeye başlayacağım şu dönemde faydalı bir yazı oldu. Teşekkürler.

Batuhan AKBIYIK
04.11.2022 - 01:39

Teşekkürler, bilgilendirici bir içerik.

Serdar Ünlü
04.11.2022 - 11:11

Çok teşekkürler.

Esat Özkan
07.11.2022 - 10:12

React native eğitimini dört gözle bekliyoruz