Inhaltsverzeichnis
Transcription
Inhaltsverzeichnis
Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien Hochschule: Standort: Studiengang: Veranstaltung: Betreuer: Typ: Themengebiet: Autor(en): Studienzeitmodell: Semesterbezeichnung: Studiensemester: Bearbeitungsstatus: Prüfungstermin: Abgabetermin: Fallstudienarbeit Hochschule für Oekonomie & Management Essen Bachelor Wirtschaftsinformatik Fallstudie / Wissenschaftliches Arbeiten Dipl-Inf._(FH)_Christian_Schäfer Fallstudienarbeit HTML 5 Marco Daube, Michael Fuhrmann Abendstudium WS10 4 begutachtet Inhaltsverzeichnis • 1 Einleitung ♦ 1.1 Vorwort ♦ 1.2 App-Kategorien ◊ 1.2.1 Native Apps ◊ 1.2.2 Java Apps ◊ 1.2.3 Web Apps ♦ 1.3 Plattformen ◊ 1.3.1 Apple iOS ◊ 1.3.2 Google Android ◊ 1.3.3 BlackBerry ◊ 1.3.4 Symbian-Plattform ◊ 1.3.5 Samsung Bada ◊ 1.3.6 webOS • 2 Hauptteil ♦ 2.1 HTML, XHTML und HTML5 ♦ 2.2 JavaScript-Frameworks für mobile Endgeräte ◊ 2.2.1 PhoneGap ◊ 2.2.2 Sencha Touch ◊ 2.2.3 jQuery Mobile ◊ 2.2.4 Sonstige Web-Frameworks ♦ 2.3 Vergleich mit nativen Apps ◊ 2.3.1 User Interface Elemente ◊ 2.3.2 Sicherheit ⋅ 2.3.2.1 Sicherheitsrisken ⋅ 2.3.2.2 Verschlüsselung • 3 Fazit • 4 Abkürzungsverzeichnis Inhaltsverzeichnis 1 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien • 5 Fußnoten • 6 Quellenverzeichnis 1 Einleitung 1.1 Vorwort Diese Seminararbeit zum Thema "Plattformunabhängie Smartphone-Entwicklung auf Basis von Web-Technologien" ist im Rahmen des Wirtschaftsinformatik-Studiums "Bachelor of Science" an der Hochschule für Ökonomie & Management am Standort Duisburg im vierten Semester entstanden. Seit dem die Firma Apple Computer im Jahre 2007 das iPhone auf den Markt brachte, hat sich das durch den deutlichen Zugewinn der technischen Möglichkeiten das Verhalten vieler Internetbenutzer völlig verändert. Für die notwendige Netzinfrastruktur sorgte Apple beispielsweise in Deutschland durch den längerfristig vereinbarten Exklusivvertrag mit T-Mobile. Dadurch ebnete sich der Weg für günstige und somit attraktive Datentarife, was durch die steigende Nutzung einen deutlichen Ausbau der notwendigen Netze sorgte. In anderen Ländern ging Apple ähnlich vor, wie z.B. in den USA mit dem Mobilfunkanbieter AT&T[1]. Ende 2010 wurde bereits in Deutschland der Exklusivvertrag mit T-Mobile aufgelöst, sodass seitdem auch das iPhone von vielen anderen Mobilfunkanbietern subventioniert erworben werden kann. Durch die Belebung des Marktes werden mit sehr hoher Wahrscheinlichkeit die Netze in den nächsten Jahren auch weiterhin stark Entwickeln. Schnell zog der Erfolg des iPhone die ersten Anbieter von Online-Inhalten in die mobile Welt. Internetdienste, die Jahrelang nur am PC verwendet werden konnten, wurden seit dem immer häufiger auf dem Mobiltelefon verwendet. Die Erfolgsgeschichte des iPhones als neue mobile Gerätegeneration, zog in kürzester Zeit viele weitere Hersteller wie Google, Nokia, RIM (BlackBerry) und Samsung in den mit auf den fahrenden Zug, sodass der Kunde im Jahre 2010 bereits eine sehr große Auswahl hat. Eines der Erfolgsfaktoren des iPhones waren dabei zweifelsfrei nicht nur die Möglichkeit überall im Internet zu surfen, sondern viele Dienste mittels spezieller Apps zu bequem verwenden zu können. Ein (Luxus)-Problem dieser Apps, ergibt sich jedoch leider in Bindung an den jeweiligen Smartphone-Hersteller, da jede dieser Plattformen anders programmiert werden muss. In dieser Seminararbeit wird auf einen möglichen Lösungsansatz eingegangen um diese Apps so zu Entwickeln, dass Sie auf mehr als nur einem Gerät wie dem iPhone laufen. 1.2 App-Kategorien Auf dem Markt existieren diverse Arten von Apps. Eine App ist die Kurzform von Application, wobei damit ein Anwendungsprogramm gemeint ist. Durch Apple hat sich die Bezeichnung App für Anwendungen auf dem Smartphonemarkt durchgesetzt. Dabei werden unterschiedliche Technologien zur Steuerung der Smartphones genutzt. In den nächsten drei Abschnitten werden auf die großen Architekturen, native Apps, Java Apps und Web Apps, eingegangen. Diese sind auf allen Smartphones je nach Kompilation und Portierung ausführbar. 1 Einleitung 2 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien 1.2.1 Native Apps Die ersten mobilen Telefone erschienen mit kleinen vorinstallierten Programmen, wie Taschenrechner, Kalender usw. Diese Programme wurden explizit für das hauseigene Betriebssystem des Herstellers geschrieben, waren fest installiert und daher nicht löschbar. Später erschien die "Java Micro Edition" (JavaME) von Sun für mobile Endgeräte und die Gesellschaft bekam die Möglichkeit nachträglich Anwendungen oder Spiele zu installieren und bei Bedarf auch wieder zu löschen. Die Besonderheit daran war, dass es theoretisch die Möglichkeit gab, plattformunabhängige Anwendungen zu erstellen. Kurz danach kamen die ersten Endgeräte heraus, die auch die Installation nativer Software ermöglichten. Problematisch war es jedoch geeignete Software zu finden und auch zu installieren, da man das Gerät zuerst mit dem PC verbinden musste um die Anwendung auf das Gerät zu kopieren. Dies änderte sich mit dem iPhone von Apple. Dieses beinhaltete eine fest installierte Anwendung mit dem Namen "App Store" die es dem Anwender ermöglichte, bequem diverse Apps per Fingergeste zu kaufen, herunterzuladen und zu installieren. Die Apps kosten je nach Funktionsumfang zwischen ein paar Cent und ca. 90 Euro, wie z.B. Navigationssoftware. Nach apfelnews.eu existieren aktuell (30.08.2010) mehr als 250.000 Apps für das iPhone.[2] Durch diesen Erfolg von Apps und dem "App Store" zogen andere Hersteller wie Google oder Nokia nach. Diese fahren jedoch teilweise ein anderes Geschäftsmodell. [3] Dieses Bild zeigt das Zusammenspiel von nativen Apps (in diesem Fall C++) im Zusammenhang mit verschiedenen Plattformen. 1.2.2 Java Apps Die Programmiersprache Java ist eine betriebssystem- und plattformunabhängige Programmiersprache ("Write Once, ? Run Anywhere"[4]). Unter anderem ist dies auch der Grund, warum sie auf dem mobilen Sektor so populär wurde. 1990 wurde mit der Entwicklung von Java durch James Gosling und Bill Joy begonnen und erschien 1995. Java 1.2.1 Native Apps 3 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien Programme laufen in einer Laufzeitumgebung die von der "Java Virtual Machine" zur Verfügung gestellt wird. 1998 erschien das "Java Development Kit" (JDK) und aus Java wurde Java2. Fortschreitende JDKs verbesserten die Performance, Darstellungsmöglichkeiten und die gesamte mitgelieferte Bibliothek. Seit dem Versionswechsel auf JDK 5 (JDK 1.5) können keine Java Anwendungen die mit dem Java 1.5 Compiler kompiliert wurden in einer JVM 1.4 ausgeführt werden. In der weiteren Entwicklung wurden viele Erweiterungen eingespielt, so ist es möglich mit der umfassenden mitgelieferten Bibliothek professionelle Anwendungen im Bereich Internet, Datenbanken, verteilte Systeme und Netzwerkzugriff zu entwickeln. Die JVM kann kostenfrei von dem Internetauftritt des Herstellers heruntergeladen werden. Bei der Entscheidung, warum Java gewählt werden sollte, verwiesen Deck und Neuendorf unter anderem auf folgende Argumente[5]: • Betriebssystem- und plattformunabhängig • Überschaubarer homogener Sprachumfang und eine klare Syntax • Objektorientiertes Sprachdesign • Speicherverwaltung wird durch die JVM durchgeführt. Das bedeutet der Programmierer muss sich nicht um die Allokation / Deallokation von Speicher kümmern. [6] Dieses Bild zeigt das Zusammenspiel von Java im Zusammenhang mit verschiedenen Plattformen. 1.2.3 Web Apps Aktuell könnte ein Umbruch stattfinden, indem die derzeitig beliebten nativen Apps per Webanwendungen über das Internet aufgerufen werden. Eine lokale Installation dieser wäre auch denkbar. Mit den Entwicklungen durch den britischen Informatiker Timothy Berners-Lee, wurden die grundlegenden Bausteine für die Erstellung von Webanwendungen gelegt (6.8.1991). Durch die Beschreibungssprache HTML, der einfachen Einrichtung eigener Webserver und der Bekanntmachung in der Öffentlichkeit wurde das Internet beliebter. Gegen Ende der 90er Jahre entstand nach einiger Zeit ein richtiger Internetboom. Als Konsequenz daraus entstanden neue Leitungen, E-Commerce und Online-Banking. Somit wurde das Internet auch von Großunternehmen entdeckt und entstand eine neue Wirtschaftsbranche, die "New Economy" oder auch "Net Economy".[7] 1.2.2 Java Apps 4 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien Die ersten großen Internetdienstleister entstanden zwischen 1993 und 1998, zu nennen wäre da beispielsweise Amazon, Google, EBay, PayPal und viele mehr, die heute jedoch kaum noch bekannt sind. Diese Unternehmen wurden auch "Dotcom-Unternehmen" genannt. Zu dieser Zeit waren Investoren an neuen Internetprojekten interessiert und investierten teilweise in Projekte, die keinen tragfähigen Businessplan vorlegen konnten. Sie erwarteten, dass sie das eingesetzte Kapital durch den Internet Boom vervielfältigen konnten. Da die meisten Investoren auf Grund des hohen Risikos, dass sie eingingen, ihr Kapital verloren, platzte die Dotcom-Blase. Aus der darauf folgenden Krise entstand ein Umdenken beim Bewerten neuer Konzepte. Diese wurden nun realistischer betrachtet. Diese Zeit wurde von Investoren und der interessierten Öffentlichkeit beobachtet. Es entstanden einige neue Konzepte und Ideen und es war möglich erste Trends des Internets zu erkennen. Durch schnellere Internetanschlüsse bei den Verbrauchern, neuen Tools bei den Entwicklern und technisch besser ausgerüstete Server entstanden revolutionäre Dienste wie Flickr, YouTube, Facebook und MySpace. Da nun durch den technologischen Fortschritt und den innovativen Ideen das Internet revolutioniert wurde, wurde der Begriff "Web 2.0" gefunden. Dieses Bild zeigt das Zusammenspiel zwischen Webserver, Source Code und Clients bei Web Apps. 1.3 Plattformen Die drei großen Architekturen können auf verschiedene Plattformen ausgeführt werden. Je nach Plattform ist es mehr oder weniger schwierig die Apps zu portieren. Die einzelnen Unterschiede in der Historie und der Art der Entwicklung werden in den folgenden Abschnitten aufgeführt. OS Hersteller Q4 2010 Auslieferungen (mio.) Aufteilung (%) Q4 2009 Auslieferungen (mio.) Aufteilung (%) Wachstum Total 101.2 100.0% 53.7 100.0% 88.6% Google 33.3 32.9% 4.7 8.7% 615.1% Nokia 31.0 30.6% 23.9 44.4% 30.0% 1.2.3 Web Apps 5 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien Apple 16.2 16.0% 8.7 16.3% 85.9% RIM 14.6 14.4% 10.7 20.0% 36.0% Microsoft 3.1 3.1% 3.9 7.2% -20.3% Diverse 3.0 2.9% 1.8 3.4% 64.8% ist eine Statistik zu den Auslieferungen der aktuell bekanntesten Plattformen. Verglichen wurden dabei die Auslieferungen zwischen 2009 Quartal 4 und 2010 Quartal 4. Wie man sieht konnte Google Android deutlich zulegen und die anderen überholen. [8]Dies 1.3.1 Apple iOS Das iOS ist ein Betriebssystem für die mobilen Geräte von Apple. Im Kern basiert dieses auf Mac OS X. Das iOS wird derzeitig im iPhone, iPad und in der zweiten Generation des Apple TV eingesetzt. Das iOS wurde erstmalig am 9.1.2007 vorgestellt und hieß zu diesem Zeitpunkt noch iPhone OS. Dabei handelte es sich um eine Portierung des Mac OS X auf den im iPhone verwendeten ARM-Prozessor. Da Apple plante, dass dieses Betriebssystem auch in anderen Geräte verwendet werden soll, wurde es am 7.6.2010 in iOS umbenannt. Anwendungen für mobile Geräte mit iOS als Betriebssystem werden in der Programmiersprache Objective-C geschrieben. Diese basiert nach Sadun auf dem standardmäßigen C und wurde um einige objektorientierte Ansätze erweitert.[9] C ist eine prozedurale Programmiersprache, die Anfang der 70er Jahren von AT&T entwickelt wurde. Objective-C wurde Ende der 80er Jahren bekannt, als das Unternehmen NeXT das Betriebssystem NeXTStep unter der Führung von Steve Jobs programmierte. Die Entwicklung von OS X wurde durch NeXTStep inspiriert und wurde im Oktober 2007 veröffentlicht. Nach Sadun war das überarbeitete Objective-C in der Version 2.0 enthalten.[10] 1.3.2 Google Android Das Betriebssystem Android des Unternehmens Google wurde das erste mal am 5.11.2007 vorgestellt. 24android.com berichtet, dass während der Veröffentlichung von Android am 9.12.2008 47 Unternehmen im Konsortium mit dem Namen Open Handset Alliance als Mitglieder eingetragen waren.[11] In dieser Gruppe werden Ziele für die Schaffung von offenen Standards für mobile Geräte festgelegt. Android entwickelte sich zu einer umfassenden Softwareplattform für mobile Endgeräte. Derzeitig wird es in Smartphones, Tablets und Netbooks verwendet. Zudem ist es kostenlos und als Open-Source veröffentlicht worden. Anwendungen für mobile Geräte mit Android als Betriebssystem werden in der Programmiersprache Java geschrieben. Es werden dabei viele Pakete der Java Standard Edition (Java-SE) und Android spezifische Bibliotheken (Core Libraries) verwendet. Nach Kose läuft im Hintergrund eine Virtual Machine (VM) die registerbasiert aufgebaut ist, die normalen VMs arbeiten im Gegensatz zu dieser stackbasiert.[12] Dadurch, dass mobile Endgeräte hohen Einschränkungen im Bereich CPU, Akku und Speicher unterworfen sind, wurde diese optimierte Laufzeitumgebung erstellt. Speziell an der sogenannten Dalvik Virtual Machine ist, dass sie keinen Java-Bytecode ausführen kann, sondern ausschließlich einen eigenen Bytecode, mit der Dateiendung ?dex?, ausführt. Jedoch ist es möglich Java-Bytecode in dex-Bytecode zu konvertieren. 1.3 Plattformen 6 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien 1.3.3 BlackBerry Das BlackBerry OS ist ein kostenlos nutzbares proprietäres Betriebssystem für Smartphones. Es ist multitaskingfähig, stammt von dem Unternehmen Research in Motion und wird verwendet in Geräten der Marke BlackBerry. Ursprünglich wurde dieses zum Abholen mittels eines speziellen Push-Mail-Systems und Senden von Emails entwickelt.[13] Das OS wurde in C++ programmiert und bietet dem Entwickler mit einer Java-Umgebung (J2ME) Schnittstellen zur Erstellung eigener Anwendungen. Die Java-Umgebung bietet dabei zusätzliche Schnittstellen um auf bestimmte Dienste des Betriebssystems zuzugreifen. 1.3.4 Symbian-Plattform Die Symbian-Plattform (Symbian) ist ein Betriebssystem für mobile Endgeräte. Das System stammt von Nokia (Open-Source) und wird von der Symbian Foundation lizenziert. Symbian besitzt Multitasking, Multithreading und Speicherschutz.[14] Zudem können Programme in diversen Programmiersprachen ausgeführt und installiert werden. So werden z.B. C++, Java. Flash Lite, OPL und Python unterstützt. 1.3.5 Samsung Bada Bada ist ein Betriebssystem von Samsung Electronics und kommt zum Einsatz in Smartphones. Am 10.11.2009 wurde Bada, abgeleitet aus dem koreanischen Wort für Ozean, angekündigt. Im Mai 2010 erschien das erste Handy mit dem neuen Betriebssystem. Wie beim iPhone und Android gibt es einen App Store in dem viele Anwendungen und Tools nachträglich heruntergeladen und installiert werden können. Die Architektur besteht aus vier Schichten, der Kernel, das Device, die Services und das Framework. Auf letzterem setzen die erstellten Apps auf. Das zugehörige SDK wurde zum ersten Mal im Mai 2010 veröffentlicht.[15] 1.3.6 webOS Die Plattform webOS von HP Palm wurde das erste Mal am 8.01.2009 auf der Consumer Electronics Show in Las Vegas vorgestellt. Es ist der direkte Nachfolger des Palm-OS, welches durch fehlende Ansteuerung von UMTS und GPS nicht mit Betriebssystemen anderer Hersteller mithalten konnte. Angepasst wurde webOS für die Bedienung mittel Touchscreens und ist somit für Smartphones geeignet. Zudem ist es multitaskingfähig und basiert auf Linux. Der Name entstand aus der engen Verzahnung von WebServices und Anwendungen. 2 Hauptteil Im folgenden Hauptteil werden die technologischen Aspekte berücksichtigt, die zum Aufbau von WebApps verwendet werden müssen. Im ersten Abschnitt wird kurz die Entwicklung von HTML5 erläutert. Die folgenden Abschnitte beziehen sich auf JavaScript und die für das mobile Umfeld besonders relevanten Frameworks zur Realisierung dieser WebApps. 2 Hauptteil 7 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien 2.1 HTML, XHTML und HTML5 HTML5 entwickelte sich als Webstandard "beim W3C, genauer gesagt beim W3C Workshop on Web Applications and Compound Documents im Juni 2004."[16] Anders als bisher üblich begann die Entwicklung von HTML5 außerhalb des W3C, da dieses einige Ideen von den Browser-Herstellern Mozilla, Safari und Opera nicht standardisieren wollte. Diese Gründeten als Konsequenz die "Web Hypertext Applications Technology Working Group", welche im folgendem kurz mit WHATWG bezeichnet wird. Die Gründungsmitglieder der WHATWG stellten insgesamt drei Spezifikation zu Beginn auf die Agenda, die schnell in Form von Web Apps konsolidiert wurden. Die Zusammenarbeit war von Beginn an auf die Community ausgerichtet, welche sich über die Homepage der WHATWG[17] abstimmen konnte. Währenddessen versuchte die XHTML2 Working Group des W3C einen völlig neuen Web-Standard zu entwerfen, welcher im Gegensatz zu den Ansätzen der WHATWG weniger auf Abwärtskompatibilität zu älteren HTML Versionen erreichen sollte. Das Projekt wurde sehr schnell zu Grabe getragen, da viele Browserhersteller aufgrund der zu radikalen Änderungen keine Unterstützung angeboten haben. Anschließend kündigte Timothy Berners-Lee im Oktober 2006 die Gründung einer neuen HTML Working Group (im weiteren HTML WG genannt) an, bei der auch von Anfang an alle interessierten Browserhersteller auf breiter Basis einbezogen wurden. Auch die Mitglieder der WHATWG traten schon nach kurzer Zeit im Zuge einer Einladung der HTML WG bereitwillig bei. Der weitere Weg für die Entwicklung von HTML5 war von diesem Zeitpunkt an wieder frei.[18] Der aktuelle Working Draft vom Stand 20.01.2010 von HTML5 sieht zahlreiche Neuerungen vor, die auch für Mobile WebAppkikationen völlig neue Möglichkeiten eröffnen. Eine Finalisierung der ersten HTML5 Version ist für April 2011 erwartet. 2.2 JavaScript-Frameworks für mobile Endgeräte Zur Realisierung von Geschäftslogik, die für eine Applikation benötigt wird wurde in der Vergangenheit der meiste Teil der Verarbeitung auf dem Server abgewickelt. Da mit dieser Methodik für jede Aktion die Seite vollständig neu geladen werden muss, entsteht zwangsläufig ein erhebliches Datentransfervolumen, welches auch heute noch eine gewisse Zeit in Anspruch nimmt und je nach Mobilfunkvertrag entsprechende Kosten nach sich ziehen kann. Es entsteht trotz der Verwendung des Browser-Caches beim Laden jeder Anfrage eine zu übertragende Datenmenge von mehreren 100 Kilobytes. Um Anwendungen so zu programmieren, dass der größte Teil der Applikation direkt auf dem eigenen Gerät ausgeführt wird bedarf es einer ausgefeilten Kommunikation mit dem Server um nur noch notwendige Daten nachzuladen. Zur Steuerung dieser Abhängigkeiten steht unter HTML seit vielen Jahren die Skriptsprache JavaScript zur Verfügung, welche im Kern als ECMAScript (ECMA 262)[19] standardisiert ist. Insbesondere durch das Web 2.0 hat diese gegenüber alternativen Technologien wie Adobe Flash in den letzten Jahren enorm an Marktbedeutung gewonnen. Auf Basis von JavaScript sind einige Frameworks entstanden, die häufig wiederkehrende Anwendungsfälle vereinheitlichen. Insbesondere im mobilen Umfeld für Smartphones und Tablet PCs gibt es einige Sonderfunktionen, die bisher im Internet keine Bedeutung hatten. So war es bisher nicht möglich an den genauen Aufenthaltsort oder an die eingebaute Smartphone-Kamera des Benutzers zu gelangen. Um diese technisch komplexen Aktionen möglichst einfach verwendbar zu machen wird mit "PhoneGap" im nächsten Abschnitt ein JavaScript Framework vorgestellt, welches derartige Zugriffe ermöglicht. In den darauf folgenden Abschnitten werden Frameworks zur Realisierung von intuitiven benutzerfreundlichen Oberflächen dargestellt. 2.1 HTML, XHTML und HTML5 8 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien 2.2.1 PhoneGap Die Firma Nitobi Software veröffentlichte 2008 das JavaScript-Framework PhoneGap, welches wie der Name bereits vermuten lässt speziell auf die Anforderungen von Smartphones ausgelegt ist. Die API[20] des Frameworks geht sehr detailliert und fast ausschließlich auf Spezialfunktionen ein, die mit HTML und JavaScript ohne jegliche Erweiterungen bisher nicht möglich waren. PhoneGap stellt für den Zugriff auf die Gerätefunktionen eine Brücke zur Verfügung, die per JavaScript verwendet werden kann. [21]Abbildung der technischen Zugriffsebenen von Smartphones als Brücke Mit folgendem Javascript-Sourcecode lässt sich geräteübergreifend die aktuelle Position mithilfe des GPS-Sensors ermitteln: function onDeviceReady() { // Nach der Positionsbestimmung wird die Callback-Methode "onSuccess" (s.u.) ausgeführt navigator.geolocation.getCurrentPosition(onSuccess, onError); } function onSuccess(position) { // Schreibe in den Absatz mit der Id "geolocation" die Positionsdaten des GPS-Sensors var element = document.getElementById('geolocation'); element.innerHTML = 'Breitengrad: ' + position.coords.latitude + 'Längengrad: ' + position.coords.longitude + 'Genaugikeit: ' + position.coords.accuracy + 'Bewegungsgeschwindikeit: ' + position.coords.speed + 'Datum / Uhrzeit: ' + new Date(position.timestamp); } Im HTML-Body muss ein Element mit der Id "geolocation" enthalten sein, welches von der onSuccess-Methode manipuliert wird, z.B. <br><p id="geolocation">Finding geolocation...</p> Das Beispiel zeigt auf beeindruckende Art und Weise, wie einfach auf die Betriebssystemsfunktionen des Mobilgerätes mit JavaScript zugegriffen werden kann. Allerdings gibt es auch Schattenseiten, die beim Einsatz des Frameworks berücksichtigt werden müssen. Zum Zeitpunkt der Anfertigung dieser Seminararbeit gab es in der API immer wieder einige Inkonsistenzen, die sich dadurch zeigten, dass einige Zugriffsfunktionen auf den unterschiedlichen Geräten minimal anders verhalten. Im schlimmsten Fall führt dies dazu, dass die Anwendung nur auf einer Plattform optimal läuft. Die nachfolgende Matrix zeigt die Unterstützung der Plattformen mit PhoneGap in der aktuellen Version 0.9.3: 2.2.1 PhoneGap 9 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien [22]Support Matrix for PhoneGap 0.9.3 Eine Weitere wichtige Eigenschaft von PhoneGap ist die Möglichkeit, dass eine in JavaScript + HTML (5) erstellte Anwendung in einem App-Container eingebettet und anschließend auf die verschiedenen Plattformen verteilt werden kann. Dadurch ist der gravierendste Unterschied zwischen nativen Apps und WebApps deutlich geringer geworden. Bezüglich der Verteilung dieser Anwendungen gibt es seitens des Herstellers einige Barrieren in Form von Richtlinien, welche berücksichtigt werden müssen. 2.2.2 Sencha Touch Das freie Open-Source Framework Sencha Touch[23] ist das neueste Vorzeige-Produkt der Firma Sencha aus Palo Alto, die ursprünglich Ext JS hieß. Es kombiniert die JavaScript-Frameworks Ext JS, jQTouch[24] und Raphaël[25] welche speziell für die Darstellung von Diagrammen geeignet ist.[26] Ext JS ist ein bekanntes JavaScript Framework, welches vor einiger Zeit "aus einer Sammlung von Yahoo! User Interface Bibliotheken entstand. Zu dieser Zeit trug es den Namen ext-yui."[27] Das speziell für mobile Applikationen ausgerichtete Technologie-Pendant Sencha Touch beansprucht für sich, das erste Framework zu sein, dass die Vorteile aus HTML5 und CSS3 nutzt. Ein wichtiges Merkmal von Sencha Touch ist, dass der Aufbau der UI-Elemente komponentenweise Objekt Literale als Übergabeparameter verwendet werden. Die Verwendung dieser [...] Schreibweise bietet dem Entwickler den Vorteil der besseren Lesbarkeit des Programmcodes.[28]. Nicht existierende Parameter werden dabei ignoriert und die Reihenfolge der Literale spielt keine Rolle, sofern die korrekte Ebene der Zielkomponente weiterhin stimmt. 2.2.2 Sencha Touch 10 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien var myScreen = new Ext.TabPanel({ fullscreen: true, type: 'dark', items: [{ title: 'Tab 1', html: '1', cls: 'card1' }, { title: 'Tab 2', html: '2', cls: 'card2', invalid-property: 'wrong' // Wird von Sencha Touch ignoriert! }, { title: 'Tab 3', html: '3', cls: 'card3' }] }); Zur Gestaltung des User Interfaces ist das steht das Panel als grundlegendes Container-Element zur Verfügung. An diesem können je nach Bedarf weitere Toolbars, Tableisten, sog. Karoussel-Komponenten für spezielle "Swipe"-Fingergestern angehangen werden. Dabei können alle Elemente an den Bildschirmrand oder zentral als modaler Dialog angeordnet werden. Alle Elemente lassen sich nach dem Containerprinzip beliebig ineinander verschachtelt in die Seite einbinden. Zur Unterscheidung zwischen Smartphones und Tablet-PCs stehen spezielle Variablen bereit um die Darstellung der Anwendung optimal an die Bildschirmgröße des jeweiligen Endgerätes Anpassen zu können. Für den bei WebApps essentiellen Datenaustausch stehen Funktionen zum asynchronen Laden von Daten per Ajax, JSON by Padding (JSON-P [29]) und YML[30] bereit. Selbst Bandbreitenintensive Anwendungen wie Google Maps inkl. StreetView (http://maps.google.de) lassen sich sehr einfach Darstellen und über die API mit stecknadelähnlichen Markern versehen. Ein möglicherweise projektentscheidender Nachteil bei Sencha Touch liegt zumindest in der Version 1.0 von Dezember 2010 allerdings noch vor: Es werden von Sencha offiziell nur Android und iOS unterstützt. Durch die Verwendung von HTML5 und CSS3 kann zum heutigen Zustand aufgrund der ausstehenden Verabschiedung des ersten offiziellen Standards keine vollständige Geräte übergreifende Unterstützung gewährleistet werden. Die Lizenzierung[31] des Frameworks erfolgt auf zwei verschiedenen Arten, aus denen der Entwickler wählen kann. Entweder er erwirbt für den kommerziellen Einsatz eine entsprechend kostenpflichtige Lizenz und sichert sich damit die vollen Rechte auf das entwickelte Produkt oder er wählt die LGPL-Lizenz[32]. Bei letzterer bleibt die Entwicklung und Verbreitung des Produktes kostenfrei, jedoch verpflichtet sich der Entwickler seinen erstellten Quellcode frei zur Weiteren Verfügung zu stellen. 2.2.3 jQuery Mobile Als eines der jüngsten und derzeit stark in der Entwicklung befindlichen JavaScript-Frameworks für den mobilen Einsatz liegt jQuery Mobile in der zweiten Alpha Version (Stand 20.01.2011) vor. Es basiert auf dem Jahrelang etablierten JavaScript-Framework jQuery und wird vorraussichtlich eines der wichtigsten Frameworks für diesen Bereich werden. 2.2.3 jQuery Mobile 11 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien jQuery Mobile 1.0 Alpha 2 Demo Die Plattformunabhängigkeit ist für das jQuery Mobile Framework im Gegensatz zu Sencha Touch eines der wichtigsten Ziele. Die Entwickler haben bereits viel Zeit in die Untersuchung der Fähigkeiten der verschiedenen Geräte investiert, um diese zu klassifizieren. In Zukunft sollen alle Anpassungen in der mobilen Version von jQuery in das Core-jQuery-Framework zurückfließen, sodass langfristig keine verschiedenen Versionen gepflegt werden müssen. Ist der Browser HTML5 fähig, sollen dessen Eigenschaften verwenden können. Andernfalls gibt es kleine Einschränkungen, die aber die Funktion nicht weiter beeinträchtigen sollen. Die Entwicklung von jQuery Mobile wird in Form von Finanzierung und Bereitstellung von freien Entwicklern durch zahlreiche prominenten Firmen unterstützt. Darunter sind Firmen wie auch Yahoo!, Filament Group[33], Mozilla und Nokia[34] 2.2.4 Sonstige Web-Frameworks Für andere Programmiersprachen entstehen zahlreiche weitere Frameworks, welche häufig eine Sonderstellung einnehmen. Für Ruby-Entwickler wurde z.B. das Rhodes-Framework[35] entwickelt, welches für die Distribution der damit entwickelten WebApps einen speziellen Build-Service mitbringt. Dadurch muss sich der Entwickler keine Gedanken mehr um die Zielplattform machen und benötigt auch kein installiertes Android-SDK oder Apples Entwicklungsumgebung XCode. 2.3 Vergleich mit nativen Apps 2.2.4 Sonstige Web-Frameworks 12 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien [36] Das mobile Web Dilemna am Beispiel von Amazon - Links Native App, Rechts WebApp User Interfaces müssen im mobilen Umfeld durch Berührung optimal bedienbar sein, weshalb das Thema UI eine sehr große Bedeutung gewonnen hat. Apple beschreibt in der iOS Referency Library im Abschnitt iOS Human Interface Guidelines[37] einige Prinzipien, die teils sogar Vorraussetzung für die Freigabe in Apple's App Store im Zuge des vorgelagerten Überprüfungsprozesses sind. In der Vergangenheit wurden u.a. wegen zweckentfremdeter Verwendung der Kamera-Taste oder UI-Gestaltungsarten, aufgrund eines Verstoßes der somit verletzten Richtlinien[38] die Zulassung seitens Apple verweigert[39] Spiegel Online berichtete 2010 über einen Aufstand gegen Apple's App-Zensur, von der auch kurzzeitig der Spiegel Verlag selbst betroffen war. Aufgrund von pornografischen Inhalten, welche über das Internet in der Anwendung dargestellt wurden, ist aus der Sicht von Apple gegen dessen Richtlinien verstoßen worden [40]. Insgesamt zeigt sich, dass Google mit Zensierungen von Apps für seine Android Plattform deutlich zurückhaltender vorgeht. Daraus folgt, dass diese Apps, die für die jeweilige Plattform speziell entwickelt wurden und auch nur auf dieser einen Plattform laufen, mehrmals entwickelt werden müssten. Diese Plattformen bringen aber inzwischen alle relativ moderne Browser mit, auf denen ähnliche Funktionalitäten bereit gestellt werden können. Damit bei jedem Start der Anwendung nicht die Adresse des Servers im Browser eingegeben werden müssen stehen entweder konventionelle Lesezeichen bereit oder sie werden z.B. in einem App-Container mit PhoneGap eingebettet. In der Anfangsphase verweigerte Apple die Aufnahme der somit erstellten Apps in den App Store aufgrund der oben genannten Richtlinien. Erst im April 2010 bestätigte Apple nach einen offenen Brief aus einer Entwickler-Community, die sich speziell in Web-Technologien verschrieben hat, dass der Einsatz dieser auch für die Verbreitung über den AppStore erlaubt ist.[41] Für diesen Zweck wurde meist PhoneGap verwendet um die Web-App innerhalb des App-Containers über den Apple AppStore oder auch den Android Market, sowie auch BlackBerry und co. zu verbreiten. Wichtiges Merkmale der Verbreitungsart sind unter anderen • Geschwindigkeit bis die App für die Benutzer zur Verfügung steht • Verzögerung bei der Bereitstellung von Updates • Dauer, bis die erzielten Gewinne durch den Verkauf ausgezahlt werden 2.3 Vergleich mit nativen Apps 13 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien • Kosten der Distribution Die Global Intelligence Alliance (GIA) führte April 2010 in Form einer Befragung unter anderem mehrere Untersuchungen zu diesen Merkmalen durch. Das Whitepaper ist auf der Webseite der GIA öffentlich zugänglich[42] Auch VisionMobile führt eine ähnliche Untersuchung zu der Entwicklung von Apps durch. Diese steht ebenfalls öffentlich zur Verfügung.[43] Grundsätzlich gilt, dass bei Verwendung der Web-Frameworks alle Möglichkeiten zur Verfügung stehen, die auch mit HTML (5) in Verbindung mit CSS funktionieren. HTML5 bringt dabei hinsichtlich besserer Multimediaunterstützung z.B. durch optional abgerundete UI-Elemente, dem Browser Storage sowie nativer Video- und Audiounterstützung deutliche Vorteile gegenüber seinen Vorgängerversionen. 2.3.1 User Interface Elemente Am Beispiel von Android wird in diesem Abschnitt ein kleiner Vergleich zwischen einer nativen App mit den Standard User Interface Elementen (UI) und denen von Sencha Touch durchgeführt. In den Dokumentationen[44] von Android werden alle UI-Elemente genau beschrieben. Im Folgenden wird ein kleiner Überblick über Widgets für Tabs, Datumsselektoren und Google Maps Karten dargestellt: Android UI KartendarstellungDatumsauswahlTabs Sencha Touch KartendarstellungDatumsauswahlTabs 2.3.2 Sicherheit 2.3.2.1 Sicherheitsrisken Da der gesamte Quellcode i.d.R. für den Anwender völlig offen eingesehen werden kann und auch die komplette Datenübertragung über spezielle Browsererweiterungen wie z.B. das Firebug-Plugin für den Mozilla Firefox nachverfolgt werden kann, ergeben sich hohe Sicherheitsrisiken. 2.3.1 User Interface Elemente 14 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien Daher muss bei der Konzeption von Web-Anwendungen, die regen Gebrauch von der AJAX-Technologie machen beachtet werden, dass nur Daten vom Server ausgeliefert werden dürfen, die auch für den Nutzer bestimmt sind. So dürfen keine Daten anderer Benutzeraccounts durch fehlerhafte Verarbeitung oder manipulierter Anfragen wie z.B. Cross-Domain-Scripting (XSS) oder SQL-Injection vom Server unmittelbar und ungefiltert ausgeführt werden. Diese Grundsätze galten allerdings schon immer für Web-Anwendungen, sind aber insbesondere in komplexeren Szenarien mit vielen asynchon ausgeführten AJAX-Requests ein sehr schwieriges Unterfangen. Insbesondere wenn es um Geld oder personenbezogenen Daten geht kann eine umfassendes Auditierung durch einen Experten viele Probleme vermeiden. 2.3.2.2 Verschlüsselung Jede Kommunikation zwischen mobilen Endgerät kann standardmäßig abgehört werden, sofern keine Sicherheitsvorkehrung wie Verschlüsselung z.B. durch SSL getroffen worden sind. Daher gilt wie auch bei jeder anderen Webseite, auf der Personenbezogene oder sonstige sensible Daten gespeichert werden, diese durch geeignete Maßnahmen abzusichern. 3 Fazit Die Entwicklung von Apps für Smartphones und auch Tablet-PCs wird in den nächsten Jahren ein sehr spannendes Thema bleiben und auch in vielen Unternehmen einen hohen Stellenwert behalten. WebApps haben den Vorteil, dass die Anwendung nur einmal entwickelt werden muss. Native Apps hingegen müssen für jede Plattform von Grund auf neuentwickelt werden. Dafür werden native Apps in absehbarer Zeit schneller laufen und werden den optimalen Zugriff auf alle Gerätefunktionen ermöglichen. Dies kann jedoch nur geschehen, wenn der Zugriff von den Herstellern genau spezifiziert wird. Zusammengefasst kann man also derzeit noch keine klare Aussage treffen, ob eine WebApp oder eine native App die bessere Lösung ist. Es ist jedoch feszustellen, dass sich auf Grund der immer besseren Webtechnologien wie HTML5, CSS3 und moderne JavaScript-Frameworks, der Anwender ein komfortablerer Zugriff auf die Gerätefunktionen erhält. Bisherige technische Grenzen entfallen dabei deutlich. Lediglich bei aufwändigen 3D-Spielen wird es auf absehbare Zeit kein Weg an nativen Apps vorbeiführen. Selbst bei aller Vollständigkeit ist es letztlich der Benutzer, der mit der Anwendung zufrieden sein muss. Daher bringt es auch keinen Vorteil, wenn die App nicht vollfunktional auf allen vorhanden Plattformen läuft. Daraus ergibt sich, dass der Endanwender nur einen Teil der Funktionalitäten die die Geräte bieten, vollständig nutzen kann. Umgangssprachlich kann man dieses Problem folgendermaßen formulieren: "Nichts Halbes, nichts Ganzes". 4 Abkürzungsverzeichnis Abkürzung 4 Abkürzungsverzeichnis Erklärung 15 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien JVM / JRE Die Java Virtual Machine (JVM) ist für die Ausführung von Bytecode zuständig. Sie ist ein Teil der Java Runtime Environment (JRE). JavaME Die Java Micro Edition ist eine spezielle kleingehaltene JRE, die nicht alle Funktionen der normalen JRE zur Verfügung hat. JDK Das Java Development Kit von Oracle ist das offizielle Java-SDK. HTML Beschreibungssprache (Hypertext Markup Language) um Webseiten im Browser darstellen zu können. GUI Das GUI (Graphic User Interface) ist für die Darstellung auf dem Display da. SSL Verschlüsseltes Datenübertragungsverfahren im Browser. CSS Formatierungssprache zur Steuerung des Aussehens einer Website. AJAX AJAX bedeutet Asynchronous JavaScript and XML und zeigt einen Weg dynamisch einzelne Elemente einer Website nachzuladen. XSS Cross-Site Scripting ist das Ausnutzen von Sicherheitslücken, indem ein Content einer Seite , der nicht vertrauenswürdig ist, in den Content der anderen Seite injiziert wird. SQL Structured Query Language ist eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken. SDK Ein Software Development Kit stellt dem Entwickler viele Werkzeuge zur Verfügung. JSON JavaScript Object Notation ist ein komaktes Austauschformat zwischen Webserver und Client. Es wird verwendet, da XML einen großen Overhead besitzt. 5 Fußnoten 1. ? Vgl. att.com (03.02.2011 21:08) 2. ? Vgl. apfelnews.eu (03.02.2011 10:54) 3. ? In Anlehnung an: Deck, Neuendorf (2010), Seite 22 4. ? Flanagan (2005), Seite 4 5. ? Vgl. Deck, Neuendorf (2010), Seite 23f 6. ? In Anlehnung an: Deck, Neuendorf (2010), Seite 22 7. ? Vgl. Kollmann 2009, Seite 66 8. ? In Anlehnung an: Canalys (03.02.2010 10:24) 9. ? Vgl. Sadun (2009), Seite 20 10. ? Vgl. Sadun (2009), Seite 145 11. ? Vgl. 24android.com (03.02.2011 11:11) 12. ? Vgl. Mosemann, Kose (2009), Seite 7 13. ? Vgl. Immler (2008), Seite 20 14. ? Vgl. Tanenbaum (2009), Seite 1070 15. ? Vgl. Morris et al (2010), Seite XXI 16. ? Öggl, Förster (2010), Seite 15 17. ? Vgl. whatwg.org (03.02.2011 19:08) 18. ? Vgl. Öggl, Förster (2010), Seite 15ff 19. ? Vgl. ecma-international.org (03.02.2011 21:04) 20. ? Vgl. docs.phonegap.com (03.02.2011 21:22) 21. ? In Anlehnung an: c't Ausgabe 16/2010, Seite 100 22. ? In Anlehnung an: phonegap.com features (03.02.2011 19:00) 23. ? Vgl. sencha.com 5 Fußnoten 16 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien 24. ? Vgl. jqtouch.com (03.02.2011 19:17) 25. ? Vgl. raphaeljs.com (03.02.2011 19:23) 26. ? Vgl. Allen, Graupera, Lundrigan (2010), Seite 225 27. ? Steller (2008), Seite 37 28. ? Steller (2008), Seite 37 29. ? Vgl. json-p.org (03.02.2011 19:23) 30. ? Vgl. developer.yahoo.com (03.02.2011 19:16) 31. ? Vgl. sencha.com (03.02.2011 19:20) 32. ? Vgl. gnu.de (03.02.2011 18:32) 33. ? Vgl. filamentgroup.com (03.02.2011 21:13) 34. ? Vgl. golem.de (14.08.2010 19:13) 35. ? Vgl. rhomobile.com (03.02.2011 21:18) 36. ? Vgl. mobilemetrics.de (03.02.2011 19:50) 37. ? Vgl. developer.apple.com Introduction (03.02.2011 18:44) 38. ? Vgl. developer.apple.com Guidelines (03.02.2011 18:45) 39. ? Vgl. macnews.de (03.02.2011 18:47) 40. ? Vgl. spiegel.de (03.02.2011 18:48) 41. ? Vgl. phonegap.com license (03.02.2011 19:20) 42. ? Vgl. Luo (2010), Seite 22ff 43. ? Vgl. Constantinou, Camilleri, Kapetanakis (2010), Seite 32 44. ? Vgl. developer.android.com Guide (03.02.2011 23:00) 6 Quellenverzeichnis Verweis Quelle Sadun (2009) Sadun, Erica: Das iPhone Entwicklerbuch - Rezepte für Anwendungsprogrammierung mit dem iPhone SDK: Addison-Wesley Verlag, München Canalys (03.02.2010 10:24) Canalys: Google?s Android becomes the world?s leading smart phone platform: Marktforschungsanalyse von Canalys Mosemann, Kose (2009) Mosemann, Heiko / Kose, Matthias: Android - Anwendungen für das Handybetriebssystem erfolgreich programmieren: Carl Hanser Verlag, München / Wien Immler (2008) Immler, Christian: Das inoffizielle Handy-Buch: 2. Auflage, Franzis Verlag GmbH, Poing Tanenbaum (2009) Tanenbaum, Andrew S.: it Informatik - Moderne Betriebssysteme: 3. Auflage, Pearson Studium, München Morris et al (2010) Morris et al, Ben.: Introduction to bada - A Developer's Guide: 1. Auflage, Samsung Electronics, Co., Ltd., Cornwall apfelnews.eu (03.02.2011 10:54) apfelnews.eu: AppStore ? 250.000 verschiedene Apps: AppStore Statistik Flanagan (2005) Flanagan, David: Java in a nutshell - A Desktop Quick Reference: 5. Auflage, Reilly Media, Inc., Sebastopol 24android.com (03.02.2011 11:11) 24android.com: Was ist die Open Handset Alliance?: Open-Handset-Alliance Information 6 Quellenverzeichnis 17 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien Kollmann (2009) Prof. Dr. Kollmann, Tobias: E-Entrepreneurship - Grundlagen der Unternehmensgründung in der Net Economy: 3. Auflage, Gabler, GWV Fachverlage GmbH, Wiesbaden Deck, Klaus-Georg / Neuendorf, Herbert: Java-Grundkurs für Deck, Neuendorf (2010) Wirtschafsinformatiker: 2. Auflage, Vieweg+Teubner Verlag, Springer Fachmedien Wiesbaden GmbH, Wiesbaden gnu.de (03.02.2011 18:32) gnu.de: Lesser General Public Licence : Offizielle GNU Website developer.apple.com Introduction (03.02.2011 18:44) developer.apple.com: Introduction : Offizielle Apple Introduction Website developer.apple.com Guidelines (03.02.2011 18:45) developer.apple.com: Guidelines : Offizielle Apple Guidelines Website macnews.de (03.02.2011 18:47) macnews.de: Apples App-Store-Richtlinien: "Wir brauchen keine weiteren Furz-Apps" : App Store Richtlinien spiegel.de (03.02.2011 18:48) spiegel.de: Medien auf dem iPhone : Aufstand gegen Apples App-Zensur phonegap.com features phonegap.com: Supported Features : Supported Features von PhoneGap (03.02.2011 19:00) whatwg.org (03.02.2011 phonegap.com: Welcome to the WHATWG community : WHATWG community 19:08) golem.de (14.08.2010 19:13) golem.de: Eine Bibliothek für alle mobilen Plattformen : jQuery Mobile phonegap.com license (03.02.2011 19:20) phonegap.com: PhoneGap and the Apple developer license agreement : Blog jqtouch.com (03.02.2011 19:17) jqtouch.com: A jQuery plugin for mobile web development on the iPhone, iPod Touch, and other forward-thinking devices. : jqtouch raphaeljs.com (03.02.2011 19:23) raphaeljs.com: Raphaël?JavaScript Library : raphaeljs Steller (2008) Steller, Marcus: Entwicklung und Einsatz von Richt Internet Applikationen in kommerziellen Einsatz: GRIN Verlag, veröffentlichte Diplomarbeit json-p.org (03.02.2011 19:23) json-p.org: Defining Safer JSON-P : json-p developer.yahoo.com (03.02.2011 19:16) developer.yahoo.com: Chapter 6. Yahoo! Markup Language (YML) : yml sencha.com (03.02.2011 sencha.com: Sencha Touch license options : license 19:20) mobilemetrics.de (03.02.2011 19:50) mobilemetrics.de: Das Mobile Web Dilemma ? Native App oder Web App? : webapp Luo (2010) Luo, Lie: Native or Web Application?: Global Intelligence Alliance, E-Book PDF Adresse (03.02.2010 20:28) 6 Quellenverzeichnis 18 Plattformunabhängie_Smartphone-Entwicklung_auf_Basis_von_Web-Technologien Constantinou, Constantinou, Andreas \ Camilleri, Elizabeth \ Kapetanakis, Matos : Mobile Camilleri, Kapetanakis Developer Economics 2010 and Beyond: VisionMobile, E-Book PDF Adresse (2010) (03.02.2010 20:36) Öggl, Förster (2010) Öggl, Bernd \ Förster, Klaus: HTML 5: Leitfaden für Webentwickler: Addison-Wesley Verlag, München Allen, Graupera, Lundrigan (2010) Allen, Sarah \ Graupera, Vidal \ Lundrigan, Lee: Pro Smartphone Cross-Platform Development: Apress ecma-international.org ecma-international.org: ECMAScript Language Specification: ECMAScript Language (03.02.2011 21:04) Specification PDF att.com (03.02.2011 21:08) att.com: AT&T iPhone: iPhone filamentgroup.com (03.02.2011 21:13) filamentgroup.com: Filament Group, Inc: filamentgroup rhomobile.com (03.02.2011 21:18) rhomobile.com: Cross-Platform Mobile App Development: rhomobile docs.phonegap.com (03.02.2011 21:22) rhomobile.com: API Reference: API Reference PhoneGab developer.android.com Guide (03.02.2011 developer.android.com: Android Dev Guide: Guide 23:00) 6 Quellenverzeichnis 19