Microsoft Build 2020: Aus Xamarin.Forms wird MAUI

Microsoft konkretisiert die Integration von Xamarin in den Kern von .NET: Sie erfolgt nun Ende 2021 in .NET 6.0. Dafür verabschiedet man sich vom Namen Xamarin.

In Pocket speichern vorlesen Druckansicht 13 Kommentare lesen
Build 2020: Aus Xamarin.Forms wird MAUI
Lesezeit: 8 Min.
Von
  • Dr. Holger Schwichtenberg
Inhaltsverzeichnis

Microsoft hat auf der Build-Konferenz die Integration von Xamarin in den Kern von .NET konkretisiert. Abweichend von den bisherigen Ankündigungen wird sie aber nicht 2020 in .NET 5.0, sondern erst Ende 2021 in .NET 6.0 erfolgen. Der Name "Xamarin" entfällt hingegen an den meisten Stellen.

Bereits auf der letztjährigen Build-Ausgabe hatte Microsoft die Zusammenführung von .NET Core, .NET Framework und Mono/Xamarin im Rahmen von .NET 5.0 angekündigt, das im November 2020 erscheinen soll. Aufgrund der Corona-Krise verschieben sich auch bei Microsoft die Termine. So soll die Integration von Xamarin in das neue .NET ein ganzes Jahr später, also Ende 2021, zu .NET 6.0 erscheinen – auch wenn in den spärlichen "HelloWorld"-Beispielen auf GitHub noch "Xamarin .NET 5" zu lesen ist.

News von der Build 2020

Die plattformneutrale Oberflächenbeschreibungsbibliothek Xamarin.Forms will Microsoft bis Ende 2021 erheblich weiterentwickeln und zukünftig unter dem Namen ".NET Multi-Platform App UI" (.NET MAUI) vermarkten. Xamarin.Forms unterstützte ursprünglich iOS, Android und Windows. Durch Community-Projekte wurde es auf macOS und Linux ausgedehnt. Die Firma Samsung liefert außerdem eine Implementierung für ihr Tizen-Betriebssystem.

Trotz des Namens wird Microsoft auch beim kommenden .NET MAUI weiterhin nicht alle heute weit verbreiteten Betriebssysteme unterstützen, sondern nur Windows, macOS, iOS und Android.

Zielplattformen für MAUI – ohne Rede von Linux

(Bild: Microsoft)

Der Linux-Desktop bleibt explizit außen vor – Microsoft will es der Community überlassen, hierfür einen Renderer bereitzustellen. Für das Betriebssystem Tizen soll Samsung wie bisher schon für Xamarin.Forms eine Implementierung liefern.

Vergleich des heutigen Xamarin.Forms mit dem kommenden MAUI

(Bild: MAUI-Repository auf GitHub )

Auf der GitHub-Seite von Xamarin-Forms findet man heute schon Community-Implementierungen von Xamarin.Forms auf Basis von WPF und GTK#, die einen Betrieb von Xamarin.Forms auf Desktop-Betriebssystemen ermöglichen. Allerdings zeigt der Entwicklungsstatus, das diese Implementierungen unvollständig sind.

Die MAUI-Implementierung für Windows soll nicht mehr wie bisher auf der Universal Windows Platform (UWP), sondern auf deren Nachfolger WinUI 3 aufsetzen. Während Xamarin.Forms heute Android ab API-Version 19 und iOS ab Version 9 unterstützt, soll MAUI bei der Android-API-Version 21 und iOS 10 starten.

Xamarin.Forms ist eine Oberflächenbeschreibungssprache auf Basis der Extensible Application Markup Language (XAML). Diese wurde ursprünglich von Microsoft von 2005 an für die Windows Presentation Foundation (WPF) und später auch Silverlight entwickelt und noch einmal später auch für die Universal Windows Platform (UWP) eingesetzt. Seit 2014 nutzte auch die Firma Xamarin XAML, um mit Xamarin.Forms eine einzige Benutzeroberfläche definieren zu können, die dann auf verschiedenen Mobilplattformen dargestellt werden kann.

Xamarin wurde im Februar 2016 von Microsoft übernommen. Seitdem sind Teile von Xamarin als Open Source auf GitHub verfügbar, darunter auch Xamarin.Forms. Während die Grundsyntax von Xamarin.Forms der von WPF, Silverlight und UWP entspricht, sind die einzelnen Tags sehr verschieden (z. B. <StackLayout> statt <StackPanel>, <Label> statt <TextBlock> und <Entry> statt <TextBox>).

Neben der reinen XAML-Syntax will Microsoft in MAUI auch das Einweben von C# in XAML anbieten. Dieses Konzept ist mit C# und HTML und dem Namen "Razor" aus ASP.NET/ASP.NET Core bekannt. Das experimentelle Microsoft-Projekt "Blazor Mobile Bindings" zeigt Razor mit XAML schon heute auf.

Als dritte Option sollen Softwareentwickler in MAUI die Benutzeroberfläche alternativ auch komplett mit Programmcode in einer Fluent-API-Syntax beschreiben können. Microsoft nennt diesen Ansatz "Code First Development" und folgt damit dem MVU-Muster (Model-View-Update) der funktionalen Programmiersprache Elm. Neben MVU ist aber weiterhin das bisher präferierten Pattern Model-View-ViewModel (MVVM) im Angebot.

Code First Development mit C# in MAUI

(Bild: Microsoft )


Als Namensraum für MAUI kommt nicht mehr Xamarin.Forms, sondern System.MAUI zum Einsatz. Auch die Ansteuerung von Betriebssystem- und Hardwareressourcen, die bisher als NuGet-Paket System.Essentials existiert, soll dann als System.Devices Teil von MAUI werden. MAUI gehört damit zur .NET-Klassenbibliothek.

Der Name Xamarin entfällt auch aus den Bibliotheken für native Xamarin-Apps mit plattformspezifischen Oberflächenbeschreibungen (Xamarin.iOS, Xamarin.Android, Xamarin.Mac und Xamarin.Windows). Im Marketing will Microsoft zukünftig nicht mehr von "Xamarin", sondern von ".NET for iOS" und ".NET for Android" sowie ".NET for Mac" sprechen. Nicht davon betroffen sind die Namensräume dieser Bibliotheken, da diese nicht in Xamarin enthalten, sondern mit Android, UIKit beziehungsweise Windows beginnen. Die Nachfolger der nativen Xamarin-Apps werden weiterhin auf der Mono-Runtime aufsetzen, jedoch die gleiche Klassenbibliothek wie .NET 6.0 verwenden.

MAUI und seine Gefährten sollen zudem die einheitliche .NET-Klassenbibliothek nutzen sowie das neue .NET Software Development Kit, das Microsoft in .NET Core eingeführt hat und auch Basis für alle Projekte im zukünftigen .NET 5.0 und Nachfolgern sein wird. So startet man neue MAUI-Projekte an der Konsole unter Verwendung des .NET Command Line Interface (CLI) mit dotnet new maui.

MAUI mit der .NET CLI

(Bild: Microsoft )

Anders als bei den bisherigen Projektvorlagen entsteht nicht ein Projekt für Xamarin.Forms und ein Kopf-Projekt für jede einzelne Zielplattform, sondern insgesamt nur eines im vereinfachten .NET-SDK-Stil. Sofern plattformspezifische Unterschiede notwendig sind, kann man spezifische Ressourcen im Unterordner "Platforms" verwalten. Durch das Multi-Targeting-Feature entstehen dann beim Kompilieren verschiedene Installationspakete für die Zielplattformen.

Auch die nativen Xamarin-Varianten werden das neue SDK-Projektsystem nutzen. Somit können Entwickler Projekte mit Befehlen wie dotnet new ios und dotnet new android beginnen. Für die Unterstützung der Umstellung bestehender Projekte will Microsoft das Werkzeug try-convert aufpolieren.

Microsoft will Xamarin.Forms auch bis zum Erscheinen von MAUI hinsichtlich der grafischen Möglichkeiten ausbauen und um Fähigkeiten erweitern, die es bisher schon in WPF gibt. Dazu gehört das Zeichnen von Element (Shapes und Paths, wofür bisher SkiaSharp eingesetzt werden musste), Farbverläufe (Gradient Brush). Auch neue Steuerelemente für Anwendungscontainer (Shell), Navigationsleiste (AppBar) und Registerkarten mit flexibler Darstellung von Text und/oder Symbolen (TabView). Ein Teil der Funktionen soll schon in Xamarin Forms 5.x ab Herbst 2020 erscheinen.

Eine komplette Angleichung an WPF ist hingegen nicht mehr geplant. Auf der Build 2017 kündigte Microsoft mit "XAML Standard" eine Vereinheitlichung der XAML-Syntax zwischen WPF, UWP und Xamarin Forms an. Im November 2017 erschien das Paket "Xamarin.Forms.Alias", das als ersten Schritt der Vereinheitlichung die Verwendung von WPF-Steuerelementnamen in Xamarin Forms ermöglichte. Leider ist das GitHub-Projekt von XAML Standard seit November 2017 nicht mehr angerührt worden und das Paket "Xamarin.Forms.Alias" wieder vom Microsoft-Server verschwunden.

MAUI und die anderen Xamarin-Nachfolger werden in Zukunft nicht mehr auf der Mono-, sondern der .NET-Klassenbibliothek basieren, die aus der .NET-Core-Klassenbibliothek hervorgehen wird. MAUI soll sich in Standardmechanismen von .NET Core/.NET wie Dependency Injection (Microsoft.Extensions.DependencyInjection) anstelle des Xamarin-eigenen Mechanismus integrieren.

Im Rahmen der Entwicklung von MAUI soll zudem ein komplettes Refactoring der komplexen technischen Infrastruktur von Xamarin Forms, insbesondere der Renderer stattfinden. Durch diese Änderungen und weitere Aufräumarbeiten im API wird es Breaking Changes geben, die eine Änderungen bestehender Xamarin-Anwendungen erfordern wird.

Microsoft entwickelt MAUI als Open Source auf GitHub. Das Projekt ist aber noch in einem frühen Stadium, sodass man im Repository nur wenig von den Neuerungen sieht. Eine erste offizielle Vorschauversionen von MAUI soll es erst zusammen mit den ersten Vorschauversionen von .NET 6.0, Ende 2020 oder Anfang 2021 geben. Die stabile Version soll dann im November 2021 mit .NET 6.0 RTM erscheinen.

Vorerst will Microsoft noch alle sechs Wochen Aktualisierungen von Xamarin.Forms liefern. Die Roadmap für das Projekt auf GitHub reicht derzeit bis Version 5.0 für August/September 2020. Die bisherigen Implementierungen von Xamarin und Xamarin.Forms will Microsoft nach dem Erscheinen von .NET 6.0 nur noch für ein Jahr unterstützen, also voraussichtlich bis Ende 2022. (ane)