PhoneGap ist ein Open Source Framework für Hybrid-Anwendungen der US-amerikanischen Firma Nitobi Inc. Es wurde im August 2008 im Rahmen des iPhoneDevCamp entwickelt und vorgestellt. Seit dem 8. Juni 2010 ist Version 0.9.1 verfügbar. PhoneGap unterstützt eine Vielzahl von Plattformen.
Das Framework entstand während des zweitägigen Workshops im August 2008, um Webentwicklern Zugriff auf Gerätefunktionen zu gewähren, die dem iPhone-Browser eigentlich nicht zu Verfügung stehen. Schon im Oktober folgte die Unterstützung für Android und BlackBerry. Im Februar 2009 wurde die erste stabile Version 0.6.0 veröffentlicht, die zwei Monate später den Web 2.0 Expo Launchpad Wettbewerb gewann. Es folgte Version 0.7.2 mit der die Funktionalität für Android dem iPhone-API gleichwertig wurde. Danach wurde Unterstützung für Windows Mobile und Nokia WRT integriert. Im Oktober wurde PhoneGap 0.8.0 von Apple ausdrücklich zur Erstellung von Anwendungen im Apple AppStore zugelassen und im November von Infoworld als „Top Emerging Enterprise Technology“ ausgezeichnet. Im gleichen Monat wurde PhoneGap von Sony Ericsson in sein WebSDK integriert. Die Unterstützung von Palm webOS folgte im Dezember. Im Juli 2010 adaptierte die Symbian Foundation PhoneGap in ihrem Web Extensions Package von Symbian^3.
PhoneGap besteht aus mehreren Teilprojekten. Für jede Plattform gibt es ein Unterprojekt in dem der native Hybrid-Container oder Skripte, um diesen zu erstellen, bereitgestellt werden.
Jeder Hybrid-Container enthält einen Ordner www in dem die Web-Anwendung platziert wird. Um darin native Gerätefunktionen nutzen zu können, muss die Datei phonegap.js in die Web-Anwendung eingebunden werden. Die JavaScript-Funktionen nutzen Callback-Funktionen (onSuccess, onError), um die Ergebnisse der Aufrufe einfach verarbeiten zu können.
Der PhoneGap-Hybrid-Container ist für viele Plattformen verfügbar, nutzt dabei aber sehr unterschiedliche Methoden, um nativen Code bei JavaScript-Aufrufen ausführen zu können (Johnson, 2010)
- Apple iOS: JavaScript setzt einen Wert in
window.location
der vom nativen Code ausgelesen und ausgewertet wird. - Google Android: Native Objekte und Funktionen können über
WebView.addJavascriptInterface
direkt als JavaScript-Funktionen verfügbar gemacht werden. - RIM BlackBerry:
document.cookie
ist die einzige Möglichkeit um zwischen nativem Code und JavaScript-Code zu kommunizieren. - Palm webOS: Der native Code von Palm webOS ist JavaScript, hier kann direkt zwischen der Web-Anwendung und Plattformcode kommuniziert werden.
Über die Implementierungen von Windows Mobile und Symbian sind keine Details bekannt. Aufgrund dieser verschiedenen Arten der Implementierung sind die nativen Funktionen nur in sehr unterschiedlichem Umfang nutzbar. Sehr gut ist die Unterstützung bei iOS, Android, BlackBerry, Symbian und Palm webOS.
Die Dokumentation für PhoneGap ist recht ausführlich. Allerdings ist sie über viele verschiedene Webseiten (Wiki, Blog, Forum) verteilt. Gerade im Wiki finden sich viele veraltete Beispiele oder Anleitungen für zukünftige Versionen von PhoneGap, die noch gar nicht veröffentlicht wurden. Ist die Erstellung der Unterprojekte jedoch dank der guten Tutorials geschafft, ist die Nutzung von PhoneGap mit der Referenz der Funktionen ausreichend dokumentiert.
Der Support für PhoneGap findet hauptsächlich in zwei über Google Groups bereitgestellten Foren statt. Eines richtet sich an die Nutzer von PhoneGap. Hier sind über 3000 Entwickler angemeldet und es herrscht reger Austausch. Das zweite Forum richtet sich eher an die Entwickler von PhoneGap selbst. Die Mitarbeiter von Nitobi und Entwickler von PhoneGap sind sowohl per E-Mail als auch über den Kurznachrichtendienst Twitter ansprechbar und helfen bei Fragen zu PhoneGap.
Nitobi arbeitet zurzeit vor allem an der Stabilisierung des Ansatzes. Der bisher organisch gewachsene Quellcode wird aufgeräumt und sich wiederholende Funktionalitäten in eigene Klassen ausgelagert. Die Dokumentation und das Wiki werden grundlegend überarbeitet und verbessert.
Beurteilung
PhoneGap kann Web-Anwendungen um die bisher fehlenden Gerätefunktionen erweitern und so den Abstand zu nativen Anwendungen verringern. Die Anwendung wird durch die lokale Speicherung schneller und Animationen flüssiger. Zudem ist die Anwendung als normale Anwendung auf dem Gerät zu installieren und mit einem Icon ausgestattet. Größter Kritikpunkt an PhoneGap ist sicher die schlechte und unübersichtliche Dokumentation. Die verschiedenen Herangehensweisen je nach Plattform erschweren die Einarbeitung und trüben den Gesamteindruck ein wenig.