Native, Hybrid oder Web Apps?

04 Oktober 2015  

Welche Vari­ante ist die beste um meine App umzuset­zen?
In vie­len Pro­jek­ten taucht diese Frage spätestens bei der Aufwandss­chätzung im Raum.

Wir stellen hier die einzel­nen Vari­anten vor und pro­bieren die Vor- und Nachteile der Vari­anten für Pro­jek­te deut­lich zu machen.

Native App

Native Apps sind in der jew­eili­gen Hochsprache geschriebene Anwen­dun­gen. Dies sind Apps die ganz spez­i­fisch für ein bes­timmtes Betrieb­ssys­tem sel­ten auch für eine spezielle Ver­sion entwick­elt wur­den und die alle Funk­tio­nen und Fähigkeit­en opti­mal aus­nutzen kön­nen. Auf Apple-Geräten sind das etwa in Objec­tive-C oder Swift geschriebene App­lika­tio­nen die meist mith­il­fe von XCode geschrieben wer­den, für Android-Smart­phones und Tablets sind die Anwen­dun­gen in Java geschrieben. Native Apps nutzt neben der jew­eili­gen Sprache auch direkt die bere­it­gestell­ten APIs und Pro­gram­mier­richtlin­ien des jew­eilige Sys­tems. Sel­ten wer­den Apps auch in anderen Hochsprachen als den Stan­dard­sprachen geschrieben, ein gutes Beispiel sind reine C Apps für iOS

Aus­gewählte Tech­nolo­gien:
Objec­tive-C (Apple, iOS)
Java (Google, Android)
C# (Microsoft, Win­dows Phone)

Welche Vorteile haben native Apps?:
Opti­maler (Schnell ohne Verzögerung) Zugriff auf die Ressourcen des Geräts
Zugriff auf alle Hard­ware-Funk­tio­nen
Verteilung über die App Stores
Mögliche Bugs kön­nen meist gelöst­wer­den
Etablierte Zahlungsmöglichkeit­en, meist durch die Anbi­eter der App Stores

Welche Nachteile haben native Apps?:
Für jede Plat­tform ist eine sep­a­rate Entwick­lung notwendig
Hoher Pflege- und Wartungsaufwand
Höhere Erstel­lungskosten

Opti­male Ein­satzge­bi­ete aus Kosten/Nutzen Sicht:
Spiele
Hard­ware- und Per­for­mance kri­tis­che Apps
Bei sehr hohen Sicher­heit­san­forderun­gen

Web-App

Eine Webapp ist eine Web­site welche Mith­il­fe z.B. eines Web­views in einen nativ­en Rah­men geladen wird Also etwas, das mit Hil­fe eines Browsers auch über eine URL aufgerufen wer­den kön­nte.

Web-Apps kön­nen the­o­retisch auch in gängi­gen nor­malen Desk­top-Browsern genutzt wer­den. Auf mobilen Endgeräten kön­nen diese zudem ein Icon auf dem Start­bild­schirm erhal­ten, um sie schneller aufrufen zu kön­nen. Let­ztlich wird aber die Web­seite aufgerufen, und das bed­ingt in den aller­meis­ten Fällen auch eine Online-Verbindung. In eini­gen Fälle nutzen Web-Apps auch einen Offline­spe­ich­er der allerd­ings sehr begren­zt ist und auch anderen tech­nis­chen Restrik­tio­nen unter­liegt

Aus­gewählte Tech­nolo­gien:
HTML 4/5 inklu­sive CSS3
WebGL

Welche Vorteile haben Web-Apps?
Kostengün­stige Entwick­lung
Leicht an unter­schiedliche Endgeräte anpass­bar
Sehr schnelle Updates

Welche Nachteile haben Web-Apps?
Stark begren­zte Möglichkeit­en
Meist schlechtere Usabil­i­ty als andere Apps
Kein Zugriff auf Hard­ware-Funk­tio­nen wie z.B. Kom­pass, Kam­era oder Blue­tooth
Keine Dis­tri­b­u­tion über den jew­eili­gen App­store (Dies würde dann eine Hybride App erfordern)

Hybride App

Bei diesem Ansatz wird eine Web App mit ein­er nativ­en App kom­binieren.
Dabei wird möglichst viel Logik über eine Web-App umge­set­zt und nur in kri­tis­chen Bere­ichen auf native Entwick­lun­gen zurück­ge­grif­f­en
Die Bestandteile in der Web-App kön­nen sowohl Online geladen wer­den als auch direkt in der App mitaus­geliefert wer­den.

Aus­gewählte Tech­nolo­gien:
HTML 4/5 inklu­sive CSS3
WebGL
Cordova/Phonegap oder ein selb­sten­twick­el­ter Rah­men in der jew­eili­gen Hochsprache

Vorteile:
Plat­tfor­müber­greifende Entwick­lung möglich
Verteilung und Bezahlung über App Stores.
Zugriff auf Hard­ware-Funk­tio­nen wie Kam­era und GPS.
Kostengün­stige Entwick­lung

Nachteile:
Aktu­al­isierun­gen müssen eben­falls über die App Stores erfol­gen.
Per­for­mance-Prob­leme im Web-App Bere­ich

Schw­er­punk­te:
Hybrid Apps sind je nach Ein­satz das beste oder schlecht­este aus zwei Wel­ten. Die Kosteneinsparung gegenüber rein nativ­en Apps sprechen für einen Ein­satz in nicht 100% Per­for­mance hun­gri­gen Apps bei welchen Kosten/Nutzen eine stärkere Rolle spielt.

Crosscompile Apps

Ein neuer­er Tech­nolo­gie die es ermöglicht aus ein­er Code­ba­sis ver­schiedene Native Apps zu kom­pilieren.
Dies ermöglicht eine plat­tform-über­greifende Entwick­lung von Fea­tures mit Ausspielun­gen für unter­schiedliche (mobile) Betrieb­ssys­teme zu entwick­eln. Ein­er der bekan­nten Anbi­eter, Xam­arin (Mono) ver­wen­det C# welch­es dann in Java bzw. Objec­tive-C über­set­zt wird. Aus Sicht des Betrieb­ssys­tems sieht eine der­ar­tige App nicht anders als eine echt-native aus. Hier­bei ist es wichtig das nicht alle Bestandteile durch den Cross­com­pile abgedeckt wer­den, bei Xam­arin wird das Fron­tend meist Plat­tform spez­i­fisch entwick­elt. Je nach Pro­jekt kön­nen ca. 40–60% des Codes weit­er genutzt wer­den.

Aus­gewählte Tech­nolo­gien:
Xam­arin

Vorteile:
Plat­tfor­müber­greifende Entwick­lung möglich
Verteilung und Bezahlung über App Stores.
Zugriff auf Hard­ware-Funk­tio­nen wie Kam­era und GPS.
Kostengün­stigere Entwick­lung

Nachteile:
Lizen­zkosten pro App
40 — 60% Plat­tform abhängiger Code

Fazit

Je nach Anforderung gibt es ver­schiedene Lösun­gen die zielführend sind. Nach ein­er Anforderungs­analyse kann eine entsprechende Ein­schätzung erfol­gen, meist soll­ten hier­für aber auch kri­te­rien wie gewün­schte User­ex­pe­ri­ance oder zukün­ftige Pla­nung gewichtet wer­den. Eine zu schnelle Entschei­dung z.B. nur nach dem Koste­naspekt für eine der erwäh­n­ten App-Tech­nolo­gien kann zu hohen (Folge-)Kosten und auch neg­a­tivem Kun­den­feed­back führen. In eini­gen Fällen ist ein Mehrstu­figes Vorge­hen über einen Pro­to­typen mit abschließen­dem Usertest, das beste Vorge­hen. Anschließend kann die App mit den gewonnenen Erken­nt­nis­sen auf der richti­gen tech­nis­chen Basis imple­men­tiert wer­den.