Java vs Kotlin Hangisi Tercih Edilmeli

Kotlin mobil uygulama geliştirme topluluğu gittikçe büyüyor. Geçen yıl, Google, Kotlin’i Android uygulaması geliştirmenin ikinci resmi dili yaparak onayladı. O zamandan beri, Kotlin ayrıca Google Cloud Platform, Spring Framework ve Gradle ile ortaklıklar kurmaktadır. Android mobil uygulama geliştiricileri nihayet bekledikleri pragmatik, modern ve sezgisel bir dile sahip oldular.

Kotlin Nedir?

Kotlin, Java Virtual Machine (JVM) ve JavaScript için statik olarak yazılmış bir programlama dilidir. Genel bir amaç dili olarak tanımlanan Kotlin, birlikte çalışabilirliği ve anlaşılabilirliği desteklemek için işlevsel özellikler sunar. Kotlin projesi, yüksek verimlilik arzusundan doğmuştur. Amaç, kodlama deneyimini pratik ve etkili bir şekilde geliştirmekti.

Kotlin, hem nesne yönelimli (OO) hem de işlevsel bir programlama (FP) dilidir. Geliştiricilerin her formdan öğeler eklemesine izin veren OO ve FP stilleriyle uyumludur. Kotlin, üst düzey fonksiyonları, fonksiyon türlerini ve lambdaları destekleyerek işlevsel programlama için mükemmel bir seçim olarak kendisini göstermektedir.

Kotlin’in asıl odağı karma dilli projeleri mümkün kılmaktır. Kotlin, yeni bir dil öğrenmeyi kolay hale getiren Java ve Objective C ile tamamen uyumludur. Kotlin, gelişmiş ifadelerin yanı sıra öz ifadeler ve soyutlamalar da sunar. Kotlin’i Java ile kullanmak, Android geliştiricileri için büyük bir kazanç olan boilerplate koduna duyulan ihtiyacı ortadan kaldırır.

Kotlin 2018: İncelenen Yıl

Google I/O 2017’den sonra, Kotlin Android gelişiminde büyük bir büyüme gördü. O zamandan beri, JetBrains ilk KotlinConf’a ev sahipliği yaptı ve Kotlin/Native’in beta sürümünü açıkladı.

JetBrains geçen yıl Kotlin/Native’in ilk ön izlemesini yayınladı ve 2019′ itibariyle geliştiricilerin artık Kotlin/Native Beta’ya erişimi var. Kotlinverse’te, çapraz platform geliştirmenin benimsenmesi yavaş ilerliyor. Pusher’in Kotlin eyaleti, 3 bin katılımcının, bu çoğunluğun yalnızca çeyreği, Kotlin/Native’e yerleştiği bir tür çapraz platform desteğini kullandığını ortaya koyuyor.

Kotlin / Native, LLMV derleyici altyapısı üzerinden çalışır ve geliştiricilerin platforma özel modüller yazmalarını ve bunları doğrudan yerel ikili dosyalara derlemelerini sağlar. Kotlin/Native Beta ayrıca, desteklenen tüm platformları kapsayan çoklu platform yetenekleri yaratır ve iş mantığı, bileşenler arasında Android veya iOS uygulamaları olarak paylaşılabilir.

2018’de Airbnb, Kotlin’in lehine React Native’den uzaklaşmaya başladı. Aslında, yeni kodlarının yüzde 80’ini Kotlin’de yazmışlar. Bu nedenle, platformlar arası Kotlin geliştirmesinin benimsenmesi tartışmalı olmasına rağmen, büyük endüstri oyuncuları Kotlin’in sunduğu birçok avantajı dikkate alıyor.

Bu Java’nın sonu mu?

Geliştiricilerin bu konuda farklı fikirleri mevcut.

Java, geliştiricilere yardımcı olacak engin, açık kaynak kodlu araçlara ve kütüphanelere sahip saygın bir programlama dilidir. Bununla birlikte, hiçbir dil hatasız değildir ve Java bile geliştiricilerin işini sıkıcı hale getirebilecek komplikasyonlara sebep olmaktadır. Eğer olabilecek bir şey varsa o da şudur ki; Kotlin yaygın programlama sorunlarına çözüm getirecek ve Java ekosistemini bir bütün olarak iyileştirecektir.

Geçen yıl, Kotlin Android Studio için daha istikrarlı ve uygun bir geliştirme seçeneği haline geldi. Bazı geliştiriciler, Kotlin’in önümüzdeki yıllarda Android gelişimi için Java’yı kullanmayacağına inanıyor gibi görünüyor. Diğer uzmanlar ise Kotlin ve Java’nın biri diğerini saf dışı bırakmadan, birbirlerine paralel olarak var olduğunu düşünüyorlar.

Çoğunluk için, Kotlin’in güçlü yönleri dilin problemlerinden daha ağır basmaktadır. Java’da Android API tasarımını engelleyen kesin sınırlamalar vardır. Kotlin, özellikle geri dönütler, veri sınıfları ve alıcı/ayarlayıcı yazma açısından doğal olarak hafif, temiz ve çok daha az ayrıntılıdır. Başka bir deyişle, Kotlin, API tasarım eksikliklerine çözümler sunarak mevcut Java modellerini geliştirmek için özel olarak tasarlanmıştır.

Kotlin, Java’nın bazı zayıf yönleri ele almaktadır:

Kısalık

Birçok geliştirici Kotlin’i kısa ve öz olduğu için övmektedir. Bu Java için bilinmeyen bir durumdur; Ancak, okunabilirliğe, kısalık yerine her zaman öncelik vermelidir. Evet, Kotlin’in öz olan doğası bir geliştiricinin işini kolaylaştırıyor ve hata olasılığı daha az. Boilerplate kodunu okumak bir problemdir ve onları tanımlamak daha fazla hataya ve boşa harcanan zamana yol açar.

 

Yukarıdaki Java ile yazılmış bir hesap makinesi kodudur. Sağlıklı bir karşılaştırma için Kotlin ile yazılmış olan hesap makinesi kodu şöyledir:

Çok uzun gibi gözükmüyor olabilir, ancak bu hesap makinesinin Kotlin ile olan versiyonu, Java’daki işlevi programlamak için gereken kod satırının yarısıyla yazılmıştır. Kısalık verimlilik için çok önemli bir faktördür. Bir geliştiriciye her kod satırı ile daha fazla güç verildiğinde büyük projeler yazmak daha kolay hale gelir. Buradaki en önemli nokta, Kotlin’in kısalığına rağmen algılamayı göz ardı etmediğidir. Sözcük dizimi kısa ve öz, aynı zamanda da tatmin edici.

Birlikte Çalışabilirlik

Birlikte çalışabilirlik, Kotlin’in temel amacıdır. Projenin amacı, baştan sona Kotlin programcılarının kullanımına sunmak için mevcut bilgi ve uzmanlığı kullanmak idi. Geliştiriciler Kotlin’de mevcut Java kodunda kusursuz çalışan modülleri yazabilirler. Kotlin derleyicisi, byte kodunu yayarak iki dilin aynı projede aynı şekilde çalışmasına izin verir.

Dahili Null Güvenliği

Kotlin’in sistemi yerleşik olarak null güvenliğe sahiptir. Kötü  bir şöhreti olan NullPointerException, Android ve Java’nın geliştirme hatalarından büyük ölçüde sorumludur. Android, Null’un değer yokluğunu temsil ettiğine inanmaktadır, ancak null bir uygulamayı kolaylıkla yok edebilir. Kotlin bu sorunu içsel Null güvenliğini bir araya getirerek çözer. Bu ekleme, geliştiricilerin konuyla ilgilenmek için fazladan kod yazmamalarını sağlar.

Ham Tür Yok

Jenerikler devreye girmeden önce, ham tipler oldukça sık kullanılmıştır. Ham türler geriye dönük uyumluluk sağlar, ancak ham türler bir CastClassException atabilir ve hata derleme aşamasında değil, yürütme sırasında ortaya çıkar. Kotlin ham tiplere izin vermiyor ve sonuç olarak daha güvenli bir kod üretimi sağlıyor.

Kontrol Edilen İstisnalar Özelliği Yok

Java’daki kontrol edilen istisna özelliği problemli olabilir. Kontrol edilen istisnalar, derleyicinin bir istisnayı yakalaması veya yeniden atması zorlamasıdır. Gerçek şu ki, kontrol edilen istisnalar genellikle gereksizdir ve blokların boş tutulmasına neden olur. Var olmayan kontrol edilen istisnalar, geliştiriciler için bir problemdir; çünkü bunlar, daha önce gerçekleşmemiş olası bir istisnayı tanımlamak için kod aracılığıyla yabani otların arasına girmektir. Bir çözüm olarak, Kotlin bunları tamamen ortadan kaldırdı, bu da yine ayrıntılarını en aza indirir ve tip güvenliğini artırmaktadır.

Geliştiricilerin Kotlin’i Öğrenmesi Gerekiyor mu?

Yine, bu konuda da farklı fikirler mevcuttur.

Geliştiricilerin Kotlin’e geçiş yapması tamamen gerekli olmasa da, en nihayetinde bu dil ile karşılaşacaklar. Java’yı zaten biliyorsanız, Kotlin’i öğrenmeniz kolay olacaktır. Dil, uygulama geliştirmeyi büyük ölçüde etkilemeye hazır, bu nedenle temel bilgileri öğrenmek sıkıcı değil, hatta modern teknikler ve geliştirme stilleriyle herhangi bir geliştiricinin beceri setinin büyümesine yardımcı olacaktır.

Kotlin 2019 Görünümü

Amazon, Pinterest, Netflix, Uber ve Trello gibi devasa markaların tümü Kotlin’i kullanıyor, JetBrains ve Google’dan destek alıyor ve programlama diline neredeyse küresel bağlılık gösterdiğinde, Kotlin’in bir süre ortalıkta olacağını söylemek yanlış olmaz. Asıl soru şudur ki: Kotlin “bir kez yaz ve her yerde kullan” dilinin şampiyonu olur mu?

Kotlin, mobil uygulama geliştirme için hızlı bir şekilde üstün bir programlama dili olduğunu kanıtlıyor ve geliştiricilere modern programlamayı deneme imkanı sunuyor. Geliştiriciler, OO, FP, komut dosyası oluşturma ve sıfır çabayla bildirimsel paradigmalar arasında geçiş yapabilir ve bir programlama dilinin başarabilecekleri için kolayca yeni bir standart belirleyebilir.