Cross-Platform Development und Apple M1 / ARM

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Cross-Platform Development und Apple M1 / ARM

    Moin zusammen,

    ich oute mich jetzt als komplett unwissend im Bereich "Cross-Platform Development" ... seid gnädig :)

    Aus reiner Neugier würde mich einmal interessieren, welche Konsequenzen Apple Silicon (M1) für das Entwickeln von Cross-Platform Apps für Windows / macOS hat: Ich stelle mir naiv vor, dass diese Tools (Xamarin, Xojo, ...) einen universellen Code erzeugen - Java oder proprietär, der dann über ein Runtime-Environment auf der Ziel-Architektur ausgeführt wird. Stimmt das soweit?

    Als Konsequenz müsste Apple Silicon nativ unterstützt werden, wenn besagte Runtime entsprechend übersetzt bzw. angepasst als Universal App vorliegt. Andernfalls kommt Rosetta 2 zum Zuge und wandelt dessen Code dynamisch um.

    Wenn mein Verständnis richtig ist, wäre ich als Cross-Platform Entwickler unbedingt davon anhängig, dass meine Runtime kurz über lang als Universal Binary (Framework) angeboten wird. Andernfalls bricht mir die macOS-Seite weg, sobald Apple Rosetta 2 einstellt. Sicher hat dessen Anbieter daran selber ein Interesse - schließlich ist es sein Geschäftsmodell, aber ein gewisses Risiko bleibt.

    Wie gesagt nur aus Neugier und ohne konkretem Bezug gefragt ... Bitte korrigiert, wenn ich Denkfehler habe!

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Im Prinzip gibt es 3 Wege für Cross-Plattform Entwicklung

    1. Web-Architektur
    2. Kompilierter Code
    3. Zwischen Code


    Zu 1: Hier ist deine App, im Web Lauffähig. Du greifst entweder über den Browser auf deine Web-App zu oder installierst den Software Stack selbst, wie Datenbank, PHP, Apache

    Dies hat den Vorteil, daß deine App quasi auf allen Systemen lauffähig ist.

    Zu 2 und 3, hier bist du abhängig von deinen Compiler oder Zwischenschicht Lieferanten, dass sie Zeitnah ein Update bringen. Wenn nicht, dann drehen, wenn es Dumm geht, deine Anwender über Monate Däumchen und verfluchen Dich ;)

    Dabei sehe ich das Problem nicht so in der ARM Architektur, da über den Emulator (Rosetta) deine App noch läuft, als vielmehr bei einen Update des Betriebssystems, welches nicht unbedingt kompatibel sein muss zum Vorgänger. Und hier haben halt die Tools Hersteller das Problem, dass sie nicht steuern können, wenn der Anwender sein Update startet und sie nicht viel Vorlaufzeit haben um Ihre Tool-Chain an das neue OS anzupassen. Was eine tödliche Mischung ist.

    Schöne Grüsse
    Wolf
  • also arm oder m1 sollte doch eigentlich kein thema sein, da du doch nur zwei executables ausliefern Must. Der source wird ja hoffentlich der gleiche bleiben oder wirft Apple mit m1 dann auch gleich alle Frameworks über den Haufen?
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    also arm oder m1 sollte doch eigentlich kein thema sein, da du doch nur zwei executables ausliefern Must.
    Bei einer nativen App klar ... wenn Du nicht irgendwo mit Architektur-Spezifika programmierst. Kein Problem, meine (reine macOS-) App ist seit Anfang des Jahres universal.

    Meine Frage bezog sich mehr auf die Varianten 2 und 3 von Wolf: Wenn der Cross-Platform Compiler noch kein ARM-Executable erzeugt oder die Runtime noch nicht auf Apple Silicon läuft, schaut man eben in die Röhre, sobald Apple Rosetta 2 einstellt, oder? Auch wenn das sicherlich noch etwas dauert, ist Apple ja immer für Überraschungen gut.

    Anschlussfrage: Wie sieht es denn momentan - mit Rosetta 2 - mit Cross-Plattform Produkten auf dem M1 aus? Habt Ihr aus Entwickler-Sicht schon Erfahrungen gesammelt? Gab es nennenswerte Probleme oder laufen die Projekte einfach „magisch“ (Rosetta 2 macht ja insgesamt einen guten Job)?

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Wolf schrieb:


    Und hier haben halt die Tools Hersteller das Problem, dass sie nicht steuern können, wenn der Anwender sein Update startet und sie nicht viel Vorlaufzeit haben um Ihre Tool-Chain an das neue OS anzupassen. Was eine tödliche Mischung ist.
    100% ACK, wobei man dieses Problem potentiell bei allen Abhängigkeiten von Fremdcode hat (Frameworks, Libraries, ...), nicht nur - aber auch - bei Cross-Platform Apps.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Wolf schrieb:

    Thallius schrieb:

    wirft Apple mit m1 dann auch gleich alle Frameworks über den Haufen?
    Ja tun sie!
    Wenn sie das wirklich tun, liegt das sicher nicht an der Prozessor-Architektur, sondern eher daran, dass Apple, entgegen ihren eigenen Beteuerungen auf der WWDC, iOS und macOS zusammen führt. Das wird aber nicht von heute auf morgen gehen, sonst würde Apple ja allen AppKit-Programmen den Saft abdrehen.

    Wolf schrieb:

    Aber so schlimm ist das auch wieder nicht. Da der M1 nun die Frameworks von iOS verwendet. Das ist ja dann auch der Grund, weshalb dann die iOS Apps direkt auf dem M1 laufen, ohne Anpassung.
    Das sind dann aber immer noch reine iOS-Programme, die für Touch-Bedienung ausgelegt sind.
  • Ich kann dies nur aus Consumer-Sicht kommentieren. Bei meiner 3D Drucker Software gibt es einen Cura Klon auf dem Mac, dessen Pflege eine einzige Katastrophe ist. Ich muss quasi stets meinen Mac auf Catalina downgraden, wenn ich die Version haben will, die ohne Fehler läuft. Der China-Kracher schafft es einfach nicht, die Software immer auf den aktuellen Stand im Rhythmus von Apple upzugraden.

    Ich denke, dass es vielen Cross-Plattform-Developern so geht, dass sie mit dem Ziel "Plattformunabhängig" in anderen Abhängigkeiten gefangen worden sind oder von dem Tempo von Apple dazu gezwungen werden, ständig an ihren Apps nachzubessern.

    Klar native Anwendungsentwicklung ist ein extrem hoher Aufwand mit extrem hohen Kosten und die Pflege der App ist sicher nicht zu unterschätzen. Aber das hängt sicher auch von den konkreten Anforderungen ab. Ich persönlich halte von Cross-Plattform gar nix mehr. Aber das ist eine rein persönliche Meinung.

    Mit Apples ARM Architektur werden zwar Karten neu gemischt, dahingehend, dass Apps auch auf dem Desktop laufen. Aber das UI Design muss dann auch angepasst werden, dass es in beiden Welten noch eine gute Usability hat. Und genau hier sehe ich auch Grenzen, denn der Laptop hat keinen Touchscreen und der PC hat keinen Sensor, um z.B. Gesten zu unterstützen, die nur das Smartphone oder Tablet hat.

    Über eine reine WebApp kann man auch nicht mehr alle Features nutzen (z.B. Schüttelgesten implementieren). Und wenn man die Alles-Rundum-Glücklich App bauen will, muss man Kompromisse eingehen, die zu Lasten der UI Experience gehen.

    Also diese Lücke wird vermutlich erst geschlossen, wenn es mehr Geräte (Hardware) gibt, die dann auch entsprechende Controller bieten. Im Musikbereich sieht man das recht deutlich. Die Integration zwischen Hard- und Software ist die Grenze.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Thorsten Kreutz ()