🚀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 Kotlinkomutu 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
✨ Değişken Tanımlaması
💦 Java'daki
finalyapı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
NullPointerExceptionhataları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
classveyadata classyapısı ilegetvesetkullanı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
📢 Functional argument olursa, sadece metot {} kullanılması durumunda sadece son argümana değer atanır
➕ Function Extension
💁♂️ Tanımlı olan sınıflara
.operatörü ile metotlar ekleyebilirsiniz👇 Alttaki örnekte
UrisınıfınagetInputStreammetodu ekliyoruz
📢
Urisınıfı temel java sınıflarından birisidir

🚀 Android Kotlin Extension'ları Android KTX paketi altındadır
🔪 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
💎 Keyword Argument
✨ 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
💠 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
👀 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💦
findViewByIDmetoduna 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
👷♂️
Coroutineile inline thread kullanabilirsin👮♂️ Main (UI), IO, Default thread yapıları ile arka plan işlemlerini yönetirsiniz
✨ Otomatik olarak optimize edilirler
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
🗃️ RoomDB Coroutine Scope
👮♂️
suspendanahtar 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 🙄)
🔗 Faydalı Kaynaklar
🧐 Daha Fazla
Last updated
Was this helpful?