🚀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).
Last updated
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).
Last updated
© 2024 ~ Yunus Emre Ak ~ yEmreAk
👁️ 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
📢 Çok büyük projeleri parça parça geçirmeniz tavsiye edilir
💦 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)
✨ 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
📈 Kotlin class
veya data class
yapısı ile get
ve set
kullanımı gerekmez
🙄 Java ile resmin solundaki yapı gereklidir
🌌 Get set olmadan direkt olarak kullanabilirsiniz
🧙♂ Kotlin, onu sizin için halletmekte
🤝 Koşullu değer atama işlemlerini destekler
📈 Sıradan switch yapısına göre daha verimlidir
💦 Gereksiz yere parantez (
kullanımı yoktur
⚙️ Bu yapı ile otomatik olarak son fonksiyona tanımlanan işlemler atanır
📢 Functional argument olursa, sadece metot {}
kullanılması durumunda sadece son argümana değer atanır
💁♂️ 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
🚀 Android Kotlin Extension'ları Android KTX paketi altındadır
🎯 Range metodu kullanılarak diziler parçalanabilmekte
🐥 Çok kolay kullanımı vardır
🐍 Python dizi parçalama işlemlerine benzemektedir
🚀 toTypedArray
eklentisi ile direkt olarak List'i argümana çevirebilirsiniz
📈 Java'dan çok daha verimli
🧙♂ Detaylı bilgi için Fonksiyonlar alanına bakabilirsin.
✨ Değişkenlerin adları ile onlara değer atayabilirsin
⭐ Python gibi dillerde olan bir kullanımdır
📢 Functional argument olursa, sadece metot {}
kullanılması durumunda sadece son argümana değer atanır
💁♂️ Fonksiyonlar obje ise parametre olarak da kullanılabilir
💡 Tanımlama şekli ile parametre olarak verilebilir
👪 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.
👇 Metotların üzerine geldiğinizde (hover) açıklamasında doküman linki olur
⭐ Link üzerinden kullanım örneklerine erişirsiniz
🔗 Kotlin otomatik olarak xml idlerini projeye dahil eder
👨💻 import kotlinx.android.synthetic.main.<layour>.*
ile dahil edilir
💦 findViewByID
metoduna gerek yoktur
📢 İzin tanımlanmadığında hata verir
💁♂️ @SupressLint("MissingPermission")
ile bunu engelleyebilirsiniz
🤭 "Ne yaptığımın farkındayım, bana bulaşma" demek gibi
🕊️ 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.
👮♂️ 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.