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çenek | Dil | Platform | En uygun olduğu durum |
|---|---|---|---|
| Native iOS | Swift | Yalnızca iPhone/iPad | Apple'a özel, donanıma yakın uygulamalar |
| Native Android | Kotlin | Yalnızca Android | Android'e özel, sistem seviyesi özellikler |
| Flutter | Dart | iOS + Android | İki mağazaya birden çıkmak isteyen iş uygulamaları, özel tasarımlı arayüzler |
| React Native | JavaScript / TypeScript | iOS + Android | Web 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
- İ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.
- 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.
- 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
- Trende göre seçmek: Bir teknolojinin popüler olması, projene uyduğu anlamına gelmez. Sorulacak soru, o teknolojiyle uygulamanı bakımı yapılabilir biçimde yazıp yazamayacağındır.
- "Native her zaman daha iyi" varsayımı: Native hızlıdır ama iki ayrı uygulama, iki ayrı ekip ve iki ayrı bakım demektir. Küçük bir işletme uygulaması için bu yük çoğu zaman gereksizdir.
- "Tek kod her şeyi çözer" varsayımı: Tek kod tabanı maliyeti düşürür ama platformlara özgü ayrıntıları (bildirim izinleri, mağaza kuralları, arayüz alışkanlıkları) ortadan kaldırmaz; bunlar ayrıca test edilir.
- Sunucuyu unutmak: Uygulamanın ekranı hazır olsa bile üyelik, veri ve ödeme tarafı sunucuda yazılır. Teklifte yalnızca "mobil uygulama" yazıyorsa bu kısmın kapsama dahil olup olmadığını sor.
- Tek kişiye bağımlı bir teknoloji seçmek: Çok niş bir araçla yazılmış kodu başka bir geliştiricinin devralması zor olur. Yaygın, belgeleri bol teknolojiler bu riski azaltır.
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.