Hybrid-Apps und ihre Performance – ein viel diskutiertes Thema

Spricht man über Hybrid-Apps, wird meist im gleichen Atemzug über die Performance diskutiert. Doch wie sieht es aus mit dem Mythos “hybrid ist gleich langsam”? Wir räumen auf mit Vorurteilen und verdeutlichen anhand einiger Performancefaktoren, was hybrid entwickelte Anwendungen wirklich können. Wie bei einer Software spielen auch bei mobilen Anwendungen viele Faktoren zusammen, die einen Einfluss auf die Leistungsstärke haben. Einige sind vom Entwickler nicht beeinflussbar andere wiederum schon.

Herzstücke der Endgeräte

Das Herzstück eines jeden Computersystems ist der Prozessor. Seine Leistungsfähigkeit wirkt sich in hohem Maße auf die Schnelligkeit der Berechnungen aus. Das ist bei mobilen Endgeräten nicht anders. Die technologischen Entwicklungen im Bereich der Prozessortechnik verfolgt eine rasante Geschwindigkeit, die das Moorsche Gesetz bereits 1965 prophezeite. Das “Gesetz” geht davon aus, dass sich die Rechenleistung von Prozessoren circa alle 18 Monate verdoppelt. Zwar stößt dieser Fortschritt in Zukunft an seine Grenzen, da die Fertigung der Mikrochips immer aufwendiger wird, je kleiner sie werden. Derzeit ist Moores Vermutung aber noch in der Praxis erlebbar. Betrachten wir beispielsweise die Größe oder besser die kompakte Beschaffenheit der Smartwatches, verdeutlicht sich die Relevanz dieses Fortschritts. Manche bezeichnen Moores Beobachtungen sogar als die Grundlage für die sogenannte digitale Revolution.

Neben der Prophezeiung aus den 60er Jahren existieren natürlich auch quantitative Erhebungen, die uns die Gegenwart vor Augen halten: Die Gesellschaft für Konsumforschung (GfK) erfasste im Telecom-Handelspanel den Leistungsanstieg mobiler Endgeräte, speziell der Smartphones. Die GfK stellte in jeder Preiskategorie eine steigende Anzahl an Prozessorkernen fest. Darüber hinaus verfügen 25 % der Smartphones in Westeuropa über vier oder mehr Prozessorkerne. Auch das renommierte Journal of Computer Applications bestätigt einen einschneidenden Übergang im Bereich des “Mobile Computing”. Das Journal bezieht sich auf das Aufkommen der 64-bit ARM basierten Prozessoren. Experten erwarten im Vergleich zu den 32-bit Prozessoren eine Performanceverbessung von 50 %. Somit weisen auch die Herzstücke der mobilen Endgeräte mittlerweile hohe Prozessor- bzw. Rechenleistungen auf. Die Performancelücke zwischen mobilen und stationären Endgeräten schrumpft.

Ökosysteme machen Hybrid-Apps Beine

In einem unserer letzten Blogartikel “Hybrid-Apps – mehr Performance durch iOS 8 und Android 4.4” befassten wir uns bereits ausführlich damit, welche Auswirkungen die modernen Betriebssysteme auf hybride Applikationen haben. Hier noch ein mal eine Zusammenfassung: Die Browser bzw. Betriebssysteme mobiler Devices spielen eine entscheidende Rolle bei der Performance. Hybrid-Apps basieren auf Webtechnologie rund um HTML5. Sie werden über den Browser gerendert und im sogenannten WebView dargestellt. Pauschal kann man deshalb festhalten: Je schneller der Browser, umso schneller die Hybrid-App. Die modernen Betriebssysteme Android KitKat (4.4) und iOS 8 – was im Übrigen die zwei Marktführer sind – verwenden die leistungsstarke Render-Engine WebKit. Eine Render-Engine interpretiert die HTML-, CSS- und JavaScript-Codes, um die App im WebView anzuzeigen. Je schneller diese Berechnungen ablaufen, umso schneller wird die App-Funktionalität ausgeführt. Neben der Rechenleistung der Geräte selbst ist mit WebKit auch die Rechenleistung der Betriebssysteme gestiegen. Auch hier zeigen sich große Performancesprünge. Die Updates von Android und iOS ermöglichen außerdem die Verwendung der Grafik-Libary WebGL. Mit dessen Hilfe spricht JavaScript direkt den Grafikprozessor des Endgerätes an, der dadurch wiederum komplexe 3D-Grafiken berechnen kann. Die Berechnungen durch die Hardware des Endgerätes selbst verlaufen schneller als über den WebView. Ein weiterer Performancefaktor mit positiver Auswirkung auf komplexe Hybrid-Apps.

Was bleibt für den Entwickler

Die vorherigen Abschnitte sagen, dass sowohl Endgeräte als auch Betriebssysteme schneller werden. Das begünstigt natürlich auch andere Programmierweisen. Jedoch fehlt noch ein entscheidender Punkt – einer, der durch den App-Entwickler beeinflussbar ist: die Auswahl der richtigen Technologien bzw. Frameworks. Mit Ionic und Node.js sind zwei junge Frameworks auf dem Markt, die bereits in der frühen Phase für Furore sorgten. Sie revolutionieren die App-Entwicklung und mischen die Karten für die Auswahl des richtigen Entwicklungsansatzes neu.

Ionic

Das Frontend-Framework Ionic liefert technische Grundlagen zur Erleichterung der Hybrid-App-Programmierung. Darunter sind beispielsweise Listen, Formulare oder Layout-Komponenten. Ein Beispiel, wie Ionic die Performance hybrider Applikationen verbessert, betrifft unter anderem das Rendering von komplexen Listen. Es werden immer nur Teile der gesamten Liste im HTML5-Code geladen. Durch cleveres Speichermanagement recycelt Ionic die anderen Einträge. Diese Lösung resultiert in eine performante Scrollingroutine. Komplexe Listen sind Bestandteil vieler Apps. Beispielsweise ist der Facebook-Newsstream ein Beispiel hierfür. Aus diesem Grund ist der Lösungsansatz der Listen für viele Anwendungen relevant. Das war nur ein Beispiel dafür, was Ionic leistet. Die Köpfer hinter dem jungen Framework entwickeln stetig weitere Features, beispielsweise auch eigene PhoneGap- (Cordova) Schnittstellen zum Endgerät. Die Grenzen zwischen hybrider und nativer Entwicklung verschwinden dadurch mehr und mehr.

Node.js

Neben Ionic ist vor allem Node.js ein bedeutendes Framework in puncto Performance. Node.js ist eine serverseitige JavaScript-basierte Programmiersprache und bezieht sich im Gegensatz zu Ionic auf das Backend. Mit Node.js lässt sich das Anfragen-Handling an das Backend geschickter gestalten. Die sogenannten Requests werden nicht nacheinander (synchron), sondern gleichzeitig (asynchron) geschickt, bearbeitet und verwaltet. Die Programmiersprache schafft eine aktive Kommunikation zwischen Server und App. Auch das wirkt sich in – wie könnte es auch anders sein – Performancevorteile aus.

 

Performancefaktoren

Abb.1: Zusammenfassung der Performance beeinflussenden Faktoren

 

Abbildung 1 fasst noch einmal alle betrachteten Faktoren zusammen: Neben dem Endgerät selbst, welches stetig stärkere Leistung vorweisen kann, verändern sich auch die Betriebssysteme, für die die Anwendungen letztendlich programmiert werden. Darüber hinaus bekommen Entwickler mit Frameworks wie Node.js oder Ionic leistungsstarke Tools an die Hand, die es ermöglichen, robuste und komplexe hybride Anwendungen zu schreiben. All dies mündet in eine neue Generation von Hybrid-Apps – nennen wir sie Hybrid-Apps 2.0, die sich mit den Hybrid-Apps von vor zwei bis drei Jahren nicht vergleichen lassen. Selbst so komplexe Anwendungen wie Spiele, die hohe Ansprüche an Leistung und Ressourcen stellen, sind heute mit hybrider Architektur umsetzbar.

 

Hybrid vs. Nativ

Natürlich ist nicht immer alles schwarz oder weiß. Auch existiert nicht die eine Lösung zur App-Programmierung. Jedoch ist die hybride Architektur für eine immer größer werdende Anzahl an Apps bzw. Anwendungsfällen geeigneter und sinnvoller. Ihre Flexibilität und Allgegenwart sowie die Wirtschaftlichkeit der Entwicklung sind nun mal schlagende Argumente für die Entscheider dieser Welt. In unserer Publikation “Hybrid-Apps 2.0 – Status quo des hybriden Entwicklungsansatzes” sind diese Punkte und noch weitere Ansätze ausführlich diskutiert.