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ıylaRegula e mecanică și o aplic mecanic. Pe macOS avem două implementări proprii, construite și rulabile: o aplicație de bară de meniu cu 25 de fișiere Swift, care refolosește 15 fișiere din nucleul unui proiect de iPhone, și o a doua aplicație, mai simplă, care e un înveliș WebKit peste o aplicație web. Ambele au binar compilat pe această mașină. Dar serviciul, așa cum e numit, acoperă trei familii de sisteme, iar pentru două dintre ele — Windows și Linux/Ubuntu — am căutat serios și am găsit zero: niciun proiect .NET sau Qt propriu, niciun `tauri.conf.json`, niciun Electron scris de noi, niciun `.desktop`, niciun ambalaj deb, rpm sau AppImage. În plus, niciuna dintre cele două aplicații de macOS nu a fost vreodată împachetată într-un instalator distribuibil. Cu doar una din trei platforme acoperită și zero distribuții, pagina se scrie ca ofertă cu condiții. Când vom livra prima aplicație de Windows sau de Linux, se schimbă valoarea, nu textul.
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.