CB DIGITAL
Tüm Makalelere Dön
Yazılım Geliştirme
3 Mart 2026
6 dakika okuma süresi

Kotlin Multiplatform ile Kod Paylaşımı: Modern Yazılım Geliştirmenin Geleceği

Cengiz Bozdemir
Cengiz BozdemirKurumsal Yazılım Mimarı
Kotlin Multiplatform ile Kod Paylaşımı: Modern Yazılım Geliştirmenin Geleceği

Modern Yazılım Dünyasında Kotlin Multiplatform (KMP) Devrimi

Günümüzde mobil uygulama geliştirme ekosistemi, kullanıcı beklentilerinin artması ve pazarın hızla değişmesiyle birlikte büyük bir dönüşüm içerisindedir. Şirketler, hem Android hem de iOS platformlarında varlık göstermek isterken, geliştirme maliyetlerini düşürmek ve pazara çıkış süresini (Time-to-Market) kısaltmak için çeşitli çözümler aramaktadır. İşte bu noktada, JetBrains tarafından geliştirilen Kotlin Multiplatform (KMP), geleneksel çapraz platform (cross-platform) yaklaşımlarına tamamen farklı bir perspektif getirerek sahneye çıkıyor.

Kotlin Multiplatform, diğer popüler framework'lerin aksine, kullanıcı arayüzünü (UI) tekilleştirmek yerine, uygulamanın çekirdek mantığını (business logic) platformlar arasında paylaşmayı hedefler. Bu yaklaşım, geliştiricilere her iki platformda da tamamen native bir deneyim sunma imkanı tanırken, aynı zamanda kodun büyük bir kısmını sadece bir kez yazma avantajı sağlar. KMP'nin sunduğu bu esneklik, onu sadece bir teknoloji değil, modern yazılım mimarilerinde stratejik bir tercih haline getirmiştir.

KMP ve Diğer Cross-Platform Yaklaşımlar Arasındaki Farklar

Piyasada yer alan Flutter veya React Native gibi teknolojiler, genellikle "bir kez yaz, her yerde çalıştır" felsefesini benimserler. Bu araçlar, kendi render motorlarını kullanarak platform fark etmeksizin aynı arayüzü sunmaya çalışırlar. Ancak bu durum, bazen platforma özgü bileşenlerin (örneğin iOS'taki bir liste kaydırma efekti veya Android'deki geri butonu davranışı) doğal hissettirmemesine neden olabilir. Ayrıca, platforma özgü API'lara erişim gerektiğinde karmaşık köprüler (bridges) kurulması gerekir.

Kotlin Multiplatform ise "iş mantığını paylaş, UI'yı native tut" mottosuyla hareket eder. KMP ile yazılan bir kod, Android tarafında JVM (Java Virtual Machine) üzerinde çalışırken, iOS tarafında Kotlin/Native derleyicisi aracılığıyla doğrudan Objective-C/Swift ile uyumlu bir binary yapıya dönüşür. Bu, uygulamanın performans kaybı yaşamadan, işletim sisteminin sunduğu tüm native özelliklere doğrudan erişebilmesi anlamına gelir. Bu mimari, geliştiricilerin platform sınırlamalarına takılmadan en yüksek performansı elde etmelerini sağlar.

KMP'nin Temel Çalışma Prensibi: Paylaşılan İş Mantığı

Bir mobil uygulamayı düşündüğümüzde; veri modelleri, ağ istekleri (API çağrıları), veritabanı işlemleri, doğrulama kuralları ve durum yönetimi (state management) gibi unsurlar genellikle her iki platformda da aynıdır. KMP, bu ortak alanı commonMain adı verilen bir modülde toplar. Bu modül, saf Kotlin koduyla yazılır ve herhangi bir platform bağımlılığı içermez.

Platforma özgü kod yazılması gereken durumlarda ise KMP'nin en güçlü özelliklerinden biri olan expect/actual mekanizması devreye girer. Bu mekanizma, ortak kod içerisinde bir fonksiyonun veya sınıfın imzasını (expect) tanımlamanıza, ardından her platformun kendi modülünde (androidMain, iosMain) bu tanımın karşılığını (actual) yazmanıza olanak tanır. Örneğin, cihazın benzersiz kimliğini (UUID) almak istiyorsanız, ortak kodda bunu talep edersiniz; Android tarafında java.util.UUID kullanırken, iOS tarafında platform.Foundation.NSUUID kullanarak implementasyonu tamamlarsınız.

Expect ve Actual Mekanizması ile Esneklik

  • Expect: Ortak modülde tanımlanan, "Böyle bir özellik olacak" diyen bir sözleşmedir.
  • Actual: Platforma özel modüllerde (Android, iOS, Desktop) bu sözleşmenin o platformun kütüphaneleriyle gerçekleştirilmesidir.

Bu yapı sayesinde, geliştiriciler platformun sunduğu en güncel ve en hızlı API'ları doğrudan kullanabilirler. Bu, soyutlama katmanlarının getirdiği hantallığı ortadan kaldırır ve projeyi geleceğe hazır hale getirir.

Proje Yapısı ve Modüler Mimari

Bir Kotlin Multiplatform projesi genellikle çok modüllü bir yapıya sahiptir. Gradle yapılandırması üzerinden yönetilen bu modüller, kodun nerede derleneceğini ve hangi hedeflere (targets) gönderileceğini belirler. Standart bir KMP projesinde şu klasör yapılarını görmek mümkündür:

  • commonMain: Platform bağımsız iş mantığının, modellerin ve arayüzlerin (interface) bulunduğu ana klasör.
  • androidMain: Android'e özgü sınıfların ve Android SDK bağımlılıklarının bulunduğu alan.
  • iosMain: iOS tarafında çalışan, Kotlin/Native ile Objective-C framework'lerine erişen kodların bulunduğu alan.
  • commonTest: Paylaşılan mantığı test etmek için kullanılan birim testler (Unit Tests).

Bu modülerlik, ekiplerin daha düzenli çalışmasını sağlar. Özellikle büyük ölçekli projelerde, iş mantığının tek bir yerden yönetilmesi, hata payını minimize eder ve test süreçlerini inanılmaz derecede hızlandırır. Bir bug düzeltildiğinde veya yeni bir özellik eklendiğinde, bu değişiklik her iki platforma da anında yansır.

Kotlin Multiplatform Ekosistemi ve Kütüphaneler

KMP'nin başarısının arkasındaki en büyük etkenlerden biri, hızla büyüyen kütüphane ekosistemidir. Saf Kotlin ile yazılan bu kütüphaneler, platform bağımsız bir şekilde çalışabilirler. İşte modern bir KMP projesinde mutlaka yer alması gereken temel araçlar:

Ağ İşlemleri için Ktor

Ktor, JetBrains tarafından geliştirilen ve tamamen asenkron yapıda çalışan bir HTTP istemcisidir. KMP projelerinde ağ isteklerini yönetmek için standart haline gelmiştir. Coroutines desteği sayesinde, ağ çağrılarını bloklamayan bir yapıda gerçekleştirebilirsiniz. Ktor, hem Android hem de iOS'un yerel ağ kütüphanelerini (OkHttp, NSURLSession) altta kullanarak en iyi performansı sağlar.

Yerel Veritabanı için SQLDelight

Verileri cihaz üzerinde saklamak gerektiğinde SQLDelight, SQL sorgularından tür güvenli (type-safe) Kotlin kodları üreterek işinizi kolaylaştırır. SQLite tabanlı çalışan bu kütüphane, veritabanı şemasını bir kez tanımlamanıza ve her iki platformda da aynı veritabanı mantığını kullanmanıza olanak tanır.

Veri Serileştirme: Kotlinx Serialization

JSON verilerini Kotlin nesnelerine dönüştürmek veya tam tersini yapmak için kotlinx.serialization kullanılır. Bu kütüphane, Reflection (yansıma) kullanmadığı için oldukça hızlıdır ve KMP projeleriyle tam uyumludur.

Performans ve Bellek Yönetimi: Kotlin/Native Derleyicisi

KMP'nin iOS tarafındaki performansı, Kotlin/Native derleyicisine dayanır. Kotlin kodu, LLVM (Low Level Virtual Machine) kullanılarak makine koduna dönüştürülür. Bu süreçte en kritik konu bellek yönetimidir. Kotlin 1.9.0 sürümüyle birlikte gelen Yeni Bellek Yönetimi (New Memory Manager) modeli, daha önce yaşanan "freeze" (donma) ve "thread" (iş parçacığı) kısıtlamalarını ortadan kaldırmıştır.

Artık Kotlin/Native, modern bir Garbage Collector (GC) yapısına sahiptir ve Swift/Objective-C ile bellek yönetimi konusunda tam uyumlu çalışır. Bu gelişim, KMP'nin kurumsal düzeydeki uygulamalar için "üretim hazır" (production-ready) bir teknoloji olmasını sağlamıştır.

Compose Multiplatform: UI Paylaşımına Yeni Bir Soluk

Her ne kadar KMP'nin temel odak noktası iş mantığı olsa da, Compose Multiplatform'un yükselişiyle birlikte UI paylaşımı da mümkün hale gelmiştir. Jetpack Compose tabanlı olan bu teknoloji; Android, iOS, Desktop ve Web üzerinde aynı UI kodunu kullanmanıza olanak tanır. Ancak KMP'nin güzelliği burada yatar: UI paylaşmak isteyip istemediğiniz tamamen size bağlıdır. İsterseniz sadece iş mantığını paylaşıp UI'ı SwiftUI ve Jetpack Compose ile ayrı ayrı yazabilir, isterseniz Compose Multiplatform ile UI'ı da ortaklaştırabilirsiniz.

Kurumsal Projelerde KMP Kullanımı: Avantajlar ve Riskler

KMP'ye geçiş yapmadan önce bir strateji belirlemek kritiktir. Brownfield (mevcut bir projeye KMP ekleme) veya Greenfield (sıfırdan KMP ile başlama) yaklaşımlarından hangisinin seçileceği, projenin başarısını etkiler. KMP'nin sunduğu avantajlar şunlardır:

  • Kod Tekrarının Azalması: İş mantığında %70'e varan kod paylaşımı sağlar.
  • Hata Yönetimi: Merkezi bir iş mantığı, hataların tek bir yerde fix edilmesini sağlar.
  • Ekip Verimliliği: Android ve iOS geliştiricileri aynı dil ve araç setini kullanarak daha yakın çalışabilirler.
  • Native Performans: Kullanıcılar, uygulamanın native olmadığını asla hissetmezler.

Bununla birlikte, öğrenme eğrisi ve iOS tarafındaki hata ayıklama (debugging) süreçlerinin bazen karmaşık olabilmesi gibi zorluklar da göz önünde bulundurulmalıdır. Ancak Kotlin ekosisteminin gücü ve topluluk desteği bu zorlukları hızla aşmaktadır.

Gelecek Vizyonu ve Sonuç

Kotlin Multiplatform, mobil geliştirme dünyasında "gümüş kurşun" olma yolunda ilerliyor. Geliştiricilere dayatmalarda bulunmayan, onların ihtiyaçlarına göre şekil alan esnek yapısı, KMP'yi rakiplerinden ayırıyor. Büyük teknoloji devlerinin (Netflix, Philips, CashApp) KMP'yi benimsemesi, bu teknolojinin rüştünü ispatladığının en büyük kanıtıdır.

Eğer siz de sürdürülebilir, yüksek performanslı ve maliyet etkin bir mobil uygulama geliştirmek istiyorsanız, Kotlin Multiplatform dünyasına adım atmak için en doğru zaman şimdidir. Native güç ile kod paylaşımının konforunu birleştiren bu teknoloji, yazılım geliştirme standartlarını yeniden belirliyor.

#kotlin#kmp#mobil uygulama#yazılım geliştirme#android#ios
Cengiz Bozdemir

Cengiz Bozdemir

Kurumsal Yazılım Mimarı & Full-Stack Geliştirici

İşletmeniz veya girişiminiz için yüksek performanslı sistemler, özel yazılımlar ve yapay zeka otomasyonları inşa ediyorum.

KURUMSAL YAZILIM MİMARİSİ18+ YILLIK TECRÜBEPHP 8.3 & LARAVELFLUTTER & MOBİL ÇÖZÜMLERNEXT.JS & REACT UYGULAMALARIYAPAY ZEKA & OTOMASYONE-TİCARET & PAZARYERİ ENTEGRASYONUCENGİZ BOZDEMİRCBDIGITALKURUMSAL YAZILIM MİMARİSİ18+ YILLIK TECRÜBEPHP 8.3 & LARAVELFLUTTER & MOBİL ÇÖZÜMLERNEXT.JS & REACT UYGULAMALARIYAPAY ZEKA & OTOMASYONE-TİCARET & PAZARYERİ ENTEGRASYONUCENGİZ BOZDEMİRCBDIGITALKURUMSAL YAZILIM MİMARİSİ18+ YILLIK TECRÜBEPHP 8.3 & LARAVELFLUTTER & MOBİL ÇÖZÜMLERNEXT.JS & REACT UYGULAMALARIYAPAY ZEKA & OTOMASYONE-TİCARET & PAZARYERİ ENTEGRASYONUCENGİZ BOZDEMİRCBDIGITALKURUMSAL YAZILIM MİMARİSİ18+ YILLIK TECRÜBEPHP 8.3 & LARAVELFLUTTER & MOBİL ÇÖZÜMLERNEXT.JS & REACT UYGULAMALARIYAPAY ZEKA & OTOMASYONE-TİCARET & PAZARYERİ ENTEGRASYONUCENGİZ BOZDEMİRCBDIGITAL
© 2026 CB DIGITAL Tüm hakları saklıdır.