Cross-Plattform-Programmierung – App-Entwicklung ohne Einschränkung
Apps werden auf verschiedenen Endgeräten genutzt: Smartphones, Tablets, Desktop-PCs, im Browser, auf dem iPhone oder dem Mac Mini sowie auf verschiedenen Android-Geräten. Erfolg versprechen die Apps, die gleich für mehrere Zielgeräte entwickelt werden – so erweitern IT-Unternehmen die Zielgruppe für ihre Software. In der modernen Anwendungsentwicklung hat sich dabei eine Technik als besonders effektiv herauskristallisiert: Die Cross-Plattform-Programmierung, also plattformunabhängiges Development, das auf einem Quellcode basiert. In diesem Artikel erklären Elena Bochkor und Veikko Krypczyk was hinter der Cross-Plattform-Entwicklung steckt, welche Vorteile aber auch Herausforderungen sie mitbringt und wie Sie sie effektiv einsetzen.
Viele Plattformen, eine Codebasis
„Write once, run anywhere (WORA)“ ist ein Wunsch, der Entwicklerinnen und Entwickler seit Ewigkeiten begleitet: Apps entwickeln, die auf allen Betriebssystemen und Geräten performen. Im Gegensatz zur plattformspezifischen Programmierung für ein bestimmtes System oder Endgerät verfolgt die Cross-Plattform-Programmierung genau dieses Ziel. Das von Microsoft entwickelte .NET MAUI verwendet beispielsweise zum Erstellen der Benutzeroberfläche stets das UI-System des Zielsystems. Das führt dazu, dass Apps für Android, iOS und Windows auch tatsächlich so aussehen und funktionieren, als wären sie exklusiv für das jeweilige Zielsystem programmiert worden.
Cross-Plattform-Programmierung ist der Ansatz, aus einer einzigen Quellcodebasis Anwendungen zu erstellen, die auf den unterschiedlichen Systemen ausgeführt werden können. Die perfekte Umsetzung wird es hier zwar nie geben, dennoch ist es der ewige Traum, die Vision „Write once, run anywhere (WORA)“ möglichst gut zu realisieren. Cross-Plattform-Programmierung lohnt sich also immer dann, wenn man Apps für mehr als ein Zielsystem erstellen möchte. In diesem Fall kann man entweder mit viel Aufwand für jedes System eine eigene App programmieren oder prüfen, ob auch der Cross-Plattform-Ansatz zum Ziel führt.
Es gibt verschiedene Ansätze zur Cross-Plattform-Programmierung, einschließlich der Verwendung von Frameworks, Bibliotheken und Tools. Einige der bekanntesten davon sind:
- .NET MAUI: Cross Plattform-Entwicklung für die Systeme iOS, Android, Windows und macOS. Der Name leitet sich ab aus dem Akronym für .NET Multi-Platform App UI. Es stellt den Nachfolger von Xamarin.Forms dar, dessen Support im Jahr 2024 ausläuft – spätestens dann sollten Cross-Plattform-Entwickler ihre Apps auf .NET MAUI umstellen. Beim Einsatz von .NET MAUI wird das User Interface übergreifend und deklarativ erstellt. Programmiert wird in → Programmiersprache C# – dies bietet den Vorteil, die gesamte Funktionsvielfalt des .NET-Frameworks und der integrierten Entwicklungsumgebung Visual Studio zu nutzen.
- React Native: Eine Entwicklungsplattform, die Webtechnologien und die JavaScript-Bibliothek → React verwendet, um Apps für iOS und Android zu erstellen. Sie richtet sich primär an Entwickler, die ihre Kenntnisse in der Webentwicklung auch zum Erstellen von mobilen Apps einsetzen möchten.
- Flutter: Ein weiteres Cross-Plattform-Framework zum Programmieren von mobilen Apps, Web-Apps und Applikationen für den Desktop. Es stammt von Google und verwendet die Programmiersprache → Dart. Die Benutzeroberfläche wird eigenständig auf der Basis der Grafik-Engine Skia für jede Plattform gerändert.
- Unity: Eine Cross-Plattform-Engine, die es erlaubt, mithilfe der .NET-Technologie 2D- und 3D-Spiele für unterschiedliche Plattformen, d. h. Windows, macOS, Linux, Android und iOS, zu erstellen.
So geht effiziente und elegante App-Entwicklung
Was sind die Vorteile der Cross-Plattform-Programmierung?
Die Cross-Plattform-Programmierung bietet Entwicklerinnen und Entwicklern einige Vorteile:
- Kosteneffektivität: Da die Softwareentwicklung lediglich auf einem einzigen Code für mehrere Plattformen basiert, werden weniger Zeit und Ressourcen als bei einer Programmierung für mehrere Systeme benötigt. Das kann die Kosten reduzieren und das Budget schonen.
- Größere Reichweite: Mit Cross-Plattform-Programmierung können Entwickler*innen ihre Apps auf verschiedenen Plattformen veröffentlichen, einschließlich mobiler Geräte und Desktop-Systemen, was zu einer größeren Reichweite und einer höheren Anzahl von Benutzern führen kann.
- Konsistente Benutzererfahrung: Eine einheitliche Codebasis ermöglicht es Entwicklern, eine konsistente Benutzererfahrung auf verschiedenen Plattformen bereitzustellen, was zu einem besseren Nutzererlebnis führen kann.
- Einfache Wartung: Die Verwendung einer einzigen Codebasis vereinfacht auch die Wartung und Updates der Anwendung, da Änderungen nur an einer Stelle vorgenommen werden müssen.
- Schnellere Markteinführung: Durch die Verwendung von Cross-Plattform-Entwicklungswerkzeugen können Entwickler:Innen die Anwendungen schneller erstellen und auf verschiedenen Plattformen veröffentlichen, was zu einer schnelleren Markteinführung und einem Wettbewerbsvorteil führen kann.
Diese Vorteile machen Cross-Plattform-Programmierung zu einer attraktiven Option für Entwickler, die eine breite Palette von Nutzern erreichen möchten, ohne zusätzliche Ressourcen und Zeit in die Entwicklung von separaten Codebases zu investieren.
Welche Herausforderungen sind bei der Cross-Plattform-Programmierung zu bedenken?
Die größte Herausforderung bei der Cross Plattform-Programmierung besteht darin, dass man alle Zielsysteme unter einen Hut bekommen muss. Für Features, die beispielsweise nur auf einem System existieren, muss man auch plattformspezifischen Code schreiben. Das ist bei .NET MAUI grundsätzlich möglich, es sollte jedoch die Ausnahme bleiben, um die Vorteile der Cross-Plattform-Programmierung nicht wieder zu Nichte zu machen. Probleme können bei der Nutzung exotischer Sensoren oder Hardware-Funktionen entstehen, die noch nicht durch die Cross-Plattform-Bibliothek abgedeckt werden.
Ihre Expert*innen für .NET MAUI und Cross-Plattform-Programmierung
Elena Bochkor: Expertin für UX
Elena Bochkor hat Betriebswirtschaftslehre mit dem Schwerpunkt Wirtschaftsinformatik studiert. Sie beschäftigt sich mit Fragen der Ausgestaltung moderner IT-Systeme. Im Fokus steht dabei immer die bestmögliche User Experience. Zusammen mit Dr. Veikko Krypczyk hat sie das → »Handbuch für Softwareentwickler« geschrieben.
Veikko Krypczyk: Experte für Softwareentwicklung
Dr. Veikko Krypczyk ist Softwareentwickler mit Leidenschaft und Dozent für Informatik und Wirtschaftsinformatik. Er publiziert regelmäßig in Fachzeitschriften, tritt als Speaker auf IT-Konferenzen auf und ist Trainer für Softwareentwicklung. Sein Arbeitsschwerpunkt liegt auf der Erstellung moderner Applikationen mit Technologien aus dem Hause Microsoft. Er ist Mitautor des »Handbuchs für Softwareentwickler«.
Praxis lernen von den Profis!
Sie möchten Softwareentwicklung in der Praxis erleben und Ihre konkreten Fragen an zwei ausgewiesene Expert*innen stellen? Elena Bochkor und Veikko Krypczyk bieten aktuell mehrere Online-Seminare an, in denen Sie Ihr Wissen rund um die Anwendungsentwicklung und App-Programmierung vertiefen können:
→ Moderne Anwendungsentwicklung mit der WPF
→ Cross-Plattform-Programmierung mit .NET MAUI
→ Requirements Engineering
→ C# Deep Dive
Best Practices für die plattformunabhängige App-Entwicklung
Wer mit der Cross-Plattform-Entwicklung starten möchte, der sollte bei der → Entwicklung mit .NET MAUI ein paar Tipps und Tricks aus der Entwicklerpraxis beherzigen. Veikko Krypczyk und Elena Bochkor haben 7 Best Practices für die App-Entwicklung mit .NET MAUI hier zusammengestellt.
- Verwenden Sie stets die neueste Version des Frameworks, da Verbesserungen und Fehlerkorrekturen regelmäßig stattfinden und eine fortlaufende Anpassung an die aktuellen Zielsysteme erfolgt.
- Nutzen Sie das MVVM-Pattern (Model View ViewModel), um die Logik von der Benutzeroberfläche zu trennen. Dies erleichtert das Testen und Warten des Codes.
- Verwenden Sie die Datenbindungsfunktionen von XAML, um Daten nahtlos zwischen Ihrer Benutzeroberfläche und Ihrer ViewModel-Schicht zu übertragen.
- Verwenden Sie Resource Dictionaries, um Ihre Styles, Templates und Ressourcen zu organisieren und wiederverwendbar zu machen.
- Achten Sie auf die Leistung Ihrer App, insbesondere auf langsameren Plattformen. Vermeiden Sie übermäßige Nutzung von Ressourcen und verwenden Sie Tools zur Überwachung der App-Performance.
- Testen Sie die App auf allen Zielplattformen regelmäßig nach umfangreicheren Anpassungen von Funktionen und Design der App.
- Nutzen Sie die Ressourcen und Diskussionsforen in der .NET-Community, um von anderen Entwicklern zu lernen, Fragen zu stellen und Probleme zu lösen.
App-Entwicklung in der Praxis – Webinare zu .NET MAUI und Co.
Für alle, die noch mehr Praxis suchen: In unseren → 5-teiligen Webinar-Serien zu .NET MAUI, Requirements Engineering und Co. tauchen Sie tief in die Welt der Softwareentwicklung ein. Hier bringen Entwicklerinnen und Entwickler ihr Wissen aufs nächste Level!
6. September–4. Oktober 2023
In dieser Webinar-Serie erfahren Sie in allen Details, wie Sie moderne Apps aus einer einzelnen Quellcodebasis für Android, iOS, Windows und macOS erstellen: von der Einrichtung der Programmier- und Systemumgebung über den gesamten Entwicklungszyklus der App bis hin zur Programmierung von modernen Apps für alle Systeme aus einer Quellcodebasis.
1.–29. September 2023
Für den Erfolg von Softwareprojekten ist ein effizientes Requirements Engineering (RE) grundlegend. In den fünf aufeinanderfolgenden Webinaren dieser Serie lernen Sie die Arbeitsweisen und Tools von Requirements Engineering sowie deren Einsatz in der Praxis kennen. Alle Inhalte dieser Serie sind am IREB-Plan (International Requirements Engineering Board) ausgerichtet.
Sie möchten mehr zur Webentwicklung wissen? Lesen Sie, was sich hinter der → Fullstack-Entwicklung versteckt und wie Sie selbst zum Developer werden.