Kotlin ile Modern Android Geliştirme

← Rehbere Dön

Mobil uygulama dünyası baş döndürücü bir hızla değişiyor. Ve bu değişimin merkezinde, Google'ın 2019'da Android geliştirme için "First-Class" (birinci sınıf) ve resmi dil ilan ettiği Kotlin yer alıyor. Uzun yıllar Android platformunun mutlak hakimi olan Java, artık yerini daha modern, daha güvenli, fonksiyonel ve çok daha yazılabilir bir dil olan Kotlin'e bıraktı.

Neden Java Yerine Kotlin? (Paradigma Değişimi)

Eğer bir Android projesine sıfırdan başlıyorsanız, artık Java kullanmak için neredeyse hiçbir geçerli nedeniniz yok. Kotlin, Java Sanal Makinesi (JVM) üzerinde çalışır ve Java ile %100 tam uyumludur. Yani mevcut Java kodlarınızı silmeden, projenize doğrudan Kotlin ekleyebilirsiniz.

Kotlin'i benzersiz kılan temel geliştirmeler:

Coroutines: Asenkron Programlamanın Zarif Hali

Mobil uygulamalarda ana kural şudur: "Ana iş parçacığında (Main Thread) asla uzun süren işlem yapma!" (Veritabanına bağlanmak, internetten resim indirmek vb.). Aksi takdirde uygulama donar ve çöker.

Eskiden AsyncTask, RxJava veya Callbacks (geri çağırmalar) kullanılırdı ve kod "Callback Hell" dediğimiz çorbaya dönerdi. Kotlin Coroutines (Korutinler) ile bu sorunu kökten çözdü.

// Retrofit ile ağ isteği atan bir Coroutine örneği
import kotlinx.coroutines.*

fun fetchUserData(userId: String) {
    // Arka plan iş parçacığında (IO) çalıştır
    GlobalScope.launch(Dispatchers.IO) {
        try {
            val user = api.getUser(userId) // Ağ isteği engelleme yapmaz
            
            // Sonucu göstermek için Ana iş parçacığına (Main) dön
            withContext(Dispatchers.Main) {
                updateUI(user)
            }
        } catch (e: Exception) {
            // Hata yakalama
        }
    }
}

Korutinler sanki senkron ve düz bir kodmuş gibi okunur ama arkada binlerce ağır işlemi sistemi hiç yormadan asenkron olarak halleder. Maliyetleri thread (iş parçacığı) yaratmaya göre inanılmaz derecede ucuzdur.

Jetpack Compose ile Oyunun Kuralları Değişti

Kotlin'in dil özellikleri harikaydı, ancak Android'in yıllanmış XML tabanlı arayüz sistemi (View sistemi) hala hantal bırakıyordu. Google buna cevap olarak Jetpack Compose'u tanıttı.

Compose, React veya Flutter'a benzer şekilde Declerative (Bildirimsel) bir arayüz aracıdır. Artık ekran tasarımlarını XML dosyalarında uzun uzun yazmak yerine, doğrudan Kotlin kodunuzun içinde fonksiyonlar halinde yazıyorsunuz. Durum (State) değiştiğinde ekran otomatik olarak yeniden çizilir (Recomposition).

Basit Bir Compose Örneği

import androidx.compose.material.Text
import androidx.compose.material.Button
import androidx.compose.runtime.*
import androidx.compose.foundation.layout.Column

@Composable
fun CounterScreen() {
    // State tanımlaması: Değer değiştiğinde UI güncellenir
    var count by remember { mutableStateOf(0) }

    Column {
        Text(text = "Tıklama Sayısı: \$count")
        
        Button(onClick = { count++ }) {
            Text("Beni Tıkla")
        }
    }
}

Yukarıdaki kod, hem ekranın tasarımını (Text, Button) hem de mantığını (count++) tek bir yerde barındırır. Eski XML yapısındaki TextView tanımları, findViewById bağlamaları, DataBinding veya ViewBinding kalabalığı tamamen ortadan kalkmıştır.

Gelecek: Kotlin Multiplatform (KMP)

Kotlin sadece Android ile sınırlı kalmıyor. JetBrains'in son yıllarda üzerine titrediği Kotlin Multiplatform sayesinde; Android, iOS, Masaüstü ve Web platformları için arka plan (mantık) kodunuzu tek bir dil (Kotlin) ile yazıp hepsinde native (yerel) performansla çalıştırabiliyorsunuz. Flutter'dan farkı ise, UI tarafını ister ortak birleştirin (Compose Multiplatform), isterseniz her platformun kendi native UI bileşenlerine bırakın.

Kaynaklar ve Gelişim Yol Haritası

Üzer Teknoloji olarak mobil uygulama projelerimizde (örn: Kodmania, e-ticaret çözümleri) %100 Kotlin, MVVM mimarisi ve modern Jetpack Compose kütüphanelerini kullanarak yüksek performanslı, çökmeyen ve bakımı kolay sürdürülebilir ürünler geliştiriyoruz.