Android App Development

Android Uygulama Geliştirme İçin Neden Kotlin Kullanmalıyız?

Ocak 3, 2022

Google, Kotlin’i ancak 2017 yılında Android uygulama geliştirme için ikinci resmi dil olarak kabul etti. 2019 yılının ikinci çeyreğinin sonunda ise Google, Android uygulama geliştiricileri için tercih edilen programlama dilinin Kotlin olduğunu ilan etti. Kotlin’in popülaritesi son iki yılda ezici bir şekilde arttı. Google’a göre, profesyonel Android geliştiricilerinin %50’sinden fazlası şu anda uygulama geliştirmek için bu dili kullanıyor ve en son Stack Overflow geliştirici anketine göre en popüler dördüncü programlama dili konumunda. Peki ama Kotlin nedir, Google neden tercih edilen dil olarak Kotlin’i öneriyor?

Hadi bunu inceleyelim!

Kotlin Nedir?

kotlinlang.org’a göre: “Kotlin, geliştiricileri daha mutlu etmeyi amaçlayan modern ama halihazırda olgunlaşmış bir programlama dilidir. Özlüdür, güvenlidir, Java ve diğer dillerle birlikte çalışabilir (interoperable) ve üretken bir programlama için kodun birden fazla platform arasında yeniden kullanılmasına yönelik birçok yol sunar.”. Temel olarak, fonksiyonel programlamaya da izin veren (Java gibi 🙂 ) nesne yönelimli bir programlama dilidir. IntelliJ IDEA’yı yaratan JetBrains ekipleri tarafından tasarlanmıştır ve şimdi muhtemelen Kotlin’in Java ile tamamen uyumlu olduğunu tahmin edeceksinizdir, elbette 🙂 Kotlin projenizde herhangi bir Java kütüphanesini netlik, araç desteği, güvenlik ve birlikte çalışabilirlik ile kullanabilirsiniz. Java’nın aksine, Kotlin kullanarak iOS uygulamaları da kodlayabilirsiniz.

Hmm tamam ama Java ve Kotlin arasındaki farklar nelerdir ve Kotlin neden Java’dan daha iyidir?

Resmi Kotlin web sitesine göre, Kotlin’in sahip olup da Java’nın sahip olmadığı özellikleri net bir şekilde görebilirsiniz (). Bir Android geliştiricisi olarak aklıma gelen ilk şey sözdizimi (syntax) olacaktır. Kotlin ile çalışırken birçok kod satırından tasarruf edebiliriz. Temel olarak açıklayayım. Java’da Veri Transfer Nesneleri (Data Transfer Objects – DTO) yazıyorsanız, kodunuz muhtemelen hashCode, equals, toString, getter’lar, setter’lar ve constructor’lar (yapıcı metotlar) ile benzer görünecektir. Örneğin id, name, capacity, email, schoolName özelliklerine sahip basit bir Course nesnesi için aşağıda gösterildiği gibi yaklaşık 70’ten fazla kod satırına sahip olursunuz.

Bu “Course” nesnesi Kotlin’de nasıl görünecek?

Kotlin’de daha şeffaf ve anlaşılması daha kolay bir Course DTO nesnesi yazmak sadece tek bir kod satırı alır.

Brevity (Özözlülük / Kısalık)

Birçok geliştiriciye göre kısalığın hiçbir zaman okunabilirliğin önüne geçmemesi gerektiğine inanıyorum. Kalıp kodların (boilerplate) okunması zordur, daha fazla hata (bug) ile sonuçlanır ve bunları bulmaya çalışırken daha fazla zaman alır.

Göç (Java’dan Kotlin’e)

Android projelerinde hem Kotlin hem de Java dillerine aynı anda sahip olabilirsiniz. Bu, Java projenizi sadece küçük adımlarla kolayca Kotlin’e taşıyabileceğiniz anlamına gelir.

Akıllı Tip Dönüşümü (Smart Type Casting)

Çoğu durumda, Kotlin’de açık dönüşüm (explicit cast) operatörleri kullanmanıza gerek yoktur; çünkü derleyici, değişmez (immutable) değerler için “is” kontrollerini ve açık dönüşümleri takip eder ve gerektiğinde (güvenli) dönüşümleri otomatik olarak ekler. Söylemeye çalıştığım şey, Kotlin derleyicisinin kod mantığını izlediği ve nesne tipini otomatik olarak dönüştürdüğüdür, örneğin:

Örnek 1:

Örnek 2:

Lambdalar ve Yüksek Dereceli Fonksiyonlar (High-Order Functions)

Kotlin ile Java Lambdalarının geliştirilmiş versiyonunu kullanabilirsiniz. Kotlin fonksiyonları, değişkenlerde ve veri yapılarında saklanabilir, ayrıca yüksek dereceli fonksiyonlara argüman olarak aktarılabilir ve onlar tarafından döndürülebilir.

https://en.wikipedia.org/wiki/First-class_function

Size yüksek dereceli bir fonksiyon olan mapMutable için basit bir örnek vereyim. Dönüşüm değerlerini alır ve verilen dönüşüm fonksiyonunu orijinal dizinin her bir elemanına uygular, sonuçları verilen hedefe ekler ve mutable (değiştirilebilir) liste olarak döndürür.

Uygulamanızda bir menü listesi göstermek istediğinizi varsayalım. İlk olarak aşağıda verildiği gibi menü listesi öğesi veri sınıfını (data class) oluşturmanız gerekir (gerektiğinde değişkenleri değiştirebilirsiniz).

İkinci olarak, listenizde hangi öğe türlerinin olacağını belirlemeniz gerekir.

Son olarak, eğer o menüyü göstermek istiyorsan, xml dosyamızda recycler view kullanarak genel bir liste adaptörü (generic list adapter) oluşturmamız gerekir. Ancak; bunu size şu anda göstermeyeceğim çünkü bu bizim başka bir okuma bölümümüz olacak.

Şimdi size o listede mapMutable nesnenizi nasıl kullanabileceğinizi göstereceğim, ana menü öğelerimizin listesini göstermek için interface fonksiyonumuz var.

Ek olarak, sınıf render edilirken listeyi varsayılan olarak ayarlamak istediğimizde, onViewCreated fonksiyonumuzda listeyi ayarlamak için setDefault fonksiyonumuz var.

Yerleşik Null Güvenliği, Ham Tiplerin Olmaması, Kontrollü İstisnaların Olmaması

Bir Java veya Android geliştiricisi olarak hepimiz Null Pointer Exception (Boş Referans İstisnası) ile karşılaşmışızdır ve bu istisna uygulamaları kolayca yok edebilir. https://kotlinlang.org/docs/null-safety.html#safe-calls Kotlin, yapısına yerleşik null güvenliği (inherent null safety) dahil ederek bu sorunu çözer. Bu özellik, geliştiricilerin sorunla başa çıkmak için ek kod yazma ihtiyacını ortadan kaldırır. https://en.wikipedia.org/wiki/Tony_Hoare#Apologies_and_retractions

Ham tipler (raw types) bir ClassCastException hatasına neden olabilir ve bu hata derleme sırasında değil, yürütme (çalışma zamanı) sırasında meydana gelecektir. Kotlin ham tipleri desteklemez, daha güvenli tipte (type-safe) kodlar üretir.

Kontrollü istisnalar (checked exceptions) genellikle gereksizdir ve her catch bloğunun boş kalmasına neden olur (aslında her zaman olduğu gibi 🙂 ). Geliştiriciler var olmayan kontrollü istisnaları sevmezler çünkü boş catch blokları, var olmayan bir istisnayı bulmak için kodu aramaya zorlar. Sonuç olarak Kotlin bunları tamamen ortadan kaldırarak söz kalabalığını azaltır ve tip güvenliğini artırır.

Java’nın Sonu mu Geliyor?

Elbette HAYIR!

Java, programcılara yardımcı olmak için çok sayıda açık kaynaklı araç ve kütüphane ile birlikte gelen, iyi bilinen bir programlama dilidir. Aslına bakılırsa, bu dil mükemmel değildir ve Java’nın bile geliştiricinin işini zorlaştırabilecek sorunları vardır. Kotlin, genel olarak Java ekosistemini geliştirirken yaygın programlama sorunlarının çözülmesine yardımcı olur. Kotlin, son dört yılda Android Studio için daha kararlı ve tutarlı bir geliştirme alternatifine dönüştü. Tüm geliştiricilerin 2017’de tahmin ettiği gibi Kotlin, Android Geliştirme için tercih edilen dil olarak Java’nın yerini aldı. Bugün bile birçok şirket projelerini aynı anda Kotlin ve Java ile yapıyor, birinin diğerine baskın çıkmadan bir arada var olabileceklerini düşünüyorlar.

Yazar: Erdi Koç

Tags

Android Android App Development Java Kotlin