Menu

React Native

  • 09.02.2019 16:47

React Native Nedir ? 

React Native yakın zamanda facebook tarafından open source edilmiş, Javascript ile native uygulama geliştirmeye yarayan bir javascript kütüphanesi. React Native aslında adı üzerinde, ReactJS çatısını baz alarak Native arayüzler aracılığıyla mobil uygulama yazılmasını sağlayan bir geliştirme ortamıdır. Daha önce söylediğim gibi, webview içinde çalışan HTML5 mobil uygulamalar gibi değil doğrudan javascript ile native uygulama geliştirebiliyorsunuz. Bunun bazı dezavantajları olmakla birlikte bir kere öğrendiğinizde aslında hem web siteleri geliştirmek için React, hemde mobil uygulamalar yazmak için React Native kullanabiliyor olacaksınız. React Native'in mottosuda zaten bize bu avantajı söylüyor.

Learn Once, Write Anywhere ("Bir kere öğren, her yerde yaz")

Bu söz aslında React Native'in en büyük avantajını gösteriyor. ReactJS ve JavaScript öğrenerek Web, IOS ve Android uygulama geliştirilebilir. Kısaca özetlersek "Bir kere React öğren, öğrendiğini her platformda geliştir." diyebiliriz.

                                           Ä°lgili resim      

React Native Nasıl Çalışır ?

Native arayüz bileşenlerini barındırdığı için klasik React’teki component yapısında kullanılan <div> bileşeni yerine Android ve iOS’teki arayüzü karşılığına dönüşecek olan <View> bileşeni, <img> yerine ise <Image> bileşeni kullanılır. Aslında <View> ve <Image> gibi bileşenler Facebook tarafından Android ve iOS karşılıklarının kodlanmasıyla oluşturulmuş yapılardır. Yani siz bu bileşenleri kullandığınızda, çalıştırılan işletim sistemine göre arka planda gerçekten de native karşılıklarına dönüştürülürler. Peki bu yapı tam olarak nasıl işliyor? Yazılan JSX kodu, uygulamanın çalışma zamanında Android ve iOS platformları için ayrı olarak tasarlanan köprüler yardımıyla ilgili platformun Native bileşenlerine dönüştürülüyor ve uygulamanın native olarak yazılmasıyla arasında bir fark kalmıyor. Bu olayın bir dezavantajı da var elbette, çalışma zamanında native bileşene render etme operasyonu aslında CPU tüketen bir işlem. Buna bağlı olarak React Native uygulamaları, native uygulamalara kıyasla biraz daha fazla pil tüketimine sahip olacaktır. Bu fark çok küçük olduğu için genel anlamda son kullanıcının hissedeceği bir etki oluşturmayacaktır.

Aslında React Native’in, sadece UI bileşenleri ve cihaz API’larına erişim için “Native” özellikler taşıdığını belirtmekte yarar var. Zira yazdığınız JS kodu aslında uygulamanın çalıştığı cihazın JS motoru tarafından çalışıyor ve Xamarin’de olduğu gibi native kodlara dönüştürülmüyor. Bu nedenle görüntü işleme ve oyun gibi daha spesifik uygulamalar oluşturacaksanız React Native yerine ilgili platformun native geliştiriminden devam etmek çok daha mantıkldır. Bu kullanım alanları haricinde, web servisten veri çekme, gelen veriyi UI’a basma ve çeşitli birtakım “basit” operasyonlarda React Native daha kullanışlı olacaktır. Yazılan kodun JS kodu olmasının native koda göre en büyük avantajı belki de derleme gerektirmemesi. Bu özelliği çok iyi kullanan React Native, uygulamayı bir kez telefona atmanız halinde yapılan kod değişiklikleri “hot reloading” denilen yöntemle derleme gerektirmeksizin uygulamaya push edilebiliyor ve bu sayede yazılımcı için derle-çalıştır işleminden doğan süre kısalmış oluyor. Hatta daha önceki yazımızda anlattığımız CodePush sayesinde uygulamanızın güncellemesini store başvurusu yapmadan direkt olarak kullanıcılara yönlendirerek gerçekleştirebilirsiniz. Web’e göre aslında React Native’in bir avantajı daha var. JS kodunun ayrı bir Thread’de çalıştığı bu sistemde, JS kodunun çalışma süresi uzasa dahi UI Thread’i çalışmaya devam ettiği için uygulama arayüzü bu durumdan etkilenmiyor ve takılmadan devam edebiliyor.

Uzun lafın kısası React Native gün geçtikçe popülerleşmekte ve daha popülerleşecek gibi duruyor. JavaScript temelli olması ve tek sytnax ile her platforma hitap etmesi onu avantajlı hale getiriyor. Hızlı geliştirme, destek, debug kolaylığı gibi daha farklı avantajlarla ben de React Native geliştirmeye başladım ileride geliştirdiğim bir projeden de bahsebilirim. Naçizane bir öneri olarak kendini mobil veya web alanında geliştiren arkadaşların React Native üzerine geliştirmesi onlara çok şey katacaktır.

 

Bir sonraki yazımda görüşmek üzere.🖐🖐

 

Kaynak: React NativeZafer Ayan