Native mi cross platform mı
Native, her işletim sistemi için o sistemin kendi diliyle ayrı bir program demektir; cross platform ise ikisinde de çalışan tek bir kod tabanı. İşi içerik göstermek ve form almak olan bir uygulama için genelde doğru seçim cross platformdur ve o durumda native önermek fazla satmaktır.
- Ders 2 / 8
- Başlangıç
- Ücretsiz, kayıt yok
İki sütun, kazanan yok
Native
- Android için Kotlin, iOS için Swift
- İki kod tabanı, yani her özellik iki kez
- Performans tavanı ve platforma tam erişim
- Daha yüksek bakım, özellikle ikinci yıldan itibaren
- Sürekli grafik ya da kesintisiz donanım işiniz olduğunda
Cross platform
- Android ve iOS için tek ortak kod tabanı
- Bir kez kur, bir kez test et, bir kez sürdür
- Listeler, formlar ve içerik için yeterince hızlı
- Platform yeteneklerini saran bir katmana bağımlı
- Ekip küçük ve bakım bütçesi sınırlı olduğunda
Burada kırmızı çarpı yok, çünkü iki sütundan hiçbiri herkes için yanlış değil. İkinci sütun bu sayfanın okuyucularının büyük bölümü için doğru yanıttır ve ileriki bir bölüm nerede tersine döndüğünü söylüyor.
Son kontrol: Bu dersteki bilgiler ve araç adları bu tarihte kaynaklarıyla yeniden doğrulanır.
Native ile cross platform arasındaki fark tam olarak nedir?
Native, programı o işletim sisteminin kendi araçları ve diliyle yazmak demektir. Google ın kendi belgeleri açık: 2019 dan beri Android geliştirmenin giderek Kotlin öncelikli olduğu ilan edildi ve aynı sayfa, bir Android uygulaması yapmak istiyorsanız Kotlin ile başlamanızı öneriyor. Apple tarafında ise Swift var. Sonuç şu: iki işletim sistemindeki tek bir uygulama, iki ayrı programdır.
Cross platform, tek bir kod tabanı yazıp aynı kodu ikisinde de çalıştırmak demektir. İki yaygın aile iki farklı yol izler ve anlaşılmaya değer olan da bu farktır. React Native belgeleri, çalışma zamanında karşılık gelen Android ve iOS görünümlerini oluşturduğunu ve bileşenleri bu aynı yerel görünümlerle desteklendiği için uygulamaların diğer uygulamalar gibi göründüğünü, hissettirdiğini ve performans verdiğini söylüyor. Flutter başka bir yol tutuyor ve desteklenen platformlar sayfası, Android ile iOS un ötesine geçip Windows, macOS ve Linux u da kapsayan bir erişim gösteriyor.
Yani tartışma hız üzerine değil, aynı işi kaç kez yaptığınız üzerine. Native de çalışan bir ekip her özelliği iki kez kurar, iki kez test eder ve iki kez bakımını yapar. Cross platformda çalışan bir ekip bir kez kurar ve platform farklı davrandığı her yerde bir istisna yazar. İki yolun da gerçek maliyeti o cümlenin içindedir.

Kararı gerçekten değiştiren dört şey
Performans tavanı. Listeler, formlar ve içerik ekranları için iki yol da yeterince hızlıdır ve kullanıcı bir fark görmez. Tavan, iş sürekli ve ağır olduğunda kendini gösterir: kesintisiz animasyon, kamera görüntüsünün canlı işlenmesi, oyunlar. Native orada öne geçer ve yalnızca program gerçekten böyle bir iş yapıyorsa.
Ekibin büyüklüğü ve bilgisi. En büyük etken ve en az konuşulanı budur. Kotlin bilen biri, yol üstünde öğrendiği bir çerçeveyle değil Kotlin le daha hızlı ve daha sağlam ilerler. Hem Android i hem iOS u sürdürmesi gereken iki kişi, tek bir ortak kod tabanıyla nefes alır. Doğru soru hangi teknolojinin daha iyi olduğu değil, bu kodu yarın kimin açacağıdır.
Bütçe ve her şeyden önce ikinci yıl bütçesi. İlk maliyet kurmaktır; projeleri öldüren maliyet ise bakımdır. İki kod tabanı, her küçük değişikliğin iki kez, her hatanın iki kez ve her sürümün iki kez demektir. Bakım bütçesi ikisinden biri için yetmiyorsa karar fiilen çoktan verilmiştir.
Her iki mağazaya ulaşmak. Cross platform lehine en çok tekrarlanan cümle budur ve İran pazarı için yeniden incelenmesi gereken tam da odur. Sonraki bölüm bunu yapıyor.
Kararı herhangi bir çerçeve karşılaştırmasından çok belirleyen soru
Program zamanının çoğunu sürekli grafik ya da donanımla mı geçiriyor
Native maliyetini hak eder
- oyunlar, görüntü düzenleyici, çok hareketli arayüz
- kameranın veya sensörlerin canlı kullanımı
- widget lar, arka plan servisleri ve derin bütünleşme
Cross platformu seçin
- listeler, formlar, arama, içerik ekranları
- giriş, siparişler, mesajlar, bildirimler
- küçük bir ekip ve sınırlı bakım bütçesi
Bu soru programın ne yaptığıyla ilgili, teknolojilerin kalitesiyle değil. Cross platform öteki taraftaki işleri de yapar, yalnızca daha düşük bir tavanla ve yanına yazmak zorunda kalacağınız native kodla.
İran pazarı için her iki mağazaya ulaşmak ne demek?
Google ın geliştirici ve satıcı kaydı için desteklenen konumlar başlıklı resmi sayfası 215 ülke ve bölgeden oluşan bir tablo taşıyor. O sayfayı bugün okuduk: Irak tabloda var ve İran sözcüğü sayfanın tamamında bir kez bile geçmiyor. Yani İran daki biri için resmi geliştirici kayıt yolu o tabloda tanımlı değil. Ne bir dolanma yolu öneriyoruz ne de hiçbir yol olmadığını iddia ediyoruz; söylediğimiz şey Google ın kendi belgesinde yazandır.
Dolayısıyla biri her iki mağazaya yayını cross platformun başlıca avantajı diye sattığında, İran pazarı için sorunun değişmesi gerekir. Buradaki bir Android uygulaması Cafe Bazaar ve Myket ten, bazen de doğrudan sitedeki bir dosyadan kurulur; iOS sürümü ise ayrı bir hikâyedir. Bunun ayrıntısı bu yoldaki yayın dersinin işidir.
Şimdi reklamların söylemediği sonuç: pratikte yalnızca Android için yayınlıyorsanız, cross platform seçmenin nedeninin büyük bölümü ortadan kalkar ve Kotlin yeniden tamamen mantıklı bir seçim olur; çünkü o tek kod tabanına zaten sahipsiniz ve onunla birlikte performans tavanını ve platforma tam erişimi de alırsınız.
Tersi de geçerli. Aynı uygulamanın gelecek yıl bir iOS sürümü olacaksa, geri dönüp sıfırdan yazmak baştan tek bir ortak kod tabanına sahip olmaktan pahalıya gelir. Doğru karar, o iOS sürümünün gerçek bir plan mı yoksa bir toplantıdaki bir cümle mi olduğuna bağlıdır.
Cross platform nerede işe yaramaz
Dört durum. Birincisi, sürekli grafiği olan her şey: oyunlar, bir görüntü düzenleyici, saniyede onlarca kez yeniden çizilen herhangi bir arayüz. İkincisi, donanımla kesintisiz çalışma: kameranın canlı kullanımı ya da arka planda okumanız gereken sensörler. Üçüncüsü, işletim sistemiyle derin bütünleşme: ana ekran widget ı, arka plan servisi, sistem sürümüne bağlı davranışlar.
Dördüncüsü daha teknik ve diğer üçünden daha çok projeyi hazırlıksız yakalar. Cross platform, platform yeteneklerini kendisi için saran bir katmana bağımlıdır. O sarmalayıcı var olduğu sürece her şey yolundadır. Yeni ya da az kullanılan bir yetenek gerektiği ve ona ait bir sarmalayıcı bulunmadığı anda o parçayı native yazmak gerekir: bir kez Android, bir kez iOS için. O noktada tek kod tabanı yerine üç taneniz olur. Bu maliyet ilk tahminde asla görünmez.
Bir de hiç teknik olmayan beşinci durum: yalnızca native bilen ve değişmeyecek bir ekip. Gerçek bir projenin ortasında yeni bir yığın öğrenmek, o yığının seçilme nedeni olan tasarrufu genelde aşan bir maliyettir.
Bir yığın seçmeden önce şu beş soruyu yanıtlayın
Kullanıcınız uygulamayı nereden kuruyor? Uygulama zamanının çoğunu neyle geçiriyor, içerik ve formlarla mı yoksa kamera ve grafiklerle mi? İkinci yılda bakımını kim yapıyor? Yarın bir iOS sürümü gerekirse bütçesi var mı? Ve ekip bugün gerçekten ne biliyor?
Beş yanıtı yan yana koyun, karar genellikle kendini gösterir ve kimsenin sizin yerinize karar vermesi gerekmez. Yapmamanız gereken şey bir çerçeve karşılaştırma listesinden başlamaktır; o listelerin hepsi doğrudur ve hiçbiri sizin projeniz hakkında değildir.
Duruşumuz, uygulama geliştirme hizmetleri sayfamızda yazılı olan ve bu ders var olmadan önce de orada duran şudur: içerik ve basit formlarla çalışan bir uygulama için cross platform daha mantıklı seçimdir ve varsayılan olarak en pahalı seçeneği önermeyiz. Uygulamanızın hangi gruba düştüğünden hâlâ emin değilseniz, bir uygulama gerçekte nasıl çalışır dersi bu gruplandırmanın geldiği sınırı gösteriyor.
Hangi soru yanıtı değiştirir, hangisi yalnızca zaman alır
İkinci sütun daha önemli. Sonuçsuz biten toplantıların çoğu bütün zamanını onda harcamıştır.
Bu sorular kararı değiştirir
- Kullanıcı uygulamayı nereden kuruyor
- Program zamanının çoğunu neyle geçiriyor
- İkinci yılda bu kodu kim açıyor
- iOS sürümü gerçek bir plan mı yoksa bir cümle mi
Bu sorular yalnızca zaman alır
- Hangi çerçeve daha popüler
- İnternetteki kıyaslamalarda hangisi daha hızlıydı
- Büyük şirketler hangisini kullanıyor
- Hangisinin geleceği daha iyi
İkinci sütundaki sorular yanlış değil, yanıtları yalnızca kararınızı oynatmıyor. İçlerinden birinin gerçekten belirleyici olduğu bir projeniz varsa, o soru birinci sütuna geçer.
Yapay zekayla hızlı yol
Modeller native mi cross platform mı sorusunu yanıtlamakta kötü değil, berbattır: her biri, sizin projenizden değil o teknoloji hakkında yazılanların hacminden gelen kendinden emin bir öneri verir. Gerçekten işe yarayan hamle soruyu değiştirmektir. Bir öneri istemek yerine, modele kararı yanlışlanabilir hale getirtin.
- Hangisi daha iyi yerine projenin gerçek kısıtlarını yazın: ekipte kaç kişi var ve ne biliyorlar, ikinci yıl bakım bütçesi, kullanıcının nereden kurduğu ve programın zamanının çoğunu neyle geçirdiği.
- Muhakeme sınıfından bir model alın ve aşağıdaki reçeteyi verin. Hızlı ve ucuz sınıf mekanik ve toplu işler içindir, bu ise ikisi de değil.
- Çıktının en önemli parçası öneri değil; değişseler yanıtı tersine çevirecek üç gerçeğin listesidir. O listeyi alın ve hangisinin projeniz hakkında hiç bilinmediğine bakın. Bugünün işi onlardır.
- Aynı reçeteyi iki seçenek ters sırada yazılmış olarak bir kez daha çalıştırın. Öneri değişirse, modelin yanıtı projeye değil sizin yazdığınız sıraya bağlıymış demektir ve atılmalıdır.
Kopyalamaya hazır şablon
Rol: işi karar vermek değil, kararı yanlışlanabilir kılmak olan bir teknik danışman.
Proje:
Programın yaptığı iş: {iki cümle}
Kullanıcının kurduğu yer: {bir mağaza ya da doğrudan dosya}
Ekip: {sayı} kişi, bildikleri: {teknolojiler}
İkinci yıl bakım bütçesi: {az / orta / çok}
iOS sürümü: {kesin bir plan / yalnızca bir olasılık / gerekli değil}
Çıktıyı tam olarak dört bölümde ver:
1. Öneri: native mi cross platform mı, tek cümlede, açıklamasız.
2. Değişseler bu öneriyi tersine çevirecek üç gerçek. Her biri bir cümle.
3. Bu proje hakkında bilmediğin ve karar için gereken şeyler.
4. Ekibe sormam gereken ve henüz sormadığım soru.
Kurallar: performans, yüzde ya da geliştirme süresi hakkında hiçbir sayı yazma. Hiçbir kıyaslama aktarma. Üçüncü bölüm için elinde bir şey yoksa, bunun kendisinin yeterli bilgi vermediğim anlamına geldiğini söyle.
Çıktıya güvenmeden önce: Bu reçetenin çıktısı bir karar değil, hâlâ gerçek insanlarla doğrulanması gereken bir toplantı tutanağıdır. İkinci bölümdeki üç gerçeği modelle değil ekiple gözden geçirin, çünkü bu kodu yarın kimin açacağını bilen tek kişi sizsiniz. Model açık kurala rağmen yine de bir sayı yazarsa o sayıyı atın; bu, sizin projenizden değil belleğinden konuştuğunun işaretidir.
Bu işte yapay zeka
Bu, bu yolda modellerin öngörülebilir biçimde yanıldığı tek konudur ve nedeni açıktır: doğru yanıt, modelin bilmediği ve hiçbir metinde yazmayan şeylere bağlıdır. Dolayısıyla onlara kalan rol, üretici belgelerini okumak ve yanlışlanabilir bir toplantı tutanağı üretmektir. Duruşumuz: modelden kararı vermesini değil, çürütülebilir kılmasını isteyin.
Gerçekten işe yarayan araçlar
- Claude Yukarıdaki reçetenin istediği dört bölümlü toplantı notuna uygun, özellikle bilmediğini söylemesi gereken üçüncü bölüme. İran, Anthropic in iki desteklenen ülke listesinin ikisinde de yok; bunu ağ testinden değil kendi sayfalarından okuduk.
- NotebookLM Soru bir çerçevenin resmi belgesinin tam olarak ne dediğiyse, bu araç sıradan bir sohbeti geçer; çünkü yalnızca sizin verdiğiniz kaynaktan yanıt verir. Flutter ın desteklenen platformlar sayfasıyla React Native in bileşenler belgesi böyle yan yana konabilir. Google ın kendi yardımı, Gemini uygulamasıyla aynı bölgelerde çalıştığını söylüyor ve İran o listede yok.
- Gemini Sürekli değişen uzun Android ve Apple belgelerini takip etmek için işe yarar. Bu dersin kendisi de Kotlin öncelikli cümlesini birinin özetinden değil resmi Android belgelerinden aldı. Google ın kendi sayfası Gemini web uygulamasının iki yüz otuzdan fazla ülke ve bölgede çalıştığını söylüyor ve İran o listede yok.
Nerede geri teper
Buradaki riskin özel bir biçimi var ve açıkça söylenmeli. Native mi cross platform mı sorusunun internetin metinlerinde bir yanıtı yok, çünkü ekibinize, bütçenize ve pazarınıza bağlı. Yine de model her zaman yanıt verir ve yanıtı fiilen her teknoloji hakkında ne kadar yazıldığının bir yansımasıdır; Anthropic in halüsinasyonu azaltma rehberi de aynı sorun sınıfından söz ediyor ve çaresi, modeli bilmediğini söylemeye zorlamaktır. Bir model performans yüzdesi ya da geliştirme süresi yazıyorsa, bunu neredeyse her zaman uydurmuştur.
Pratik kural: bu karar hakkında bir modelden hiçbir sayı kabul etmeyin. Dillerin ve platformların adlarını üretici belgelerinden alın, kararı da son bölümdeki beş sorudan. Bu araçlara İran dan nasıl ödeneceği satın alma rehberindedir.
Kaynaklar: Anthropic: reduce hallucinations Anthropic: supported countries Google: where the Gemini web app is available
Bu tavsiyenin sınırı
Bu ders iş uygulamaları hakkında, oyunlar hakkında değil; bir oyunda soru zaten bu değildir ve yerini motor seçimi alır. Kendimizle ilgili söylenmesi gereken bir sınır da var: Flutter ile Kotlin arasında kendi kıyaslamamızı çalıştırmadık ve aksini iddia edecek değiliz. Bu sayfada çerçevelerin kendisi hakkında geçen her şey üreticinin kendi belgelerinden aktarılmıştır; birinci elden deneyimimiz ise bu işin sunucu tarafıdır. Bir de zaman notu: mağazaların ülke tabloları ve desteklenen platform sürümleri değişir; bu sayfanın kontrol tarihi bu dersin üstünde yazılıdır ve büyük bir karar alıyorsanız o gün onlara kendiniz bakın.
Kendi işimizden
Bu yoldaki ilk ders, tam da bu sunucuda, kendi API mizin on satırlık bir liste ekranı için varsayılan biçimde 403.152 bayt, dört alan adlandırıldığında ise 3.780 bayt döndürdüğünü ve ilk baytının x-flying-press-cache: MISS ile cf-cache-status: DYNAMIC başlıklarıyla, yani hiç önbellek olmadan geldiğini ölçtü. Bu sayıların hiçbiri telefonda seçilen çerçeveyle kımıldamıyor. Çoğu küçük işletme uygulaması için hızı belirleyen budur, bu sayfanın konusu olan şey değil. İkinci madde bizimle ilgili ve doğrulanabilir: hizmetler sayfamız bu ders yazılmadan önce de aynı duruşu açıkça almıştı: içerik ve form uygulaması için cross platform daha mantıklı seçimdir ve varsayılan olarak en pahalı seçeneği önermeyiz. Bunu burada yazmak reklam değil; satarken ve öğretirken aynı şeyi söyleyip söylemediğimizin görülebilmesi için.
Gerçek devam soruları
Cross platform uygulamanın yavaş olacağı anlamına mı gelir?
Listeler, formlar ve içerik ekranları için hayır ve kullanıcı bir fark görmez. React Native belgeleri, bileşenlerinin aynı yerel Android ve iOS görünümleriyle desteklendiğini ve bu yüzden uygulamaların diğerleri gibi göründüğünü, hissettirdiğini ve performans verdiğini söylüyor. Tavan, iş sürekli ve ağır olduğunda kendini gösterir; bir oyun ya da canlı görüntü işleme gibi.
Sonradan fikrimi değiştirirsem cross platformdan native e geçebilir miyim?
Geçebilirsiniz, ama arayüzün yeniden yazılması gerekir ve o bölüm işin en pahalı kısmıdır. Taşınan şey arka uç ile API sözleşmesidir, yeter ki baştan düzgünce ayrılmış olsunlar. Hangi yığını seçerseniz seçin, mantığı arayüz kodunun içine gömmemenin değerli olmasının nedeni tam da budur.
Bu karar İran mağazalarında yayın için fark eder mi?
İki yolun da çıktısı bir Android paketidir, bu açıdan fark etmez. Fark eden şey şu: pratikte yalnızca Android için yayınlıyorsanız, cross platformun asıl tasarrufu olan iki platform için tek kod tabanı ortadan kalkar. Yayının kendi ayrıntısı bu yoldaki yayın dersinin işidir.