🚀Kotlin'in Java'ya Göre Avantajları (Kotlin vs Java)

Kotlin’i Java’ya nazaran daha kullanışlı, avantajlı (ve havalı) kılan nedir, Kotlin'in avantajları nelerdir, neden Android için Kotlin kullanmalıyız? (kotlin vs java, java vs kotlin).

🏂 Kotlin Dünyasına Giriş

  • 👁️ Açık kaynaklıdır (Java 13 kapalı, openJDK hariç)

  • 🕰️ Java 8 eskidir, java 13 çıkmıştır

  • 🚀 Proje Kotlin dahi olsa Java sınıfları oluşturabilirsin

  • 💫 Java kodlarını Convert Java File to Kotlin komutu ile Kotlin kodlarına çevirebilirsin

  • 💁‍♂️ Tüm paketi çevirmek için paketi seç ve bu komutu kullan

  • 👀 Neden geçmen gerektiğini öğrenmek için yazıyı okumaya devam et

✨ Değişken Tanımlaması

  • 💦 Java'daki final yapısı yerine daha sade bir arayüz sunar

  • 🚀 Değişken türlerinin tanımlanmasına gerek yoktur

  • 😱 Fonksiyon değişkenleri tanımlanabilir

  • ⚡ Statik değişkenler için scope sunar

  • 🕐 Daha sonra tanımlanacak değişkenler oluşturulabilir (lateinit)

🧐 Size birini mi anımsattı? (🐍 Python)

🐥 Nullable Objeler

  • ✨ Java'daki NullPointerException hatalarına odaklı bir çalışmadır

  • 🌌 Objeler null olabilir veya null olamaz şeklinde oluşturulur

  • 💁‍♂️ Default olarak null olamaz olarak atanır

🍎 Veri Sınıfları

  • 📈 Kotlin class veya data class yapısı ile get ve set kullanımı gerekmez

  • 🙄 Java ile resmin solundaki yapı gereklidir

🐣 Get Set Kullanımı

  • 🌌 Get set olmadan direkt olarak kullanabilirsiniz

  • ‍🧙‍♂ Kotlin, onu sizin için halletmekte

👮‍♂️ Switch - Case

  • 🤝 Koşullu değer atama işlemlerini destekler

  • 📈 Sıradan switch yapısına göre daha verimlidir

💁‍♂️ Functional Arguments

  • 💦 Gereksiz yere parantez ( kullanımı yoktur

  • ⚙️ Bu yapı ile otomatik olarak son fonksiyona tanımlanan işlemler atanır

➕ Function Extension

  • 💁‍♂️ Tanımlı olan sınıflara . operatörü ile metotlar ekleyebilirsiniz

  • 👇 Alttaki örnekte Uri sınıfına getInputStream metodu ekliyoruz

📢 Uri sınıfı temel java sınıflarından birisidir

🔪 Dizileri Parçalama

  • 🎯 Range metodu kullanılarak diziler parçalanabilmekte

  • 🐥 Çok kolay kullanımı vardır

🐍 Python dizi parçalama işlemlerine benzemektedir

💱 Dizileri Dönüştürme

  • 🚀 toTypedArrayeklentisi ile direkt olarak List'i argümana çevirebilirsiniz

📈 Java'dan çok daha verimli

‍🧙‍♂ Detaylı bilgi için Fonksiyonlar alanına bakabilirsin.

💎 Keyword Argument

  • ✨ Değişkenlerin adları ile onlara değer atayabilirsin

  • ⭐ Python gibi dillerde olan bir kullanımdır

💠 Parametre Olarak Fonksiyon

  • 💁‍♂️ Fonksiyonlar obje ise parametre olarak da kullanılabilir

  • 💡 Tanımlama şekli ile parametre olarak verilebilir

👨‍💼 Run - Apply - Let - Also

  • 👪 Bir değişkenin birden fazla metodunu kullanmayı sağar

  • 🐣 Apply objelerine değer atarsınız

  • ▶️ Run ile alt metotlarını kullanırsın, sonucunu döndürürsünüz

  • 🙋‍♂️ Let ile objeyi koşullu kullanabilirsin

  • 💁‍♂️ Also ile "işlemi bitirmeden bir de bunu yap" deriz

  • 📈 Tekrar tekrar yazmayı engeller

‍🧙‍♂ Detaylı bilgi için Scope Function ve Function Selections alanlarına bakabilirsin.

👀 Dokümantasyon Linkleri

  • 👇 Metotların üzerine geldiğinizde (hover) açıklamasında doküman linki olur

  • ⭐ Link üzerinden kullanım örneklerine erişirsiniz

📃 XML ID'lerini Koda Import Etme

  • 🔗 Kotlin otomatik olarak xml idlerini projeye dahil eder

  • 👨‍💻 import kotlinx.android.synthetic.main.<layour>.* ile dahil edilir

  • 💦 findViewByID metoduna gerek yoktur

👮‍♂️ İzinlerin Kontrolü

  • 📢 İzin tanımlanmadığında hata verir

  • 💁‍♂️ @SupressLint("MissingPermission") ile bunu engelleyebilirsiniz

  • 🤭 "Ne yaptığımın farkındayım, bana bulaşma" demek gibi

🚧 Coroutine

  • 🕊️ Thread işlemlerini kolaylaştıran bir hafif yapıdır

  • 👷‍♂️ Coroutine ile inline thread kullanabilirsin

  • 👮‍♂️ Main (UI), IO, Default thread yapıları ile arka plan işlemlerini yönetirsiniz

  • ✨ Otomatik olarak optimize edilirler

🧱 Dispatchers.Main
🔣 Dispatchers.IO
🎳 Dispatchers.Default

UI Thread işlemleri

Disk ve network işlemleri

CPU gerektiren işlemler

Fonksiyon çağırma

Database

Liste sıralama

View işlemleri

Dosya okuma & yazma

JSON parsing

LiveData işlemleri

Ağ işlemleri

DiffUtils

‍🧙‍♂ Detaylı bilgi için Coroutine alanına bakabilirsin.

🗃️ RoomDB Coroutine Scope

  • 👮‍♂️ suspend anahtar kelimesi ile thread gerektiren metotlar belirlenir

  • ❌ Thread gerektiren metotlar UI Thread üzerinde çalıştırılamaz

  • 🌌 Coroutine scope içerisinde kendilerine özgü thread ile çalıştırılır

  • 👋 AsyncTask'a elveda (zaten sevmedim 🙄)

‍🧙‍♂ Detaylı bilgi için RoomDB - Android sayfasına bakabilirsin.

🔗 Faydalı Kaynaklar

🧐 Daha Fazla

Last updated

Was this helpful?