chevron_left
chevron_right

Plattformübergreifende Apps !?

Bei der Konsolidierung der Mobilplattformen hat man die Entwickler lange Zeit vergessen. Das Vorhaben, die gleiche App auf verschiedenen Plattformen zu entwickeln, kostet daher Zeit und Geld. Denn nebst den unterschiedlichen Entwicklungstools muss man auch die jeweilige Programmiersprache beherrschen. Doch seit ein, zwei Jahren kommt Bewegung in das Thema – es gibt plattformübergreifende Konzepte.

 

%-Anteil mobiler Betriebssysteme

Mein erstes Handy war ein Nokia 6110. Vielleicht mag sich noch jemand an das dunkelblaue Handy mit monochromem Display und externer Antenne erinnern? Zwischenzeitlich sind einige Tage ins Land gezogen und in der mobilen Welt hat sich einiges getan. Umso erstaunlicher, dass solche Handys noch heute auf Ebay zum Kauf (!) angeboten werden …

Interessanter Trend für Entwickler

Im Jahr 2013 besassen gemäss Google Mobile Planet 54 Prozent der Bevölkerung (mindestens) ein Smartphone. Bei den unter 25-Jährigen sind es sogar 4 von 5 (80 Prozent, Bild 1). Natürlich ist dieser Trend für mich als Softwareentwickler interessant. Ich habe die Möglichkeit, eine App zu entwickeln und der ganzen Welt zur Verfügung zu stellen. Lange Zeit musste ich mir die Frage stellen, für welche Plattform ich eine App entwickeln möchte, wenn ich mir den Aufwand für mehrere Plattformen nicht leisten kann. Für den grössten oder schnellst wachsenden Markt, oder für das Gerät, welches ich selber nutze?

Die Grafik von statcounter zeigt, dass Android seit rund zwei Jahren die Marktführerschaft besitzt und diese auch stetig ausgebaut hat (Bild 2). Auch wenn die Antwort aufgrund dieser Grafik klar ist, möchte ich mich nicht auf nur eine Plattform beschränken – und muss mich auch nicht. Wie eingangs erwähnt, gibt es mittlerweile verschiedene Ansätze für die plattformübergreifende Entwicklung. Microsoft hat an der Build Developer Conference 2014 die Universal-Apps vorgestellt. Damit können (endlich) Apps für Windows und Windows Phone entwickelt werden, die sich Code, Steuerelemente, Styles usw. teilen.

Es gibt native und Web-Apps

Grundsätzlich muss man zwischen zwei Varianten unterscheiden: native Apps und Web- Apps. Letztere werden über den Browser des Smartphones aufgerufen und sind letztendlich reine Webanwendungen, die systemübergreifend funktionieren. Das hat den grossen Vorteil, dass man eine Web-App nicht speziell für iOS, Android oder Windows programmieren muss. Nachteilig wirkt, dass die Web-Apps nicht an die Leistung der nativen Apps herankommen. Auch der Zugriff auf die Gerätehardware ist eingeschränkt und das plattformspezifische UI-Design (User Interface) nicht möglich.

Je komplexer die App, desto schwieriger die Umsetzung

Weiter gilt zu beachten, dass je komplexer eine App ist, desto schwieriger wird die Umsetzung als Web-App. Diese Schwächen sind die Stärken der nativen Apps, welche man aus dem jeweiligen Store herunterlädt und auf dem Smartphone installiert. Aufgrund der separaten Entwicklung für die verschiedenen Plattformen ist aber der Aufwand einiges grösser.

Eine App mit JavaScript, HTML5 und CSS3 zu schreiben und mit PhoneGap die Plattform zu abstrahieren, ist eine weitere Variante. Es entstehen hybride Applikationen, die weder native Apps – Layout mittels Webtechnologien und nicht mit nativen User Interface Frameworks erstellt – noch webbasierte Apps sind, da sie über den jeweiligen Store verteilt und auf die Programmierschnittstellen des Betriebssystems zugreifen können. Massgebender Vorteil ist auch hier, dass man die App nur einmal erstellen muss, diese jedoch die gleichen Nachteile aufweist wie die Web-Apps.

Native Apps mit Xamarin

Die dritte im Bunde ist Xamarin. Xamarin basiert auf Mono, dies ist die Laufzeitumgebung für .NET-Code auf Nicht-Windows-Plattformen. Microsoft-.Net-Entwickler können dadurch Apps für iOS und Android implementieren, ohne das vertraute Visual-Studio-Ökosystem verlassen zu müssen. Im Gegensatz zu Web-Apps und PhoneGap werden auf diese Weise native Apps für jede Plattform generiert. Die Entwicklung setzt aber zusätzliche Kenntnisse der plattformspezifischen UI-Sprache voraus. Ende Mai wurde Xamarin 3 veröffentlicht, welche unter anderem Xamarin.Forms beinhaltet. Dies ist eine Sammlung von Seiten, Layouts und Steuerelementen, die der Entwickler in der App nutzen kann.

Diese Steuerelemente werden zur Laufzeit automatisch in plattformspezifische Komponenten übersetzt. Dies bedeutet, dass sich nun nebst der wiederverwendbaren Business- Logik auch plattformspezifische Standard-Steuerelemente sowie Gerätefunktionen nutzen lassen (Bild 3).

Für das Erstellen einer iOS App braucht es einen Mac

Das tönt doch sehr gut! Aber was ist mit den Apps, die aufwendigere UIs besitzen bzw. Steuerelemente benötigen, die (noch) nicht zur Verfügung stehen? Dann geht es wieder zurück auf Feld 1, und man kommt nicht um die plattformspezifische UI-Sprache herum. Der Aufwand ist sicherlich kleiner als ohne Xamarin.Forms, aber trotzdem vorhanden und nicht zu vernachlässigen.

Als zweite Option kann man die UI-Design-Sprache XAML von Microsoft für das Erstellen von Benutzeroberflächen verwenden – und zwar für alle Plattformen. Dies hat sofort auch meine Aufmerksamkeit geweckt. XAML für Xamarin.Forms ist aber nicht identisch mit der XAML, welche wir von Windows Phone her kennen. Dies bedeutet, dass wir den Code auch nicht einfach kopieren können. Doch oder gerade weil es ein anderer «Dialekt» ist, fühlt sich die plattformübergreifende XAML sehr vertraut an.

Zum Schluss möchte ich eine Information bezüglich iOS-Apps nicht vorenthalten: Für das Erstellen (Builden) einer iOS-App ist ein Mac zwingend erforderlich. Dennoch finde ich den Xamarin-Ansatz sehr spannend, und man darf gespannt sein, was uns in Zukunft noch alles bringen wird.

Infoservice


HSiG, Hardware + Software ingenieurbüro Giger

Schwemmiweg 18

8880 Walenstadt

Tel. 081 733 17 77, Fax 081 733 17 88

michael.giger@hsig.ch, www.hsig.ch