Mobile Anwendungen werden immer populärer. Der richtige Hype hat mit der ersten Generation des iPhone angefangen und die Revolution ging mit dem iPad weiter. Und ja, beide Devices sind von Apple, ob man es Mag oder nicht, Steve Jobs ist der wahre Trendsetter. 4 Jahren sind seit dem ersten iPhone vergangen und langsam kommt die Konkurrenz auf den Markt.
Und nicht erst seit dem Kauf von Motorola durch Google stellt das Android OS im Moment die einzige und wohl auch grösste Bedrohung für die iOS-Geräte dar. In den letzten zwei Jahren hat sich Android unglaublich entwickelt. Natürlich darf man auch BlackBerry und auch Microsoft mit seinem Windows 7 nicht ausser Acht lassen.
Damit haben wir als Entwickler es mit mindestens vier Akteuren zu tun und jeder hat sein eigenes Betriebssystem. Wollten wir eine Anwendung entwickeln, die auf allen vier Betriebssystemen läuft, müssen wir die verschiedenen Programmiersprachen, Entwicklungsumgebungen, SDK und Design-Konzepte verwenden. Zusätzlich natürlich noch unterschiedliche Hardware, Bildschirmgrössen etc. Das hört sich nach einem aufwendigen und teuren Softwareentwicklungsprozess an.
Interessanter wäre eine Lösung für diese fragmentierte Ausgangslage. Ein Framework, mit welchem man mit einer Entwicklung für alle Plattformen eine Lösung bereitstellen könnte.
An der diesjährigen Jazoon Konferenz, wurde auch versucht diese Frage zu beantworten. Fünf Keynotes präsentierten zum Thema „Mobile Development“ und nur eine davon fokussierte auf native Anwendungen (iOS), der Rest auf sogenannte Hybrid-Anwendungen.
Bei emineo haben wir uns unter anderem auf die Entwicklung von Hybrid-Anwendungen konzentriert und nachstehend sind die wichtigsten Erkenntnisse und Lösungsansätze aufgeführt.
|
Native |
Web |
| Umsetzung mit dem nativen SDK | Eine Anwendung gültig für alle Geräte |
| Voller Zugriff auf gerätespezifische Funktionen | Beschränkter Zugriff auf Gerätefunktionen |
| Explizite Performance-Tuning möglich | Beschränkte Offline-Fähigkeiten |
| Hoher Know-how Aufbau und Erfahrungsaufbau | Kann in beliebiger Sprache geschrieben sein |
| Apps verteilen durch herstellerspezifische App Store ebenso wie die Updates | App auf einem Remote-Server und die Updates benötigen keine Aktualisierung auf Endgeräte |
Zusammenfassend kann sicher gesagt werden, dass native Anwendungen leistungsfähiger sind. Aber das Deployment und der Update-Prozess sind ein Alptraum. Es besteht keine gemeinsame Programmiersprache und wir müssen mit verschiedenen SDKs (Objective C mit Xcode als IDE für iOS oder Java mit Eclipse für Android) arbeiten. Andererseits können Web-Anwendungen einfach bereitgestellt werden und erlauben aber nur einen beschränkten Zugriff auf die Gerätefunktionen. Und doch haben beide ihre Vor-/ und Nachteile.
Können die besten Eigenschaften aus den zwei Welten vereint werden?
Ein möglichst gradliniges Konzept kann sein:
- GUI basiert auf HTML5
- Kleines Framework das ein Browser-Widget anzeigt
- Framework erweitert Standard-Funktionen des Browsers
- Zugriff auf gerätspezifischen Funktionen
- Direkter Zugriff auf Hardware (Kamera, Sensoren, …)
- Open-Source-Frameworks existieren (PhoneGap, QuickConnect, …)
- Anwendung wird gestartet und verteilt wie eine native App
- HTML kann für mobile Website wieder verwendet werden
- HTML dynamisch geladen und gecacht auf dem Gerät
- Ein Code für alle Geräte (iOS, Android, Blackberry)
Die meisten Lösungen basieren auf PhoneGap (http://www.phonegap.com) und benutzen unterschiedliche Frameworks für die GUI-Logik. In Bezug auf die GUI-Frameworks besteht im Moment ein grosse Auswahl. Je nachdem, in welcher Sprache man gerne arbeitet. Kennt man sich gut in JavaScript aus, kann man jQuery, jQTouch, jQueryMobile oder Sencha Touch verwenden; als Fan von Java verwenden sie am Besten das Google Web Toolkit – GWTMobile. Zentral ist, dass all diese Framework das WebKit ein Open Source Web-Browser-Engine benutzen. Dies gilt auch für alle modernen Browser auf den mobilen Geräten. Das bedeutet in der Theorie, dass sie mit der Entwicklung eines Codes eine universelle Anwendung erhalten. Die aufgeführten Frameworks berücksichtigen die verschiedenen GUI-Konzepte der unterschiedlichen Betriebssysteme.
Was ist das Ergebniss einer solchen Entwicklung? Kann damit eine Anwendung entwickelt werden, die so gut daherkommt wie eine native Anwendung? Ein gutes Beispiel ist die Anwendung „NFB Films“ http://www.phonegap.com/app/nfb-films die mit PhoneGap umgesetzt wurde und sowohl für Android und iOS zur Verfügung steht.
Natürlich müssen verschiedene Restriktionen und Eigenheiten berücksichtigt werden. Das eingebettete Browser-Widget ist teilweise eingeschränkt (keine Unterstützung für HTML5 Cache Manifest auf iOS). Ausserdem muss immer auf dem Zielgerät getestet werden, da sich der Code in der Simulation anders verhält als auf dem Gerät. Komplexe Animationen und grosse Bildschirme flimmern und können nur nativ erstklassig umgesetzt werden.
Das Hybrid-Konzept befindet sich voll in der Entwicklung und es stehen bereits interessante Resultate zur Verfügung. Damit sich das Konzept aber durchsetzt ist noch einiges an Arbeit notwendig.
Was sind ihre Erfahrungen in der Entwicklung von Hybrid-Anwendungen oder wohin denken sie dass die Reise geht?
Related posts: