Microsoft und die .NET/Mono-Firma Xamarin: Diese Übernahme war reichlich überfällig

Microsoft hat Xamarin übernommen. Diese Nachricht überrascht .NET-Experte Holger Schwichtenberg überhaupt nicht. Sie überrascht wohl kaum jemanden. Eigentlich war es nur eine Frage der Zeit – aber es zog sich dann doch lange hin.

In Pocket speichern vorlesen Druckansicht 180 Kommentare lesen
Microsoft und Xamarin: Diese Übernahme war reichlich überfällig
Lesezeit: 7 Min.
Von
  • Dr. Holger Schwichtenberg
Inhaltsverzeichnis

Viele Jahre waren die nun übernommene Firma Xamarin, die Werkzeuge zur Cross-Plattform-Entwicklung auf Basis von C# herstellt, und die Vorläuferfirmen kein Thema für Microsoft, denn der Konzern war nicht ernsthaft daran interessiert, mit seinem .NET Framework auch andere Betriebssysteme zu unterstützen. Bemerkenswert war lediglich, dass Microsoft die Entwicklung von Mono, einem plattformneutralen .NET-Nachbau, gewähren ließ. Das ist etwa so, als wenn ein Autohersteller einen formgleichen Nachbau – nur mit anderem Motor – toleriert.

Mittlerweile aber muss Microsoft auch andere Betriebssystemmärkte betreten, denn das eigene Windows schwächelt zunehmend und bekommt im Mobilfunkmarkt nach wie vor gar kein Bein auf den Boden. Xamarin ist in den letzten Jahren enorm gewachsen, denn viele Entwickler sehen .NET mit C# als produktive Alternative zur Cross-Plattform-Entwicklung mit dem kleinsten gemeinsamen Nenner aus HTML und JavaScript.

Ein Kommentar von Holger Schwichtenberg

Holger Schwichtenberg bloggt als "Dotnet-Doktor" auf heise Developer. Er ist einer der bekanntesten Experten für .NET in Deutschland und bietet mit seiner Firma IT-Visions Beratung, Schulung und Entwicklungsarbeit für Windows- und Web-basierte Anwendungen.

Gerüchte zur Übernahme von Xamarin durch Microsoft gibt es seit zwei Jahren, und die Entwicklerwelt fragte sich, warum nichts passierte. Man h örte, dass sich vor allem Mono-Gründer Miguel de Icaza zierte. Nun hat er nachgegeben – und das ist auch gut so.

Denn bei aller Kooperation, die es mittlerweile zwischen Microsoft und Xamarin gibt, ist dringend eine einheitliche Technik notwendig. Xamarin adressiert bisher nur klassische Kleingeräteplattformen: iOS, tvOS, watchOS, Android, Windows Phone und die Modern Apps unter Windows 8 beziehungsweise die Universal Apps unter Windows 10. OS-X-Support gibt es dort zwar auch noch im Portfolio, aber es wird stiefmütterlich behandelt. Eine klassische Windows-Anwendung, die immer noch der herrschende Alltag in vielen Unternehmen ist, unterstützt Xamarin gar nicht. Ebenso kann man mit der Xamarin-Produktlinie keine Linux-Anwendungen erstellen. Windows und Linux lassen sich mit Mono bedienen (und Windows Forms), aber eine Mono-Anwendung ist eben auch wieder etwas anderes als eine Xamarin-App (mit nativer UI oder Xamarin Forms).

Lange Zeit bezog sich "Cross-Plattform" bei Xamarin auf alle möglichen Klassen, aber nicht auf die Benutzerschnittstelle; diese mussten Entwickler mit nativen Mitteln der jeweiligen Plattform erstellen. Mit Xamarin Forms bietet das Unternehmen zwar mittlerweile eine XAML-basierte Technik, die auf iOS, Android und den genannten Windows-Varianten läuft, aber sie steckt noch ganz tief in den Kinderschuhen im Vergleich zu Microsofts XAML-Implementierungen in WPF und der Windows Runtime. Einen WYSIWYG-Designer gibt es nicht – Entwickler müssen Tags tippen.

In Summe stößt man damit auf drei XAML-Varianten für eine Aufgabe, die unbedingt durch genau eine Markup-Sprache über alle Betriebssysteme hinweg gelöst werden müsste. Die Übernahme von Xamarin durch Microsoft gibt uns Hoffnung, dass Microsoft nun eine dieser XAML-Varianten so ausbauen wird, dass man damit .NET-basierte Benutzeroberflächen bauen kann, die wirklich auf allen Geräten laufen – von der Uhr und dem Smartphone übers Tablet bis zum PC – genauso wie bei HTML eben. Im Moment erlebe ich als Berater jeden Tag Kunden, die mir sagen: Sie würden ja viel lieber bei .NET, C# und XAML bleiben, aber da HTML die einzige echte Cross-Plattform-UI-Technik sei, müssten sie jetzt auch in den sauren Apfel beißen und umschulen.

Aber auch unter der Benutzeroberfläche gibt es Vereinheitlichungsbedarf, denn während Xamarin konsequent auf die .NET-Programmierschnittstellen gesetzt hat und Wrapper für die Betriebssystem-eigenen APIs liefert, hat sich Microsoft mit den Modern Apps in Windows zum Teil von .NET abgewendet und auf die neue Windows Runtime API gesetzt – mit der absurden Konsequenz, dass Entwickler nun mit .NET-Klassen manche Aufgabe auf iOS und Android ausführen können, die aber unter Windows Apps nicht über .NET, sondern mit WinRT zu lösen ist.

Microsoft bietet nun .NET Core nicht als Open Source nur für Windows, sondern auch für OS X und Linux an. Einzelne Bibliotheken wie den OR-Mapper Entity Framework schreibt Microsoft schon jetzt so, dass sie auch auf iOS und Android laufen. Xamarin bedient sich seit November 2014 fleißig beim Quellcode von Microsoft, um Mono zu verbessern.

Macht diese Parallelentwicklung von Mono und .NET Core noch Sinn? Nein. Konkurrenz, die das Geschäft beleben könnte, im klassischen Sinne, gab es zwischen Microsoft und Xamarin sowieso nie, denn die Zielplattformen waren andere, sodass man eine Auswahl einfach nicht hatte. Es ärgert einfach nur im Entwickleralltag, wenn man Programmcode von einer auf die andere Plattform übernehmen will und umschreiben muss, weil es hier anders gelöst ist als dort. Microsoft sollte sich darauf konzentrieren, dass .NET Core die Basis für Software auf allen Betriebssystemen wird. Das geht nicht von heute auf morgen, aber das muss mittelfristig das Ziel sein.

Die den Markt belebende Konkurrenz zu .NET und C# ist da: Es ist die Allianz aus HTML, JavaScript, PhoneGap und vielen anderen Webframeworks.

Der große Show-Stopper bei Xamarin ist bisher für viele das Preismodell. 999 bis 1899 Euro im Jahr pro Entwickler sind einfach zu viel, wenn es Cordova kostenfrei gibt. Am besten für Microsoft wäre es, sie würden Xamarin einfach mit Visual Studio ausliefern – ohne Extrakosten. Xamarin Business käme dann in Visual Studio Professional und Xamarin Enterprise in Visual Studio Enterprise. Die Namen passen ja schon fast. Das ist aber nicht verkündet, sondern nur mein Wunsch und Appell an Microsoft.

Arbeiten muss Microsoft auch an der Qualität. Immer wieder reifte bei Xamarin die Software beim Kunden. Nun hat leider Microsoft in den letzten zwei Jahren mit zunehmender Agilität auch an Stabilität bei .NET und Visual Studio eingebüßt. Nicht alle Microsoft-Produkte waren immer stabil, aber .NET und Visual Studio waren früher stabiler. Entwickler müssen also sehr hoffen, dass sich die beiden Unternehmen im Agilitätswahn zusammen nicht weiter herunterreißen. Wir wollen zwar häufigere Innovationen, aber wir wollen auch wieder stabilere Software!

Im April 2015 hatte Microsoft verkündet, dass man an Produkten arbeite, um iOS- und Android-Apps auf Windows 10 zu betreiben. Für die "Windows Bridge for iOS" (Projekt Islandwood), ein Konverter-Werkzeug in Visual Studio, um Objective-C-Code für eine iOS-App in eine Windows-App zu verwandeln, gibt es auch ein Jahr danach erst eine Vorabversion 0.1. Das Projekt für einen Android-Emulator unter Windows 10 (Projekt Astoria) scheint hingegen schon gescheitert zu sein.

Ein neuer Ausweg für den Softwareriesen könnte nun sein, dass sich Universal Apps in Zukunft nicht nur auf das Microsoft-Universum beschränken, sondern ihrem Namen gerechter werden, indem sie die Apple-Welt, Android und Linux einschließen. Wenn Microsoft mit .NET/C# native "Write Once Run Anywhere"-Software inklusive XAML-Benutzeroberflächen über alle gängigen Betriebssysteme hinweg ermöglicht, wäre das für Softwareentwickler eine echte Alternative zu HTML/JavaScript – und die (vielleicht letzte) Chance für Microsoft, über mehr Apps dann doch noch mehr Marktanteile mit den Windows-Smartphones zu bekommen. (ane)