Ana sayfa / Blog

uygulama

Mobil Uygulama Geliştirme Dilleri: Swift, Kotlin, Flutter

Mobil uygulama geliştirme dilleri iki ana gruba ayrılır: her platformun kendi dili (iOS için Swift, Android için Kotlin) ve tek kod tabanıyla iki platforma çıkmanı sağlayan çatılar (Flutter ile Dart, React Native ile JavaScript/TypeScript). "Uygulama hangi dille yazılır?" sorusunun tek doğru cevabı yok; doğru dil, uygulamanın ne yaptığına ve bütçene bağlı.

Bu yazıda her seçeneğin ne işe yaradığını, hangi durumda mantıklı olduğunu ve uygulama yaptıracaksan teknoloji kararına ne kadar karışman gerektiğini anlatıyorum.

iOS uygulama geliştirme dilleri: Swift ve Objective-C

iPhone ve iPad uygulamaları için bugün standart dil Swift. Apple'ın kendi dili, arayüz tarafında SwiftUI ile birlikte kullanılıyor. Objective-C eski projelerde hâlâ karşına çıkar ama yeni bir uygulama için seçilmesi için bir sebep yok.

Swift'in avantajı, Apple'ın yeni özelliklerine (widget, canlı etkinlikler, sağlık verileri vb.) ilk günden erişmesi ve cihazda çok akıcı çalışması. Dezavantajı, yazdığın kodun yalnızca Apple cihazlarında çalışması. Android için ikinci bir uygulama yazman gerekir.

Android uygulama geliştirme dili: Kotlin

Android'in resmî ve tercih edilen dili Kotlin. Arayüz için Jetpack Compose kullanılır. Eskiden Java baskındı; yeni projelerin büyük kısmı artık Kotlin ile başlıyor. Swift gibi, Kotlin de platformun tüm özelliklerine doğrudan erişim verir ama kod yalnızca Android'e hizmet eder.

Flutter ve Dart: tek kodla iki mağaza

Flutter, Google'ın geliştirdiği arayüz çatısı; kod Dart diliyle yazılıyor. Bir kez yazdığın arayüz hem iOS hem Android'de aynı görünür ve çalışır. Swift Kotlin Flutter karşılaştırmasında Flutter'ın en güçlü yanı bu: tek ekip, tek kod tabanı, iki mağaza.

Zayıf yanı, çok yeni bir platform özelliğine ihtiyaç duyduğunda bazen o özelliği platformun kendi diliyle küçük bir köprü yazarak bağlaman gerekmesi. Çoğu iş uygulaması (üyelik, liste, form, ödeme, bildirim) için bu nadir bir durum.

React Native: JavaScript bilen ekipler için

React Native Meta'nın çatısı; JavaScript veya TypeScript ile yazılır. Web tarafında React kullanan ekipler için doğal bir geçiş sağlar. Flutter gibi tek kod tabanıyla iki platformu hedefler. İkisi arasındaki seçim çoğunlukla teknik değil, ekibin tecrübesiyle ilgilidir: ikisi de olgun ve yaygın.

Karşılaştırma tablosu

SeçenekDilPlatformEn uygun olduğu durum
Native iOSSwiftYalnızca iPhone/iPadApple'a özel, donanıma yakın uygulamalar
Native AndroidKotlinYalnızca AndroidAndroid'e özel, sistem seviyesi özellikler
FlutterDartiOS + Androidİki mağazaya birden çıkmak isteyen iş uygulamaları, özel tasarımlı arayüzler
React NativeJavaScript / TypeScriptiOS + AndroidWeb geçmişi olan ekipler, iki platform

Sunucu tarafı: uygulamanın görünmeyen yarısı

Üyelik, veritabanı, ödeme doğrulama ve bildirim gibi işler uygulamanın içinde değil, sunucuda döner. Bu tarafta kullanılan diller (Node.js/TypeScript, Python, Go gibi) ve veritabanları (çoğunlukla PostgreSQL) mobil dilden bağımsızdır. Uygulama yaptıracaksan teklifte sunucu tarafının da yazılı olarak yer aldığından emin ol. Verilerin nerede tutulacağı, KVKK ve GDPR gibi konularda da önemli bir karar.

Hangi dili seçmeli? Üç soru

  1. İki platforma da ihtiyacın var mı? Evetse ve bütçe sınırlıysa, tek kod tabanlı çatı (Flutter ya da React Native) genellikle makul bir başlangıçtır.
  2. Cihazın özel donanımına mı dayanıyorsun? Kamera ile gelişmiş görüntü işleme, Bluetooth cihazları, AR gibi konularda native gerekebilir.
  3. Uzun vadeli bakımı kim yapacak? Kod, bakımını yapabilecek birinin bildiği bir teknolojide olmalı. Bu yüzden "en moda" olanı değil, bulunabilir yeteneği olan teknolojiyi seç.

Yaptıracaksan teknolojiye ne kadar karışmalısın?

Çoğu fikir sahibi için bu karar teknik ekibe bırakılabilir; asıl önemli olan o kararın gerekçesini yazılı duymak. Şunları sor: neden bu teknoloji, kaynak kod bana mı ait, başka bir geliştirici bu kodu devralabilir mi? Süreç ve takvim tarafı için mobil uygulama geliştirme süreci yazımıza, iki platformun karşılaştırması için iOS ve Android uygulama geliştirme yazımıza bakabilirsin. Kaynak kod sahipliği konusunu uygulama yaptırma sözleşmesi yazısında ayrıca ele aldık.

Dil seçerken sık yapılan hatalar

Teknoloji kararını yazılı hâle getir

Geliştirici ya da ajansla çalışırken teknoloji seçimini teklife yazdır: hangi dil ve çatı kullanılacak, sunucu ve veritabanı nerede çalışacak, kod hangi depoda tutulacak ve sana nasıl teslim edilecek. Bu üç satır, ileride başka bir ekibe geçmek ya da küçük bir değişikliği başkasına yaptırmak istediğinde işini büyük ölçüde kolaylaştırır. Karar gerekçesi "bu bizim alıştığımız araç" ise bu da meşru bir cevap olabilir; yeter ki bu aracın yaygın ve sürdürülebilir olduğundan emin ol.

Sık sorulan sorular

iOS uygulama geliştirme dilleri arasında en iyisi hangisi?

Yeni bir iOS uygulaması için Swift ve SwiftUI standarttır. Objective-C ağırlıklı olarak eski projelerin bakımında kullanılır.

Başlangıç için hangi dil öğrenilmeli?

Hedefin iPhone'sa Swift, Android'se Kotlin; ikisini birden hedefliyorsan Dart (Flutter) ya da JavaScript/TypeScript (React Native). Fikrini gerçekleştirmek istiyorsan, dili kendin öğrenmek yerine bir ekiple çalışmak da mümkün.

Flutter native uygulamanın yerini tutar mı?

Çoğu iş ve içerik uygulaması için evet; kullanıcı fark etmez. Çok ağır grafik, özel donanım ya da platformun en yeni özelliklerine ilk gün erişim gereken projelerde native daha rahat olabilir.

Oyunlar hangi dille yazılır?

Mobil oyunlarda genellikle Unity (C#) gibi bir oyun motoru kullanılır; bu, ayrı bir konu ve ayrı bir süreç.

OdenaVerse olarak iOS ve Android için tek kod tabanıyla çalışıyor, mağaza yayınını senin kendi Apple/Google hesabınla yapıyoruz. Kendi uygulamamız Dövme Sanatçısı Defteri'ni de önce kendi işimiz için geliştirdik; hangi teknolojinin sana uygun olduğunu fikrini dinleyerek birlikte belirleyebiliriz. Yazılım hizmetini incele ya da doğrudan bize yaz.

Hangi teknoloji sana uygun?

Fikrini anlat; kapsamı ve doğru teknolojiyi birlikte netleştirip yazılı teklif hazırlayalım.