Expertise · Desktop-Anwendungen
Anwendungen, die auf dem Computer installiert werden. Für macOS haben wir zwei gebaut; für Windows und Linux ist diese Seite ein Angebot, keine Historie.
Wir bauen native Anwendungen für macOS, mit vom Bildschirm getrenntem Logikkern, damit dieselbe Logik auch auf dem Telefon läuft. Für Windows und Linux/Ubuntu haben wir noch nichts ausgeliefert und schreiben das auch so, mit den Bedingungen, unter denen wir den Auftrag annehmen würden. Die erste Frage bleibt, ob Sie wirklich eine installierte Anwendung brauchen.
Angebot, mit BedingungenDie Regel ist mechanisch, und ich wende sie mechanisch an. Auf macOS haben wir zwei eigene, erstellte und ausführbare Implementierungen: eine Menüleisten-App mit 25 Swift-Dateien, die 15 Dateien aus dem Kern eines iPhone-Projekts wiederverwendet, und eine zweite, einfachere App, die eine WebKit-Hülle über einer Webanwendung ist. Beide haben ein auf diesem Rechner kompiliertes Binary. Aber der Dienst, wie er genannt wird, deckt drei Systemfamilien ab, und für zwei davon — Windows und Linux/Ubuntu — haben wir ernsthaft gesucht und null gefunden: kein eigenes .NET- oder Qt-Projekt, kein `tauri.conf.json`, kein von uns geschriebenes Electron, kein `.desktop`, keine deb-, rpm- oder AppImage-Paketierung. Außerdem wurde keine der beiden macOS-Apps jemals in ein verteilbares Installationsprogramm gepackt. Mit nur einer von drei Plattformen abgedeckt und null Distributionen wird die Seite als Angebot unter Bedingungen geschrieben. Wenn wir die erste Windows- oder Linux-App ausliefern, ändert sich der Wert, nicht der Text.
Die erste Frage, die wir Ihnen stellen, ist nicht für welches System, sondern ob Sie wirklich eine installierte Anwendung brauchen. Sie lohnt sich, wenn sie etwas braucht, das der Browser ihr nicht gibt: direkten Zugriff auf Sensoren oder Peripheriegeräte, dauerhafte Präsenz in der Systemleiste, Arbeit ohne Internet, Zugriff auf Dateien auf der Festplatte, ohne dass die Person sie jedes Mal hochladen muss, oder Ausführung im Hintergrund, wenn das Fenster geschlossen ist. Wenn nichts davon gefordert ist, ist eine Website, die sich über einen Link öffnet, billiger zu bauen, zu aktualisieren und zu warten — und das sagen wir Ihnen, auch wenn die Arbeit kleiner ausfällt.
Auf macOS haben wir zwei Anwendungen gebaut. Die erste ist eine Menüleisten-Anwendung: 25 eigene Swift-Dateien plus 15 Kerndateien, die direkt aus dem iPhone-Projekt desselben Produkts stammen — dieselben Dateien, keine Kopie. Sie wird mit einem Skript gebaut, das den Swift-Compiler direkt aufruft, Ziel `arm64-apple-macosx14`, und elf System-Frameworks verknüpft, darunter SwiftUI, AppKit, CoreMotion, Vision und UserNotifications. Das resultierende Binärprogramm hat 6.516.128 Bytes. Die zweite ist viel einfacher und es ist fair, die Zahl zu nennen: drei Swift-Dateien, eine WebKit-Hülle über eine Webanwendung, mit aktiviertem Sandbox und gehärteter Laufzeit, universal kompiliert für Intel- und Apple-Prozessoren. Das sind zwei verschiedene Dinge, und wir nennen sie auch unterschiedlich.
Was wir nicht haben, klar gesagt. Windows: null. Wir haben nach .NET-, WPF-, WinForms-, WinUI-Projekten, `.xaml`-, `.appxmanifest`-, `.msi`-, `.wxs`-Dateien gesucht — alles, was wir auf der Festplatte gefunden haben, gehört zu einer C-Bibliothek eines Dritten, vendored in einem anderen Projekt, die wir nicht geschrieben haben. Linux-Desktop: null — keine `.desktop`-Datei, kein hier gebautes deb- oder AppImage-Paket. Von uns geschriebene Electron oder Tauri: null. Und ebenso wichtig: Keine der beiden macOS-Anwendungen wurde jemals in einen Installer gepackt. Sie existieren als lokal gebaute, ad-hoc signierte `.app`-Pakete ohne Team-Identifier.
Was die bisherige Erfahrung dennoch überträgt, und das ist der Teil, der für ein neues Projekt zählt: die Disziplin, den Kern der Logik von der Oberfläche getrennt zu halten. Im macOS-Projekt importieren die Berechnungs- und Policy-Dateien die Oberfläche nicht, also werden sie auf dem Mac als gewöhnliches Programm kompiliert und ausgeführt, ohne Simulator; ihre Logik-Suite läuft in wenigen Sekunden. Dieselbe Trennung macht das Portieren auf ein anderes System zu einer Frage der Hülle, nicht der Neuschreibung. Darauf stützen wir uns, wenn wir sagen, dass wir Windows oder Linux machen könnten — nicht auf eine Erfahrung, die wir nicht haben.