Performance van Phonegap Naam: Datum: april 2012 Studentnummer: 0235938 Opleiding: CMD Docenten: Pauline Krebbers Modulecode: MEDMO101DT Modulenaam: Onderzoeksvaardigheden 2 / Media & Onderzoek
Inhoudsopgave 1. Inleiding... 3 2. Aanleiding & probleemstelling... 4 3. Begripsafbakening, tijdsplan en onderzoekmethode... 5 4. Onderzoeksresultaten... 6 5. Conclusies... 9 6. Bijlagen... 10 Bijlage 1: Plan van aanpak... 10 Bijlage 2: Bronnen... 11 2
1. Inleiding Apps voor de iphone en ipad worden doorgaans geprogrammeerd in de programmeertaal Cocoa. Cocoa is een objectgeoriënteerde taal wat betekent dat door slim hergebruik van stukjes code er zeer complexe programmaʼs relatief eenvoudig ontwikkeld kunnen worden. Het nadeel is dat door deze complexiteit de leercurve van deze nieuwe taal zeer steil is en vraagt jaren intensieve training om iets fatsoenlijks af te kunnen leveren. Voor het ontwikkelen van apps zijn er echter meerdere mogelijkheden. Er zijn zelfs mogelijkheden waarbij het helemaal niet nodig is om de taal aan te leren en de apps op een andere wijze geprogrammeerd kunnen worden. Een van die opties is de tool Phonegap. Phonegap is een tool waarmee de app in HTML(5) en javascripts geprogrammeerd wordt. Phonegap zorgt er voor dat de juiste (Cocoa) code gegenereerd wordt die in de Iphone of Ipad gebruikt kan worden. Aangezien veel mensen wel ervaring hebben met HTML en Javascript is de ontwikkeling van apps veel sneller te realiseren. De keerzijde is dat Phonegap als tussenlaag fungeert tussen de hardware en de software. De code moet immers geconverteerd worden iedere keer als de app gebruikt wordt. Dit onderzoek moet in beeld brengen welke performance issues Phonegap met zich meebrengt en waar de grens ligt of deze tool toegepast kan worden of dat toch overgestapt moet worden naar native Cocoa ontwikkeling. 3
2. Aanleiding onderzoek en probleemstelling Aanleiding onderzoek Vanuit een persoonlijke behoefte ben ik me aan het richten op de ontwikkeling van apps. De uitkomst van dit onderzoek is voor mij bepalend of een app ontwikkeld kan gaan worden door gebruik te maken van Phonegap of niet. Om apps te gaan programmeren in de native programmeertaal is geen optie gezien de benodigde tijd die nodig is om de taal te beheersen. Doel onderzoek Het resultaat van dit onderzoek kan als hulpmiddel gebruikt worden als de keuze van het ontwikkelplatform gemaakt moet worden. Wanneer kiest men voor een native ontwikkeling en wanneer kan er met een tussenlaag gewerkt gaan worden. Dit onderzoek moet inzicht geven in de beperkingen die er zijn en of performance problemen zullen optreden. Probleemstelling Welke beperkingen en performance nadelen zijn er als bij de ontwikkeling van mobiele applicaties gebruik gemaakt wordt van een tussenlaag als Phonegap? Uit de probleemstelling zijn de volgende deelvragen ontstaan: Welke software beperkingen zijn er? Welke hardware beperkingen zijn er? Zijn er aantoonbare performance problemen bekend? Kunnen ook complexe apps met Phonegap gerealiseerd worden? 4
3. Begripsafbakening, tijdsplan en onderzoeksmethode Begripsafbakening Er zijn vele tools beschikbaar die een soortgelijke werking hebben als Phonegap. Dit onderzoek richt zich alleen op de tool Phonegap. Onder performance wordt verstaan of er merkbare prestatieverschillen merkbaar zijn die duidelijk aanwezig zijn en nadelig zijn als er met Phonegap gewerkt wordt. Tijdsplan Het onderzoek dient op 27 april 2012 afgerond te zijn. Onderzoeksmethode Voor dit onderzoek worden gegevens verzameld via de deskresearch methode. Rond Phonegap en het gebruik van Phonegap is een grote community ontstaan. Er is veel bekend over de tool en er zijn veel gebruikers die hun ervaringen delen. De informatie is echter versnipperd en er is geen overzicht wat er wel en wat niet met de tool gedaan kan worden. De informatie moet daarom verzameld en geanalyseerd worden om een conclusie uit op te kunnen maken. 5
4. Onderzoeksresultaten Hardware Een moderne smartphone heeft vele hardware tools aan boord. Een camera, compas, gps etc. Al deze hardware is zinloos als de software er niets mee kan doen. De hardware heeft altijd software nodig om te kunnen functioneren. De native software van bijv. de iphone kan de hardware uiteraard benaderen. Maar kan Phonegap de hardware ook benaderen? Aangezien Phonegap gebruikt kan worden op de meest gangbare platforms is het belangrijk om te weten wat wel ondersteund wordt en wat niet. In het volgende overzicht is te zien dat het aansturen van de hardware niet op alle platforms hetzelfde is. Vooral bij de toepassingen waarbij gebruik gemaakt wordt van het compass, intern geheugen en opname van geluid (media) moet gelet worden of dit door Phonegap op het gekozen platform wel ondersteund wordt. 6
Phonegap performance Om de vraag te kunnen beantwoorden of Phonegap een verlies in performance oplevert is niet zo eenvoudig. De ultieme test zou zijn om een app te bouwen in Phonegap en vervolgens exact dezelfde app te programmeren in de native programmeertaal van de smartphone. Door deze 2 apps te meten en met elkaar te vergelijken zou een duidelijk beeld geven. Helaas is deze test (nog) niet eerder door iemand uitgevoerd. Daarnaast is de term performance op verschillende manieren te interpreteren. Aangezien Phonegap als extra software laag aanwezig is kan het niet anders dat dit voor een vermindering van de performance zorgt. Als deze vermindering in performance merkbaar is voor de gebruiker, dan is er een mindere user experience en uiteindelijk ontevreden gebruikers. Op de diverse fora, websites en blogs wordt veel geschreven over de prestaties van Phonegap. Ervaringen van gebruikers en ontwikkelaars geven aan dat door tussenkomst van Phonegap er wel degelijk een performance vermindering optreedt. Het gaat hier in alle gevallen om een merkbaar verschil in werking van ontwikkelde apps. Het is dus de user experience die in een aantal gevallen vermindert door gebruik van Phonegap. De verminderde prestaties zijn zoals blijkt wel aanwezig maar zijn in veel gevallen ook vrij eenvoudig op te lossen. De community reikt oplossingen aan voor de meest voorkomende problemen. Het betreft kleine aanpassingen om de user experience te verbeteren. Deze kleine aanpassingen hebben daadwerkelijk resultaat, zo blijkt uit de vele positieve reacties op de fora, blogs, websites en social media. De volgende issues zijn de meest voorkomende bij het van Phonegap waarvoor tevens een oplossing wordt aangedragen die een merkbare verbetering oplevert. Reactie snelheid op aanraking van scherm Door gebruik van Phonegap treedt er een vertraging op tussen de aanraking van de gebruiker en het daadwerkelijk uitvoeren van een commando. Deze vertraging is ca. 400 ms. Door de app naar het zogenaamde touchstart event te laten luisteren i.p.v. click verdwijnt deze vertraging nagenoeg. Animatie Animatie blijkt lastig te zijn voor Phonegap. Het zal voor het maken van games niet toegepast kunnen worden maar er zijn wel betere resultaten te boeken als animaties niet door Javascript uitgevoerd worden maar op hardware-level. Dit wordt bereikt door CSS webkit instructies toe te passen. Scripts optimaliseren De performance verbetert aanzienlijk als de javascript bibliotheken geoptimaliseerd worden. Dit betekent dat de bestanden verkleind en geminimaliseerd zodat de laadtijden korter worden. Javascript Framework Door gebruik te maken van een framework worden er veel overbodige bestanden aan Phonegap toegevoegd. Al deze nutteloze bestanden moeten allemaal geladen worden en leveren een vertraging op. Wees zorgvuldig met de keuze van het framework zodat zo weinig mogelijk bestanden die voor de werking van het systeem niet nodig zijn. 7
De praktijk met Phonegap Er zijn inmiddels vele apps ontwikkeld met Phonegap en staan online in de app stores. In het volgende overzicht is duidelijk te zien dat Phonegap niet populair is om alle soorten apps mee te maken. Vooral de sector Multimedia en games blijven duidelijk achter in ontwikkeling. Dit sluit ook aan bij bovenstaande hardware en software beperkingen die Phonegap in zich heeft. Onder utility en informatie apps moet gedacht worden aan apps die geen zware belasting zijn voor de smartphone zijn en hierdoor eenvoudig in Phonegap ontwikkeld kunnen worden. Phonegap toepassingen! U*lity Informa*ef Mul*media Games 8
5. Conclusies Phonegap blijkt een uitstekende tool te zijn om een app in te ontwikkelen. Dit blijkt uit de hoeveelheid apps die inmiddels in de app stores te vinden zijn. Er is minder technische kennis nodig om in Phonegap een app te ontwikkelen, apps zijn op meerdere merken smartphones inzetbaar en de kosten voor ontwikkeling zijn relatief laag. Zoals aangetoond levert Phonegap wat verlies op in performance en wordt niet alle hardware ondersteund. Bij de keuze of er gebruik gemaakt gaat worden van Phonegap of niet moet gekeken worden naar wat voor soort app er ontwikkeld gaat worden. Een app waar zware eisen aan de hardware gesteld worden is niet verstandig en gaat bijna zeker problemen geven die ook niet eenvoudig op te lossen of te voorkomen zijn. Niet alle multimedia hardware componenten worden op alle smartphones ondersteund en ook de aansturing van snelle grafische animaties is iets waar Phonegap duidelijk moeite mee heeft. Ook moet de ontwikkelaar voorzichtig zijn met de integratie van uitgebreide externe bibliotheken die een merkbare vertraging opleveren in Phonegap. Door deze bibliotheken zorgvuldig te kiezen kunnen performance problemen bijna geheel teniet gedaan worden. Voor de ontwikkeling van relatief eenvoudige informatieve apps is Phonegap echter zonder merkbare performance verliezen in te zetten. 9
Bijlage 1: Plan van aanpak Aanleiding tot het onderzoek Technisch onderzoek app (iphone) Voor Design This! Ga ik een app maken voor de Iphone. Hier ligt al een plan voor klaar en gaat uitgewerkt gaan worden. Normaal gesproken wordt een app geprogrammeerd in de taal Cocoa (Objective-C). Omdat het aanleren van een nieuwe taal jaren gaat kosten heb ik een oplossing gevonden waarmee een app geprogrammeerd kan worden in een mij bekende taal. Het nadeel hiervan is dat er een laag tussen komt te zitten wat voor performance problemen kan zorgen. Ik wil onderzoeken in hoeverre door deze tussenlaag de performance (nadelig) beïnvloed wordt. In beeld brengen wat er wel en niet kan en waar de beperkingen liggen. Onderzoek zal ik doen op basis van ervaringen van anderen en deskresearch. Probleemstelling Technisch onderzoek app (iphone) Wordt de performance door het toepassen van een tussenlaag bij de ontwikkeling van native apps dusdanig beïnvloedt dat de performance niet meer aan de verwachtingen van de gebruiker voldoet? Doelstelling Technisch onderzoek app (iphone) Breng aan de hand van de resultaten van dit onderzoek een advies uit waarin aangegeven wordt of het zinvol is een native app te ontwikkelen door gebruik te maken van een tussenlaag. Wat is er al bekend over dit onderwerp Technisch onderzoek app (iphone) Op diverse fora wordt gesproken over dit onderwerp. De meningen zijn echter verdeeld en het is dus belangrijk om erachter te komen hoe het nu echt zit. Het vinden van echte statistieken is lastig, de informatie zal daarom voornamelijk afkomen van gebruikers die hier ervaring mee hebben. Onderzoeksontwerp en verantwoording Technisch onderzoek app (iphone) Om een antwoord te vinden op de centrale vraag zal er voornamelijk deskresearch gedaan worden. Tijdpad Het onderzoek moet in week 8 afgerond zijn. 1 0
Bijlage 2: Literatuurlijst & bronnen Wat is onderzoek Nel Verhoeven Www.google.nl Www.phonegap.com http://floatlearning.com/2011/03/developing-better-phonegap-apps/ http://www.moneytoolkit.com/2011/05/the-problem-with-sencha-touch-and-phonegap/ https://github.com/gamemaker/phonegap-performance-test--pgpt- http://trigger.io/cross-platform-application-development-blog/2012/02/24/why-trigger-io-doesnt-usephonegap-5x-faster-native-bridge/ http://www.youtube.com/watch?v=fvodqe1e7za http://marguspala.com/phonegap-vs-native-android-and-iphone-app/ 1 1