Uzmanlık · Masaüstü uygulamaları
Bilgisayara kurulan uygulamalar. macOS üzerinde iki tane oluşturduk; Windows ve Linux için bu sayfa tarihçe değil, tekliftir.
macOS için yerel uygulamalar kuruyoruz; mantık çekirdeği ekrandan ayrı tutulur, böylece aynı mantık telefonda da çalışır. Windows ve Linux/Ubuntu için henüz teslim ettiğimiz bir şey yok ve bunu, işi kabul edeceğimiz koşullarla birlikte aynen yazıyoruz. İlk soru hâlâ gerçekten kurulmuş bir uygulamaya ihtiyacınız olup olmadığıdır.
Teklif, koşullarıylaKural mekanik ve ben de onu mekanik olarak uyguluyorum. macOS’ta iki kendi uygulamamız var, derlenmiş ve çalıştırılabilir: 25 Swift dosyalı bir menü çubuğu uygulaması, bir iPhone projesinin çekirdeğinden 15 dosyayı yeniden kullanıyor, ve web uygulamasının üzerinde bir WebKit kabuğu olan daha basit ikinci bir uygulama. İkisinin de bu makinede derlenmiş binari var. Ama böyle adlandırılan hizmet, üç sistem ailesini kapsıyor ve bunlardan ikisi — Windows ve Linux/Ubuntu — için ciddi biçimde baktım ve sıfır buldum: ne kendi .NET ya da Qt projesi, ne bizim yazdığımız `tauri.conf.json`, ne bizim yazdığımız Electron, ne `.desktop`, ne deb, rpm ya da AppImage paketlemesi. Buna ek olarak, macOS’taki iki uygulamanın hiçbiri dağıtılabilir bir yükleyiciye hiç paketlenmedi. Üç platformdan sadece biri kapsanmış ve sıfır dağıtım varken, sayfa koşullu bir teklif olarak yazılır. İlk Windows ya da Linux uygulamasını teslim ettiğimizde değer değişir, metin değil.
Size sorduğumuz ilk soru, hangi sistem için olduğu değil, gerçekten kurulu bir uygulamaya ihtiyacınız olup olmadığıdır. Tarayıcının vermediği bir şeye ihtiyaç duyduğunda kurmaya değer: sensörlere veya çevre birimlerine doğrudan erişim, sistem çubuğunda sürekli görünürlük, internetsiz çalışma, kişinin her seferinde yüklemeden disk üzerindeki dosyalara erişim ya da pencere kapalıyken arka planda çalıştırma. Bunlardan hiçbiri gerekmiyorsa, bir bağlantıdan açılan bir siteyi yapmak, güncellemek ve sürdürmek daha ucuzdur — iş daha küçük çıksa bile bunu size söyleriz.
macOS’ta iki uygulama oluşturduk. İlki bir menü çubuğu uygulaması: 25 kendi Swift dosyası, ayrıca aynı ürünün iPhone projesinden doğrudan alınan 15 çekirdek dosyası — aynı dosyalar, kopya değil. Doğrudan Swift derleyicisini çağıran bir script ile derlenir, hedef `arm64-apple-macosx14`, SwiftUI, AppKit, CoreMotion, Vision ve UserNotifications dahil olmak üzere on bir sistem çerçevesini bağlar. Ortaya çıkan ikili 6.516.128 bayttır. İkincisi çok daha basittir ve bunu açıkça söylemek gerekir: üç Swift dosyası, bir web uygulamasının üzerine kurulmuş bir WebKit kabuğu, sandbox ve hardened runtime etkin, Intel ve Apple işlemciler için evrensel olarak derlenmiş. Bunlar iki farklı şeydir ve biz onları farklı adlandırırız.
Açıkça söyleyelim, elimizde olmayanlar. Windows: sıfır. .NET, WPF, WinForms, WinUI projeleri, `.xaml`, `.appxmanifest`, `.msi`, `.wxs` dosyaları aradık — diskte bulduğumuz her şey, başka bir projede vendörlenmiş, bizim yazmadığımız üçüncü taraf bir C kütüphanesine aittir. Linux masaüstü: sıfır — burada oluşturulmuş hiçbir `.desktop` dosyası, hiçbir deb veya AppImage paketi yok. Bizim yazdığımız Electron veya Tauri: sıfır. Ve en az bunun kadar önemli: macOS’taki iki uygulamanın hiçbiri bugüne kadar bir kurulum paketine dönüştürülmedi. Bunlar yerel olarak oluşturulmuş, ad-hoc imzalı, ekip kimliği olmayan `.app` paketleri olarak var.
Yine de bugüne kadarki deneyimin aktardığı şey var ve yeni bir proje için önemli olan kısım bu: mantık çekirdeğini arayüzden ayrı tutma disiplini. macOS projesinde hesaplama ve politika dosyaları arayüzü içe aktarmıyor, bu yüzden Mac’te sıradan program olarak, simülatör olmadan derlenip çalıştırılıyor; mantık paketi birkaç saniye içinde çalışıyor. Aynı ayrım, başka bir sisteme taşımayı yeniden yazma değil, kabuk sorunu haline getiriyor. Windows veya Linux yapabileceğimizi söylerken dayandığımız şey budur — sahip olmadığımız bir deneyim değil.