Android için Swift SDK duyuruldu
(swift.org)- Swift dili bulut, Windows, tarayıcılar ve mikrodenetleyicilere kadar genişleyip olgunlaşırken, artık Android için Swift SDK da duyuruldu
- Bu SDK, Swift Android çalışma grubunun aylar süren çabasının bir sonucu olarak geliştiricilerin Swift ile Android yerel uygulamaları geliştirmesini sağlıyor
- SDK, Windows yükleyicisine dahil olarak sunuluyor veya Linux ve macOS için ayrı olarak indirilebiliyor; örnek kodlar ve kılavuzlar da birlikte sağlanıyor
- swift-java projesi üzerinden Swift ile Java arasında çift yönlü birlikte çalışabilirlik destekleniyor; otomatik binding üretimiyle performans ve güvenlik sağlanıyor
- Bu duyuru, Swift’in çapraz platform ekosisteminin genişlemesini hızlandırırken mobil geliştirmede yeni olanakların önünü açan bir dönüm noktası olarak değerlendiriliyor
Android için Swift SDK genel bakış
- Swift dilinin son 10 yılda bulut servislerinden Windows, tarayıcılar ve mikrodenetleyicilere kadar genişlemesinin ardından, Android platformuna resmî açılım da duyurulmuş oldu
- Swift’in birlikte çalışabilirlik (interoperability) özelliği sayesinde farklı platformlar arasında kod paylaşımı kolaylaşıyor
- Android çalışma grubu (Android workgroup), herkesin katılımına açık bir grup olarak Swift’i Android’e taşımayı hedefliyor
- Bu duyuru, Android için Swift SDK’nin nightly (preview) sürümünün yayınlanması anlamına geliyor ve topluluğun uzun soluklu iş birliğinin bir ürünü
SDK’nin başlıca özellikleri ve dağıtım biçimi
- Geliştiriciler artık Swift kullanarak doğrudan Android yerel uygulamaları geliştirebiliyor
- Bu da çapraz platform geliştirme için yeni olanaklar sunuyor
- SDK, Windows yükleyicisiyle birlikte paketlenmiş olarak sunuluyor; Linux ve macOS için ayrı indirme seçeneği de mevcut
- Swift.org, “Getting Started” kılavuzu ile Android cihazlarda Swift kodunun nasıl kurulacağını anlatıyor
- GitHub’daki Swift for Android Examples deposunda uçtan uca uygulama iş akışı gösteriliyor
Paket uyumluluğu ve topluluk genişlemesi
- Swift SDK sayesinde mevcut Swift paketleri Android’e taşınabiliyor
- Swift Package Index’teki paketlerin %25’inden fazlası zaten Android derlemelerini destekliyor
- Community Showcase sayfasında Android uyumluluğu belirtiliyor
- Bu genişleme, Swift ekosisteminin çoklu platform desteğinin güçlenmesine katkı sağlıyor
swift-java projesi ve birlikte çalışabilirlik
- swift-java projesi, Swift ile Java arasında birlikte çalışabilirlik (interoperability) sağlayan bir kütüphane ve kod üreticisi
- Swift ile Java arasındaki çift yönlü entegrasyonu otomatik olarak yönetiyor ve güvenli, yüksek performanslı binding’ler üretiyor
- Geliştiriciler bunun sayesinde iş mantığını Android’e taşıyabiliyor; ilgili ayrıntılar Swift Server Side Meetup sunum videosunda görülebiliyor
Topluluk katılımı ve gelecek yol haritası
- Bu preview sürümü, araçların iyileştirilmesi ve ekosistemin genişletilmesi için yeni fırsatlar açtı
- Deneyimlerin, fikirlerin, araçların ve uygulamaların Swift forumlarındaki Android kategorisinde paylaşılması teşvik ediliyor
- Bu duyuru ayrıca forumdaki resmî başlıkta da tartışılıyor
- Android çalışma grubu şu anda bir vizyon belgesi (vision document) hazırlıyor ve Swift on Android için öncelikli alanları ve gelecekteki yönü ortaya koymayı planlıyor
- Proje panosu üzerinden ana ilerleme durumu takip ediliyor, resmî CI sistemi ile de SDK kalitesi yönetiliyor
- Swift ekibi, topluluğun katılımını teşvik ederken Android ekosisteminde Swift’in konumunu güçlendirmeyi hedefliyor
1 yorum
Hacker News yorumları
Tüm çapraz platform framework'lerinin temel sorusu, UI'ı nasıl ele aldıklarıdır.
Adobe Flex Builder örneğinde olduğu gibi her platformda yabancı hissettiren tasarım sistemleri kullanırsanız, sonunda native hissi kendiniz uygulamak zorunda kalırsınız.
Flutter, iOS'un Cupertino temasını kusursuz biçimde yeniden üretmeye çalışıyor; React Native ise platformun varsayılan widget'larını kullanarak kaydırma gibi öğelerin doğal hissettirmesini sağlıyor.
Blog yazısında bu önemli noktaya değinilmemesi üzücü.
Apple Android için Swift çıkarsa bile, Apple'a özgü tasarım felsefesi nedeniyle Android'de garip hissettirme ihtimali var.
Bu projenin doğrudan Apple tarafından mı yönlendirildiği, yoksa topluluk merkezli bir açık kaynak girişimi mi olduğu, ilerideki yönünü belirleyecek gibi görünüyor.
Bu yüzden KMP'yi seviyorum. iOS'ta SwiftUI ile, Android'de Kotlin ile UI yazarken sadece iş mantığını paylaşabiliyorsunuz.
UI'ı paylaşmaya çalıştığınızda, “bir kez yaz, her yerde debug et” kâbusu ortaya çıkıyor.
Swift for Android de bu şekilde dil düzeyinde mantık paylaşımını mümkün kılacak gibi görünüyor.
Örneklerde de Jetpack Compose aynen kullanılırken Swift mantığı çağrılıyor.
Swift'in reference counting bellek modeli ile aynı yapıyı koruyarak yüksek tutarlılık sağlıyor.
Apple'da geliştirici araçlarından sorumlu biri olarak, bu teknolojinin yeni yenilikler için bir basamak olmasını umuyorum.
SwiftUI aslında baştan beri “native UI” değil; sistemin yorumlayıp UIView veya NSView üreten bildirimsel bir dil.
Flutter gibi doğrudan kopyalamadığınız sürece, Apple UI'ını Android'de aynen kullanmak mümkün değil.
Bunun yerine Skip.tools gibi projeler SwiftUI'ı Jetpack Compose'a köprülüyor.
Bunun örneğini Skip Showcase uygulaması içinde görebilirsiniz.
Ben Skip ürünlerinde ve Swift Android Workgroup içinde yer alıyorum; bu SDK sürümünde de release manager olarak görev aldım.
Resmî bir proje olarak duyurulmuş olmasına gerçekten sevindim.
RN ve Flutter kullandım ama sorun her zaman native his eksikliği oldu.
KMP de var, ancak çoğu geliştirici iOS'tan başlayıp sonra Android'e genişliyor.
Kodu Swift Package olarak paylaşabilmek bu akışı çok daha doğal hâle getiriyor.
Buna karşılık Swift/Objective-C geliştiricileri çok daha az.
ABD dışındaki bölgelerde iPhone pazar payı daha düşük olduğu için, şirketler Windows veya tarayıcı merkezli düşünmeye daha yatkın.
KMP zaten Google Workspace gibi büyük uygulamalarda kullanılıyor ve Kotlin ile JetBrains'in yatırımları sayesinde olgunluk seviyesi yüksek.
Flutter'ın sürüm döngüsü ise o kadar hızlıydı ki takip etmek zor oluyordu.
JavaScriptCore veya QuickJS ile iOS, Android ve Web'de birlikte çalışabiliyor ve hot reload mümkün oluyor.
Ancak uygulama mağazası politikaları yüzünden büyük özellik değişiklikleri zor; daha çok hata düzeltmeleri için uygun.
Mobil dağıtım döngüsünün yavaş olduğu gerçeği düşünüldüğünde, bunun büyük bir fırsat olduğunu düşünüyorum.
Paylaşılan çekirdek kütüphane + her platformun native UI projesi yapısı gayet iyi çalışıyor.
Skip.tools blogunda gördüğüm SKIP transpiler ile ilgili bir proje mi diye merak etmiştim.
SwiftUI uygulamasını Android'e taşımak istiyordum ama RN'den kaçınmak istiyordum.
Skip'te iki mod var: Swift kodunu Kotlin'e dönüştüren Lite modu ve Swift'i doğrudan Android için derleyen Fuse modu.
Bu iki mod birlikte kullanılarak Kotlin ekosistemiyle (Lottie, Firebase vb.) entegrasyon sağlanabiliyor.
Ayrıntılı karşılaştırmayı Skip Docs içinde görebilirsiniz.
Artık resmî SDK çıktığı için kendi derlememizi kullanmak yerine resmî sürümü kullanabilecek olmamız sevindirici.
Umarım Swift Embedded gibi sadece basit bir kavram kanıtı olarak kalmaz.
Swift dil olarak çok zarif, ama topluluk liderliği konusunda tedirgin edici bir hava var.
Artık RN ve Flutter görmek istemiyorum.
Köşeli UI ve yavaş dokunma tepkilerinden bıktım.
Tepkinin yavaş olması büyük ihtimalle uygulamanın nasıl geliştirildiğiyle ilgilidir.
Apple kısa sürede ilgiyi kaybedebilir.
“You got Kotlin in my iOS.”
“You got Swift in my Android.” — güzel bir espri.
Ayrıntı için Kotlin Native genel bakış.
Bu duyuru, yeni Swift SDK sisteminin başarılı olduğunun bir kanıtı gibi görünüyor.
Eskiden diğer platform desteği CMake karmaşası yüzünden zordu, ama artık SDK kurallarına uyulduğu sürece herhangi bir platforma port etmek mümkün.
Android dışında Linux, wasm, embedded ve yakında Windows'a kadar genişlemesi planlanıyor.
JVM ile birlikte çalışabilirlik henüz tam değil, ancak platform bağımsızlığının arttığı açık.
Kotlin Multiplatform'ı seviyorum ama Swift for Android de ilginç.
Belleğe duyarlı işlerde Swift native kütüphanelerini paylaşmak faydalı olabilir.
Ancak tüm iş mantığını Swift'e taşımak açısından KMP hâlâ daha olgun.
İş mantığını paylaşmak zaten çözülmüş bir problemdi.
Asıl acı veren kısım, UI'ı iki kez yazmak zorunda olmaktı.
React Native kadar rahatsız edici olmayan ortak bir UI framework'üne ihtiyaç var.
Expo ile birlikte kullanıldığında geliştirici deneyimi epey daha iyi oluyor.
Uzun zamandır Android ile iOS arasında kod paylaşıyorum ama UI paylaşımı tam bir kâbustu.
Sadece karmaşık mantığı C/C++/Rust ile paylaşırdık, bunun sonucunda da üç ayrı dil ortaya çıkardı.
KMP ve Swift for Android, Kotlin/Swift ile paylaşımı mümkün kıldığı için çok daha temiz.
Bu yaklaşım, UI'ı zorla paylaşmaya çalışan framework'lere göre çok daha gerçekçi ve verimli.