„Native, HTML5 oder Hybrid: Informationen zu den Optionen für die Entwicklung mobiler Anwendungen“
Bildschirme sind klein, Apps sind groß und das Leben, wie wir es kennen, ist wieder auf dem Kopf. In einer Welt, die zunehmend sozial und offen ist, spielen mobile Apps eine entscheidende Rolle und haben den Fokus von den Inhalten im Web auf die Apps auf unserem mobilen Gerät verlagert. Mobile Apps sind keine Option mehr, sie sind ein Muss. Sie benötigen eine mobile App, aber wo fangen Sie an? In Ihrer mobilen Strategie spielen viele Faktoren eine Rolle, z. B. die Entwicklungsfähigkeiten Ihres Teams, die erforderliche Gerätefunktionalität, die Bedeutung von Sicherheit, Offline-Fähigkeit, Interoperabilität usw., die berücksichtigt werden müssen. Am Ende ist es nicht nur eine Frage, was Ihre App tun wird, sondern wie Sie es dort bekommen.
Wie Goldlöckchen müssen Sie möglicherweise ein Paar Betten versuchen, die zu weich oder zu hart sind, bevor Sie das eine finden, das gerade richtig ist. Und manchmal gibt es einfach keine perfekte Wahl. Jedes Entwicklungsszenario hat seine Vor- und Nachteile, und diese können inline oder uneins mit Ihren Mitteln sein. Im Gegensatz zu Goldlöckchen gibt es keine Bären, mit denen wir zu kämpfen haben, und es ist unsere Absicht, dass dieser Artikel Sie davon abhält, Ihre Lippen auf heißem Haferbrei zu verbrennen (na ja, bildlich).
Dieser Artikel befasst sich zwar allgemein mit der Entwicklung von mobilen Apps, richtet sich jedoch speziell an Entwickler, die mobile Anwendungen erstellen möchten, die mit Salesforce.com, Force.com oder Database.com interagieren. Derzeit unterstützt das Salesforce Mobile SDK das Erstellen von drei Arten von Apps:
Native Apps sind spezifisch für eine bestimmte mobile Plattform (iOS oder Android) und verwenden die Entwicklungstools und die Sprache, die die jeweilige Plattform unterstützt (z. B. Xcode und Objective-C mit iOS, Eclipse und Java mit Android). Native Apps sehen aus und bieten die beste Leistung.
HTML5-Apps verwenden Standard-Webtechnologien – in der Regel HTML5, JavaScript und CSS. Dieser Ansatz zum Einmaligen Schreiben, der überall ausgeführt werden kann, schafft plattformübergreifende mobile Anwendungen, die auf mehreren Geräten funktionieren. Entwickler können zwar hochentwickelte Apps mit HTML5 und JavaScript alleine erstellen, doch zum Zeitpunkt des Schreibens gibt es einige wichtige Einschränkungen, insbesondere das Sitzungsmanagement, den sicheren Offline-Speicher und den Zugriff auf native Gerätefunktionen (Kamera, Kalender, Geolokalisierung usw.).
Hybrid-Apps ermöglichen das Einbetten von HTML5-Apps in einen dünnen nativen Container, wobei die besten (und schlechtesten) Elemente von nativen und HTML5-Apps kombiniert werden.
Native mobile Anwendungen
Kurz gesagt, native Apps bieten die beste Benutzerfreundlichkeit, die besten Funktionen und das beste mobile Erlebnis. Es gibt einige Dinge, die Sie nur mit nativen Apps erhalten:
Multi-Touch – Doppeltippen, Pinch-Spread und andere Verbindungs-UI-Gesten
Schnelle Grafik-API – Die native Plattform bietet Ihnen die schnellsten Grafiken, was bei einem statischen Bildschirm mit nur wenigen Elementen oder bei sehr vielen Daten eine große Sache ist eine schnelle Aktualisierung.
Flüssige Animation – im Zusammenhang mit der schnellen Grafik-API ist die Fähigkeit, flüssige Animation zu haben. Dies ist besonders wichtig bei Spielen, hoch interaktiven Berichten oder hochintensiven Algorithmen zur Umwandlung von Fotos und Tönen.
Integrierte Komponenten – Die Kamera, das Adressbuch, die Geolokalisierung und andere native Funktionen des Geräts können nahtlos in mobile Apps integriert werden. Eine weitere wichtige integrierte Komponente ist verschlüsselter Speicher, aber dazu später mehr.
Benutzerfreundlichkeit – Die native Plattform ist das, was die Leute gewohnt sind. Wenn Sie also diese Vertrautheit mit allen nativen Funktionen, die sie erwarten, hinzufügen, haben Sie eine App, die einfach einfacher zu benutzen ist.
Dokumentation – Es gibt über 2500 Bücher allein für die iOS- und Android-Entwicklung, mit vielen weiteren Artikeln, Blog-Posts und detaillierten technischen Themen auf Sites wie StackOverflow.
Native Apps werden normalerweise mit einer integrierten Entwicklungsumgebung (IDE) entwickelt. IDEs bieten Tools zum Erstellen von Debugging, Projektmanagement, Versionskontrolle und anderen Tools, die professionelle Entwickler benötigen. Während iOS- und Android-Apps unter Verwendung verschiedener IDEs und Sprachen entwickelt werden, gibt es in den Entwicklungsumgebungen viel Parität, und es gibt nicht viel Grund, sich mit den Unterschieden zu befassen. Einfach gesagt, Sie verwenden die vom Gerät benötigten Werkzeuge.
Sie benötigen diese Tools, weil native Apps schwieriger zu entwickeln sind. Ebenso ist das erforderliche Erfahrungsniveau höher als bei anderen Entwicklungsszenarien. Sie schneiden und fügen nicht nur Objective-C ein und erwarten, dass es funktioniert. In der Tat ist das technologische Know-how Ihres Entwicklungsteams eine wichtige Überlegung. Wenn Sie ein professioneller Entwickler sind, müssen Sie nicht auf bewährte APIs und Frameworks, schmerzfreie Spezialeffekte durch etablierte Komponenten oder die Vorteile, dass Sie Ihren Code an einem Ort haben, verkauft werden. Let’s face it, heute ist ein erfahrener nativer iOS- oder Android-Entwickler ein Rockstar und kann Rockstar-Ansprüche stellen.
Während wir native Apps aus der Entwicklungsperspektive kennen gelernt haben, gibt es auch die wichtigere Perspektive: den Endnutzer. Wenn Sie nach einer App suchen, finden Sie sie im Geschäft. Wenn Sie die App starten, wird sie sofort gestartet. Wenn Sie die App verwenden, erhalten Sie eine schnelle Leistung und ein konsistentes Plattform-Look-and-Feel. Wenn Ihre App ein Update benötigt, wird dies Ihnen mitgeteilt. Native Apps geben dir alles, was du von dem Unternehmen erwartest, das dein Gerät gebaut hat, als ob es nur dazu gedacht war.
HTML5 Mobile Anwendungen
Wenn Sie mit der Entwicklung mobiler Apps noch nicht vertraut sind, kommen Sie zu spät zur Party. Für mobile webbasierte Apps feiern wir jedoch immer noch wie 1999! Sicher, Browser sind in den letzten paar Jahren besser geworden, aber die zugrunde liegende Technologie ist nicht viel anders als wenn Sie den Y2K-Bug befürchteten.
Aber das kann eine gute Sache sein. Eine HTML5-App für Mobilgeräte ist im Grunde eine Webseite oder eine Reihe von Webseiten, die auf einem winzigen Bildschirm funktionieren. Daher sind HTML5-Apps geräteunabhängig und können mit jedem modernen mobilen Browser geöffnet werden. Und weil Ihre Inhalte im Web verfügbar sind, können sie durchsucht werden, was je nach App ein großer Vorteil sein kann (z. B. beim Einkaufen).
Wenn Sie Erfahrung in der Entwicklung von Web-Apps haben, werden Sie HTML5 wie eine Ente zu Wasser nehmen. Wenn Sie neu in der Web-Entwicklung sind, ist der technologische Balken niedriger; Es ist einfacher, hier anzufangen als bei der nativen oder hybriden Entwicklung. Leider scheint jedes mobile Gerät eine eigene Vorstellung davon zu haben, was eine verwendbare Bildschirmgröße und -auflösung ausmacht, und daher gibt es eine zusätzliche Last des Testens auf verschiedenen Geräten. Die Browser-Inkompatibilität ist auf Android-Geräten besonders verbreitet, daher sollte der Browser aufpassen.
Ein wichtiger Teil der „Write-once-run-anywhere“ -HTML5-Methode besteht darin, dass Verteilung und Support wesentlich einfacher ist als bei nativen Apps. Müssen Sie einen Fehler beheben oder Funktionen hinzufügen? Fertig und für alle Benutzer bereitgestellt. Für eine native App gibt es längere Entwicklungs- und Testzyklen, nach denen sich der Verbraucher normalerweise in einem Geschäft anmelden und eine neue Version herunterladen muss, um den neuesten Fix zu erhalten.
Im letzten Jahr hat sich HTML5 als sehr beliebte Methode zum Erstellen von mobilen Anwendungen herauskristallisiert. Mehrere UI-Frameworks sind verfügbar, um einige der komplexesten Probleme zu lösen, die kein Entwickler neu erfinden möchte. iScroll macht einen phänomenalen Job, indem er das dynamische Scrolling emuliert. JQuery Mobile und Sencha Touch bieten elegante mobile Komponenten mit hunderten, wenn nicht tausenden von Plugins, die alles von Karussells bis hin zu super durchdachten Steuerungen bieten.
Wenn also HTML5-Apps leichter zu entwickeln, leichter zu unterstützen sind und die größtmögliche Anzahl von Geräten erreichen können, wo verlieren diese Apps an Bedeutung? Wir haben bereits die Hauptvorteile der nativen Entwicklung überprüft. Wir möchten nur wiederholen, dass Sie nicht auf native Funktionen auf dem Gerät zugreifen können. Benutzer werden nicht die Vertrautheit mit dem nativen Look and Feel haben oder in der Lage sein, zusammengesetzte Gesten zu verwenden, mit denen sie vertraut sind. Aber an allen Fronten werden Fortschritte gemacht, und immer mehr Funktionen werden von Browsern immer unterstützt.
Der neueste Batch von Browsern unterstützt hardwarebeschleunigte CSS3-Animationseigenschaften und bietet weiche Bewegungen für verschiebbare Panels sowie Übergänge zwischen Bildschirmen, aber selbst diese können nicht mit der Leistung und Flexibilität von nativen Apps mithalten. Heute ist es einfach nicht möglich, Multi-Touch-Eingabeereignisse zu erfassen (festzustellen, wenn mehr als ein Finger auf dem Bildschirm ist) oder Pfadstil-Eleganz mit Spinout-Schaltflächen und Fotos zu erstellen, die schweben und dann an die richtige Stelle fallen.
Vor allem für mobile Unternehmen gibt es jedoch erhebliche Einschränkungen hinsichtlich Offline-Speicherung und -Sicherheit. Sie können zwar Offline-Funktionen implementieren, indem Sie Dateien auf dem Gerät zwischenspeichern, aber das ist keine gute Lösung. Obwohl die zugrunde liegende Datenbank möglicherweise verschlüsselt ist, ist sie nicht so gut segmentiert wie eine native Keychain-Verschlüsselung, die jede App mit einem Entwicklerzertifikat schützt. Wenn eine Webanwendung mit Authentifizierung vom Desktop aus gestartet wird, müssen Benutzer ihre Anmeldeinformationen jedes Mal eingeben, wenn die App an den Hintergrund gesendet wird. Dies ist eine lausige Erfahrung für den Benutzer. Im Allgemeinen kann das Implementieren von sogar trivialen Sicherheitsmaßnahmen auf einer nativen Plattform komplexe Aufgaben für einen mobilen Webentwickler sein. Wenn daher Sicherheit von größter Bedeutung ist, kann dies der entscheidende Faktor sein, auf welcher Mobiltechnologie Sie sich entscheiden.
Hybrid Mobile Anwendungen
Hybrid-Entwicklung kombiniert die besten (oder schlechtesten) der nativen und HTML5-Welten. Wir definieren hybrid als eine Webanwendung, die hauptsächlich aus HTML5 und JavaScript besteht und dann in einen dünnen nativen Container eingebettet wird, der Zugriff auf native Plattformfunktionen bietet. PhoneGap ist ein Beispiel für den beliebtesten Container zum Erstellen hybrider mobiler Apps.
In den meisten Fällen bieten Hybrid-Apps das Beste aus beiden Welten. Bestehende Webentwickler, die bei der Optimierung von JavaScript zu Gurus geworden sind, CSS für die Erstellung schöner Layouts einsetzen und HTML-Code schreiben, der auf jeder Plattform funktioniert, können jetzt anspruchsvolle mobile Anwendungen erstellen, die nicht auf die nativen Fähigkeiten verzichten. Unter bestimmten Umständen können native Entwickler Plugins für Aufgaben wie Bildverarbeitung schreiben, aber in solchen Fällen liegt der Teufel im Detail.
Unter iOS ist der eingebettete Webbrowser oder das UIWebView nicht mit dem Safari-Browser identisch. Während die Unterschiede gering sind, können sie Probleme beim Debuggen verursachen. Aus diesem Grund lohnt es sich, in beliebte Frameworks zu investieren, die alle Einschränkungen berücksichtigt haben.
Sie wissen, dass native Apps auf dem Gerät installiert sind, während sich HTML5-Apps auf einem Webserver befinden. Sie werden sich also fragen, ob hybride Apps ihre Dateien auf dem Gerät oder auf einem Server speichern. Ja. Tatsächlich gibt es zwei Möglichkeiten, eine Hybrid-App zu implementieren.
Lokal – Sie können HTML- und JavaScript-Code in der Binärdatei der mobilen Anwendung verpacken, ähnlich wie bei einer nativen Anwendung. In diesem Szenario verwenden Sie REST-APIs, um Daten zwischen dem Gerät und der Cloud hin und her zu verschieben.
Server – Alternativ können Sie die vollständige Webanwendung vom Server aus implementieren (mit optionalem Caching für bessere Leistung), indem Sie einfach den Container als Thin Shell über die UIWebview verwenden.
Netflix hat eine wirklich coole App, die dieselbe Code-Basis verwendet, um die Benutzeroberfläche auf allen Geräten auszuführen: Tablets, Telefone, Smart TVs, DVD-Player, Kühlschränke und Autos. Während die meisten Menschen keine Ahnung haben und sich nicht darum kümmern, wie die App implementiert wird, sind Sie daran interessiert zu wissen, dass sie die Schnittstelle im laufenden Betrieb ändern oder A / B-Tests durchführen können, um die optimalen Benutzerinteraktionen zu ermitteln. Der Kern der Decodierung und das Streaming von Videos werden für optimale Leistung an die native Ebene delegiert. Es handelt sich also um eine schnelle, scheinbar native App, die wirklich das Beste aus beiden Welten bietet.
Fazit
Mobile Entwicklung ist ein sich ständig bewegendes Ziel. Alle sechs Monate gibt es ein neues mobiles Betriebssystem mit einzigartigen Funktionen, auf die nur mit nativen APIs zugegriffen werden kann. Die Container bringen diese bald darauf zu hybriden Apps, wobei das Web alle paar Jahre enorme Sprünge macht. Basierend auf der aktuellen Technologie wird eines der in diesem Artikel beschriebenen Szenarien Ihren Anforderungen gerecht.