Utvärdering av multiplattformsutvecklingsverktyg för smarta mobiler
|
|
- Camilla Falk
- för 9 år sedan
- Visningar:
Transkript
1 Beteckning: Akademin för teknik och miljö Utvärdering av multiplattformsutvecklingsverktyg för smarta mobiler Thomas Pehrson september 2011 Examensarbete 15 hp, C Datavetenskap Datavetenskapliga programmet, inriktning IT-arkitekt Examinator: Jonas Boustedt Handledare: Fredrik Bökman
2 Utvärdering av multiplattformsutvecklingsverktyg för smarta mobiler av Thomas Pehrson Akademin för teknik och miljö Högskolan i Gävle S Gävle, Sweden ndv08tpn@student.hig.se Abstrakt Genom att använda ett multiplattformsutvecklingsverktyg kan utvecklare distribuera applikationer till flera olika plattformar. Problemet är att dessa verktyg inte är lika välanvända eller dokumenterade som de dedikerade (t.ex. Android SDK) och det kan vara svårt för enskilda utvecklare eller företag att veta vilket verktyg de ska välja. Efter en grundlig kartläggning av flera multiplattformsutvecklingsverktyg valdes slutligen Corona SDK och PhoneGap ut för vidare utvärdering. Utvärderingen utfördes genom att skapa en applikation som sparar, raderar och visar noter i båda verktygen liknande en utvecklad med Android SDK. Därefter jämfördes utvecklingsprocessen med fokus på gränssnittsutformningen och databaskopplingen samt slutligen de färdiga applikationernas prestanda och minnesanvändning avgränsat till Android plattformen. Resultatet av utvärderingen visade att applikationen utvecklad i Android SDK hade bäst prestanda överlag och även minnesanvändningen var mindre än hos de övriga. Både Corona SDK och PhoneGap lämpar sig till att skapa liknande applikationer som använder en databas. PhoneGaps fördel var att det var lätt att utveckla gränssnittet genom HTML/CSS, dock var det långsamt samt mer minneskrävande jämfört med de övriga. Corona SDKs applikation hade bra prestanda med liknande tider som Android SDKs men en nackdel var att gränssnittutformningen var mer tidskrävande.
3 Innehåll 1 Inledning Applikationer på smartphones Applikationsutveckling Multiplattformsutveckling Utvecklingsverktyg Syfte Metod Litteraturstudie Val av applikation för utveckling Riktlinjer Kartläggning Avgränsning och val av multiplattformsutvecklingsverktyg Utvärdering Under utveckling Prestandamätning Minnesanvändning Resultat Kartläggning Appcelerator Titanium Mobile Corona SDK mosync PhoneGap RhoMobile Rhodes AirPlay SDK Val av utvecklingsverktyg efter kartläggning Utveckling med Android SDK, PhoneGap och Corona SDK Gränssnittsutformning med Android SDK Gränssnittsutformning med PhoneGap Gränssnittsutformning med Corona SDK Gränssnittsutformning - sammanfattning Databaskoppling med Android SDK Databaskoppling med PhoneGap Databaskoppling med Corona SDK Databaskoppling - sammanfattning Prestandamätning Notapplikation skapad med Android SDK Notapplikation skapad med PhoneGap Notapplikation skapad med Corona SDK Prestandamätning - sammanfattning Minnesanvändning Diskussion Android/iOS Applikationsval Prestandamätning och minnesanvändning Kartläggning och verktygsval för utvärdering Gränssnittsutformning och prestandamätningar Verktygens lämplighet för utveckling av liknande applikationer Rekommendation för fortsatt utvärdering Slutsatser Referenser Bilaga 1. Exekveringstid för Android SDKs notapplikation Bilaga 2. Exekveringstid för PhoneGaps notapplikation Bilaga 3. Exekveringstid för Corona SDKs notapplikation... 28
4 Bilaga 4. Minnesdump av Android SDKs notapplikation Bilaga 5. Minnesdump av PhoneGaps notapplikation Bilaga 6. Minnesdump av Corona SDKs notapplikation... 31
5 1 Inledning Idag finns det en mängd olika varianter av mobiltelefoner. Under de senaste åren har smarta telefoner eller smartphones blivit allt populärare. Det som skiljer dessa från vanliga traditionella mobiltelefoner är att de bl.a. har ett fysiskt och/eller virtuellt tangentbord, samt att de beter sig mer likt datorer. Smartphonemarknaden har ökat stadigt sedan 2009 då det enligt analytikerföretaget Canalys såldes 53,7 miljoner smartphones [1]. Under 2010 ökade försäljningen med 88,6% och det såldes under samma period hela 101,2 miljoner exemplar. Tidigare har Nokia varit störst och ledande på marknaden med deras Symbian operativsystem, men enligt Canalys har nu Googles Android gått förbi (se figur 1). Googles operativsystem stod för en ökning med 615,1% (se figur 2) vilket medför att de nu har 32,9% av marknaden. Även Apples försäljning ökade under samma period med 85,9%. Figur 1. Totala marknadsandelar 2010 Figur 2. Försäljningsökning kvartal 4-10 jämfört med kvartal
6 1.1 Applikationer på smartphones I smartphone-sammanhang pratas det om appar, en förkortning för applikationer som körs på mobiltelefonen. Appar är ett stort skäl till att de smarta telefonerna har blivit allt mer populära. Följande citat är taget ur en av Sveriges stora dagstidningar DN.se: Alla mobiltillverkare satsar nu på smartphones och nya operativsystem dyker ständigt upp. Det absolut senaste är förstås surfplattorna som blivit årets julklapp. Gemensamt för dem alltihop är att de kör appar och att det är detta som lyfter upplevelsen till nya höjder. [2] Mobila applikationer skiljer sig enligt Wasserman [3] från andra inbäddade applikationer ofta på flera punkter: 1. Interaktion med andra applikationer. Andra liknande enheter har ofta bara fabriksinstallerad mjukvara, mobila enheter har däremot många program från olika källor som kan samspela med varandra. 2. Avkännare. T.ex. en tryckskärm som svarar på olika gester, GPS, multipla nätverksprotokoll m.m. 3. Rena och hybrida mobila webbapplikationer. Till skillnad från andra inbäddade system så använder mobila applikationer tjänster som körs över telefonnätverket eller internet via webbläsare. 4. Olika versioner av hårdvara och mjukvara på plattformarna. T.ex. Android körs på flera olika enheter och finns i olika versioner. 5. Användargränssnitt. Den mobila applikationen måste dela gemensamma element i användargränssnittet med andra applikationer. 6. Komplicerade att testa. Svårt att testa t.ex. sändning genom förmedlingsnoder och telefonnätverk. 7. Kraftkonsumtion. Mobila applikationer kan oavsiktligt dränera batteriet, till skillnad från dedikerade enheter som är optimerade för maximal batteritid. 1.2 Applikationsutveckling Även om smartphones beter sig på ett likartat sätt så kan de på insidan skilja sig åt väsentligt genom att de använder olika operativsystem, vilket medför att utvecklare måste konstruera programmen på olika sätt [4]. För att åstadkomma detta är det enligt Wasserman [3] vanligt att utvecklare använder sig av dedikerade utvecklingsverktyg som är skapade för den aktuella plattformen: Apples iphone applikationer utvecklas med ios SDK (Software Development Kit). Android utveckling kan ske med plugginen Android Development Tools för Eclipse. Windows Phone utvecklare använder sig av en specialiserad version av Microsofts Visual Studio Environment. En applikation skriven i ios kommer därför inte att fungera på Android och vice versa. Biao et al [5] menar att detta ställer till med problem för utvecklare: 1. Det är tidskrävande för utvecklare eftersom de är tvungna att lära sig varje OS:s SDK och API (Application Programming Interface). 2. Det blir ineffektivt och oekonomiskt att migrera applikationer till nya plattformar, eftersom all programmering till viss del måste göras om. 2
7 3. Det blir svårt att underhålla de olika applikationsversionerna. Om en version behöver uppdateras så är utvecklaren tvungen att skriva uppdateringar för alla applikationer eftersom de körs på olika plattformar. Verktyg som möjliggör multiplattformsutveckling av mobila applikationer kan lösa dessa problem. 1.3 Multiplattformsutveckling En av de populärare programmeringsmiljöer som kan användas för att uppnå plattformsoberoende är Java. Javaprogram kan köras på flera olika plattformar så länge plattformen har en JVM (Java Virtual Machine). En lösning för att uppnå plattformsoberoende är att använda sig av Java ME, en variant som är utformad mot inbäddade system. Ett problem med att använda Java för att multiplattformsutveckla mobila applikationer är att ett flertal smartphones saknar sådant stöd (t.ex. iphone) och om det stöds är det inte helt säkert att det fungerar felfritt. Detta eftersom Javas portabilitet bygger på att tillverkaren har implementerat JVM helt enligt Java specifikationen, vilket är sällsynt. Android använder sig av en skräddarsydd JRE (Java Runtime Environment) kallad Dalvik, vilket gör att program som är utvecklade mot Android inte kan köras på andra JVMs [6] Utvecklingsverktyg Eftersom Java ME inte visat sig vara ett bra val för att skapa plattformsoberoende applikationer på mobiltelefoner har det växt fram andra alternativ. Ett multiplattformsutvecklingsverktyg kan skapa mobila applikationer till flera olika plattformar från samma eller en smått modifierad kodbas. Då detta är ett relativt nytt område så är multiplattformsutvecklingsverktygen inte lika dokumenterade eller utvärderade som de renodlade verktygen (t.ex. Android SDK eller ios SDK) vilket kan avskräcka utvecklare från att anamma dem. Dessutom anser flera att resultatet inte blir lika bra som en native 1 applikation [7],[8]. Ännu ett problem för företag eller den enskilda utvecklaren kan vara att det är svårt att veta vilket verktyg de ska använda om de vill starta utveckling mot flera olika plattformar, då det finns en uppsjö olika och att det fortfarande dyker upp nya. Bland gratisverktygen hittar vi RhoMobile Rhodes [9], Appcelerator Titanium Mobile [10], PhoneGap [11], mosync [12], som alla rekommenderas av Mashable.com [13] och är enligt dem ett bra alternativ till att hoppa över eller lägga resurser på att utveckla samma applikation igen på en annan plattform. Utöver dessa finns t.ex. Corona SDK [14] och AirPlay SDK [15] som till skillnad från de tidigare nämnda tar betalt för distribution av apparna. 1.4 Syfte Det primära syftet med den här studien är att utvärdera om en applikation utvecklad med något av dessa multiplattformsutvecklingsverktyg har samma prestanda som en likartad applikation utvecklad i det dedikerade Android utvecklingsverktyget. Utöver detta ska verktygens utvecklingsprocess jämföras sinsemellan. Syftet är även att göra 1 En applikation som körs rent, i ursprunglig form (t.ex. en applikation utvecklad enbart mot Android-plattformen i dess dedikerade utvecklingsverktyg). 3
8 en kartläggning av verktygen för att därefter utvärdera vilka som är lämpligast att utveckla applikationen med. Utvärderingen ska resultera i prestandamätningar och en mindre analys av minnesanvändningen av de färdiga applikationerna. Utvärderingen ska även resultera i en diskussion både om fördelar och nackdelar av de valda verktygen men även om deras lämplighet för utveckling av liknande applikationer. Målet är att resultatet skall vara användbart både för företag och enskilda utvecklare som är intresserade av att utveckla mot flera olika smartphone plattformar. 4
9 2 Metod Genom faktainsamling med bl.a. sökningar på Google har jag identifierat ett flertal olika verktyg som utger sig för att kunna skapa mobila applikationer som kan köras på en rad olika mobiltelefonplattformar. Information om dessa verktygs specifikationer har därefter samlats in från deras officiella hemsida och dokumentation. Av dessa verktyg valdes två ut (PhoneGap och Corona SDK) för att utvärderas mer ingående genom att utveckla och driftsätta en applikation med hjälp av dem. Utöver detta har en applikation även utvecklats i ren Android-miljö så att resultatet har kunnat jämföras. Applikationen har baserats på Android developers Notepad tutorial [16], med ändringar på bl.a. det grafiska gränssnittet för att vara mer multiplattformsvänligt. För att avgränsa och öka fokuseringen har applikationerna enbart testats mot Android-plattformen. Installation och utveckling av applikationerna har skett på samma hårdvara med Windows 7, och applikationerna har installerats och testkörts på både en Samsung Galaxy S med Android 2.2 och en Galaxy S2 med Android 2.3. Utvärderingen av notapplikationen har gjorts på den sistnämnda. 2.1 Litteraturstudie För att hitta information om ämnet har jag använt mig av Google samt onlinebiblioteken IEEE Xplore [17] och ACM Digital Libary [18] och sökt efter nyckelord som: Mobile Cross-Platform, Multiplattform, PhoneGap, Corona SDK, mosync och Rhodes. 2.2 Val av applikation för utveckling Applikationen ska ha en fungerande databas där det går att spara, hämta och radera data då detta är en viktig del i en företagsapplikation [19],[20]. Databasen ska vara plattformsoberoende så att den fungerar på minst Android och iphone. Som utgångspunkt valdes exempelapplikationen Notepad från Android Developer [16] eftersom den hade en rimlig omfattning samt hade en bra dokumenterad databaskoppling. Gränssnittet har därefter gjorts om för att bli mer multiplattformsvänligt. Detta har åstadkommits genom att ta bort användningen av menyknappen samt händelsehantering på s.k. long-clicks 2. All navigering i applikationen sköts genom den tryckkänsliga skärmen för att den teoretiskt ska kunna fungera på alla olika smartphones Riktlinjer För att utvärderingen av utvecklingsprocessen och prestandamätningen ska bli rättvisande har ett par riktlinjer upprättats. Det viktigaste är att applikationerna fungerar likadant, då resultaten annars blir missvisande. Däremot är det inte viktigt att de grafiska objekten (t.ex. knappar) i gränssnittet ser exakt lika ut, det räcker att de är av samma typ. 2 När användaren trycker och håller en kortare tid på en viss punkt på skärmen. 5
10 2.3 Kartläggning De verktyg som identifierats har jämförts på en rad olika områden innan utvecklingen påbörjats för att avgränsa verktygen till två för utveckling av den slutgiltiga applikationen. Dessa områden är viktiga eftersom jag anser att de ger utvecklaren en bra överblick över verktyget och dess begränsningar: Specifikationer o Distributionsplattformar o Programmeringsspråk o Licens Installation o Nödvändig programvara att installera o Omfattning Utvecklingshjälp o Dokumentation o Community o Exempelapplikationer Kompilering och testkörning av applikation o Typ av emulator o Omfattning 2.4 Avgränsning och val av multiplattformsutvecklingsverktyg För att avgränsa mig har jag valt utvecklingsverktygen utifrån dessa fem kriterier: Android- och iphone distribution Verktyget ska minst stöda dessa plattformar då de är de störst växande smartphone varianterna [1]. Dokumentation och exempel Utvecklingsverktyget ska vara snabbt att komma igång med genom att tillhandahålla exempelapplikationer och omfattande dokumentation, som en väldokumenterad API. Databaskoppling En databas är en vitaldel i en mobilapplikation, särskilt om den ska användas i företaget [20]. Eftersom ett av kriterierna på applikationen var att stöda någon typ av databas är det viktigt att verktyget stöder en funktion för att spara och hämta data. Viktigt är även att det finns exempelkod att tillgå som visar hur detta implementeras. Licens Då budgeten är limiterad ska verktygen vara gratis att använda och ladda hem. Det är däremot acceptabelt att det kostar en avgift om applikationerna därefter ska distribueras. Testkörning Eftersom tiden är begränsad ska det vara enkelt att testköra applikationerna antingen genom den virtuella emulatorn eller i den fysiska mobiltelefonen. 6
11 2.5 Utvärdering Under utvecklingsfasen har verktygen jämförts sinsemellan som hur implementationen av databaskopplingen och gränssnittsutformningen skiljer sig åt. Efter utvecklingsfasen har applikationerna kompilerats och installerats på en fristående smartphone och därefter utfördes prestandamätningar för olika funktioner. Den färdiga applikationens minnesanvändning har också analyserats Under utveckling Under utvecklingen har utformningen av gränssnittet jämförts mellan de olika verktygen med fokus på hur vyerna skapas samt hur koden för att uppdatera listan med notelement implementeras. Utöver detta har databaskopplingskoden jämförts med avseenden som hur en instans av databasen skapas och hur transaktioner utförs Prestandamätning För att mäta prestandan har fem olika mätpunkter valts ut för mätning av exekveringstid. För databasfunktioner har exekveringstid för att skapa tabellen, skapa fyra noter med tillhörande data samt tiden för att ta bort en not mätts. Gränssnittets responsivitet har beräknats genom att mäta på hur lång tid det tar för en ny vy att visas. Prestandamätningen har utförts med stopwatch-tekniken [21] genom att logga tidpunkten i logcat [22] som är beskrivet i Measure performance in Android SDK [23] före samt efter händelsen och därefter beräkna mellantiden. Genom att använda den tidigare nämnda stopwatch-tekniken fungerar tidsmätningen i alla utvecklingsverktyg så länge det har en funktion liknande Javas currenttimemillis() för att beräkna tid Minnesanvändning Minnesanvändning i Android är ett komplicerat område och minnesinformationen kan vara missledande eftersom det kan vara oklart hur mycket minne en applikation tar upp på grund av att stor del av minnet är delat med andra processer. Dock kan vi undersöka två värden för att få en approximation av minnesanvändningen för applikationen: Uss (Private dirty) samt Pss [24]. Uss kan förklaras som minnet som skulle frigöras till systemet om processen avslutas. Pss är minnet som inte skulle frigöras om processen avslutades, men ändå bidrar till den totala minnesmängden. Genom att analysera dessa värden kan vi få en uppskattning om hur mycket minne applikationen använder [25]. För att analysera minnet har Android Debug Bridge [26] använts som beskrivet på Texas Instruments Android memory analysis [27]. 7
12 3 Resultat Genom att kartlägga de identifierade multiplattformsverktygen har det sedan valts ut två verktyg att slutföra notapplikationen på från de kriterier som togs upp i kapitel 2.4. Efter kartläggningen har verktygen jämförts sinsemellan på olika områden, och därefter har bl.a. prestandan på de färdigutvecklade applikationerna utvärderats. 3.1 Kartläggning Kartläggningens resultat är framtagna genom faktainsamling från respektive utvecklingsverktygs hemsida eller dokumentation samt personlig testning. Resultaten består till viss del av mina subjektiva åsikter som representerar en student som tidigare aldrig använt något av verktygen. För att underlätta och minimera irrelevant data har jag generaliserat och samlat ihop t.ex. alla ios versioner under samlingsnamnet iphone som plattform, även om verktyget inte stöder alla funktioner fullt ut. Installationen och testkörning har enbart gjorts som jag nämnt tidigare för utveckling av Android applikationer. Kartläggningen startades i maj 2011 och uppgifterna har inte uppdaterats efter augusti Då några av dessa uppgifter har ändrats under denna period så har det slutgiltiga valet av utvecklingsverktyg baserats på den tidigaste utförda kartläggningen. Avsnitt till är en sammanställning av kartläggningen Appcelerator Titanium Mobile Specifikationer Plattformar: iphone och Android (Blackberry för betatestare) Licens: Apache Public License (version 2) Programmeringspråk: HTML, JavaScript, CSS, Python, Ruby och PHP Databas: Internal SQLite Installation Omfattande installation och konfiguration. Nödvändig programvara: Python 2.7, Git, Sun/Oracle JDK, Android SDK Tools, Titanium Developer. Utvecklingshjälp Dokumentationen är lättåtkomlig och lättnavigerad. API finns att tillgå online på dess officiella hemsida. Community är gratis men extra tjänster som t.ex. behörighet till knowledge base kostar pengar. Community är mycket aktiv med just nu 15,193 inlägg. Officiella exempelapplikationer: Hello world exempel för att snabbt komma igång. Ett exempelbibliotek kallat Kitchen sink finns att tillgå där nästan alla funktioner demonstreras. Testkörning och kompilering Android applikationer testkörs genom Android SDKs installerade emulator, vilken först måste konfigureras. Relativt långsam att starta jämfört med andra verktygs inbyggda emulatorer. Enkel kompilering. 8
13 3.1.2 Corona SDK Specifikationer Plattformar: Licens: Programmeringspråk: LUA Databas: Internal SQLite iphone och Android Gratis att använda. Däremot krävs det ett abonnemang för att distribuera apparna. ios Indie (199$/år) enbart ios utveckling, Android Indie (199$/år) enbart Android utveckling samt Pro (349$/år) där allt ingår Installation Enkel installation. Enbart Corona SDK behöver installeras för att börja utvecklingen, och kod skrivs i valfri text editor t.ex. anteckningar. För att köra programmen på annat än den inbyggda emulatorn så behövs även Java SDK. Utvecklingshjälp Omfattande och välskriven dokumentation. API referensen är enkel att förstå då den förutom att beskriva funktionerna även visar hur de kan användas genom exempelkod. En introduktion kallad Corona in 5 minutes visar enkelt hur utvecklaren snabbt kommer igång med utvecklingsverktyget. Deras officiella forum är mycket aktivt med tiotusentals inlägg i flera undergrupper. Officiella exempelapplikationer: Mycket omfattade, 95st uppdelade i flera kategorier från enkla som Getting started till mer avancerade. Ingående och bra dokumenterade demonstrationer gör det lätt att komma igång. Testkörning och kompilering Applikationer körs genom Corona SDKs egna emulator, vilken stöder de flesta funktioner. Några av funktionerna kan inte testas genom emulatorn utan måste först kompileras och sedan testas på mobiltelefonen, vilket blir tidskrävande. Kompileringen är jämfört med tidigare kartlagda verktyg tidskrävande, då den först måste verifiera användaren mot en extern server mosync Specifikationer Plattformar: Licens: Programmeringspråk: C/C++ Databas: Ingen officiell iphone, Android, J2ME, Windows Mobile, Symbian och MeeGo Gratis att använda. GNU General Public License (GPL) version 2. Gratis att använda och distribuera applikationerna om källkoden också publiceras. Indie licens som är gratis finns för att distribuera applikationer utan källkod. Det finns även olika betalalternativ för support Installation Simpel installation. Programvara: mosync SDK och Sun/Oracle JRE Utvecklingshjälp Mycket dokumentation finns att tillgå från mosyncs Dev Center uppdelat under flera underkategorier för att lätt hitta rätt. API referensen är just en referens, inte 9
14 tillräckligt förklarande och saknar exempel till skillnad från Coronas motsvarighet. Både steg för steg exempel för att snabbt komma igång och skapa en Hello world applikation och video finns. Forum med aktiv Community och snabba svar på frågor. Officiella exempelapplikationer: En hel del, 33st allt från en väldokumenterad Hello world till mer avancerade exempel. Förutom de officiella exemplen finns mosync Cookbook där användare kan dela med sig av exempelkod. Testkörning och kompilering Testkörning görs genom mosync SDKs egna emulator som först måste konfigureras för vilken enhet den ska emulera. Enkel kompilering genom valet Finalize for this profile PhoneGap Specifikationer Plattformar: iphone, Android, Blackberry, WebOS, WP7, Symbian och Bada Val mellan New BSD license eller MIT License Licens: Programmeringspråk: HTML, JavaScript och CSS Databas: W3C Web SQL Database Installation En inte fullt så omfattande installation som Titanium, men ändå en hel del som behöver installeras och konfigureras. Förutom Android SDK behöver PhoneGap även Eclipse eftersom det används som utvecklingsmiljö. PhoneGap är mer som en plugin till Eclipse då det inte har en egen installation utan binds in som ett Androidprojekt. Utvecklingshjälp JavaScript API referens online. Mer liknande dokumentation än en referens då den med detaljerade kodexempel visar hur de flesta funktioner kan implementeras. Förutom API finns en Wiki med dokumentation och guider som t.ex. för att skriva en Hello World app. Community består till största del av en Google grupp som till viss del är sämre än konkurrenternas diskussionsforum då det inte är uppdelat i några underkategorier. Gruppen är däremot aktiv med 26,944 inlägg. Officiella exempelapplikationer: Inga att importera rakt av, däremot finns det en del kodexempel som utvecklaren själv kan förädla. Testkörning och kompilering Testkörning görs precis som på Titanium genom Androids egna emulator som först måste konfigureras. Det går även att testköra direkt på enheten vilket är mycket smidigt. Enkel och snabb kompilering genom export (un)signed application package RhoMobile Rhodes Specifikationer Plattformar: iphone, Android, Blackberry, Windows Mobile och Windows Phone 7 Licens: MIT License men även betalalternativ för utökad support. Programmeringspråk: Ruby, HTML, JavaScript och CSS Databas: Rhom (översätts till SQLite eller HSQLDB beroende på plattform) Installation 10
15 Jag misslyckades att köra applikationer genom Android emulatorn efter installation och konfigurering. Då problemet kvarstod även efter ominstallation av verktyget resultera det i att jag inte gick vidare med det p.g.a. tidsbrist. Utvecklingshjälp Välskrivna guider för att snabbt komma igång med utvecklingen. En Google grupp som Community som är aktivt. Just nu 16,834 inlägg. Officiella exempelapplikationer: Några stycken, mest intressant är ett API exempel som enligt beskrivningen ska demonstrera alla funktioner. Testkörning och kompilering Ej utfört p.g.a. problem med installationen AirPlay SDK 3 Specifikationer Plattformar: Licens: Programmeringspråk: C, C++ Databas: SQLite Installation: Endast AirPlay SDK behöver installeras. iphone, Android, Symbian, WebOS och Bada Utvärderingsperiod på 30dagar, därefter ett antal betalalternativ beroende på val av distributionsplattformar. Utvecklingshjälp: Omfattande API referens med beskrivningar för varenda funktion. Getting Started guider för att snabbt komma igång och skriva en Hello world applikation. Ett officiellt forum som är lättnavigerat med underkategorier och aktiva medlemmar. Officiella exempelapplikationer: Många API exempel som demonstrerar hur funktionerna kan användas. Även mer avancerade exempel finns som t.ex. grafiska spel. Testkörning och kompilering Ej utfört p.g.a. licens med utvärderingsperiod. 3.2 Val av utvecklingsverktyg efter kartläggning Alla ovanstående verktyg uppfyllde det första kriteriet, dvs. det skulle stödja utveckling för både iphone och Android. Alla verktyg förutom mosync hade en dokumenterad databaskoppling, vilket resultera i att mosync valdes bort som kandidat. Då AirPlay SDK vid kartläggningen hade en utvärderingsperiod på endast 30 dagar vilket var mindre än min beräknande tid så valdes även det bort. Rhodes fick jag aldrig att fungera riktigt, och gick därför vidare med kartläggningen. Kvar från listan var Titanium, Corona SDK och PhoneGap. Efter en översiktlig utvärdering av verktygen utifrån specifikationer och testkörning av 3 Från juni 2011 heter produkten Marmalade istället för AirPlay SDK vilket gör verktygets kartläggning föråldrad. 11
16 exempelapplikationer valdes PhoneGap och Corona SDK ut för fortsatt utveckling. Appcelerator Titanium valdes bort p.g.a. tidsbegränsning. 3.3 Utveckling med Android SDK, PhoneGap och Corona SDK Under utvecklingen har verktygen jämförts åt vid implementationen av databaskoppling och gränssnitt. Då det går att implementera och utforma dessa på flera olika vis så har officiella exempel från deras respektive hemsida använts som utgångspunkt för att utvecklingsprocessen skulle bli så likartad som möjligt Gränssnittsutformning med Android SDK Eftersom applikationen utgick ifrån Android Developers Notepad Tutorial [16] är det mesta av gränssnittet redan utformat. De ändringar som gjorts från exempelapplikationen är för att vara säker på att applikationen vore plattformsoberoende om det var möjligt. Detta har åstadkommits genom att sköta navigeringen med knappar längst ner på skärmen istället för att som i guiden använda menyknappen på telefonen. Även användningen av long-clicks har tagits bort vilket resulterar i att funktionen för att ta bort noten nu ligger direkt på vyn som visar noten. Utformningen av gränssnittet görs huvudsakligen i XML. Den slutgiltiga utformningen blir då att vi genom XML har definierat tre vyer: 1. List-vyn: notes_list.xml med lista på noterna samt knapparna Create Note och Exit (figur 3). 2. Skapa-vyn: notes_edit.xml som är lite omgjord från guiden genom att den nu bara kan lägga till noter (figur 4). 3. Not-vyn: notes_view.xml som visar den valda noten och dess information samt med valen Delete och Back (figur 5). Figur 3,4,5. Android SDK: List-vyn, skapa-vyn och not-vyn. Navigeringen sköts genom new Intent() och därefter definieras XML-vyn med exempelvis setcontentview(r.layout.note_view) Gränssnittsutformning med PhoneGap Gränssnittet har skapats av ren HTML samt funktioner och CSS från ramverken jquery och jquerymobile. Dessa tillhandahåller ett snyggt och flexibelt gränssnitt för utvecklaren, samt en hel del betydelsefulla och användbara funktioner för mobila applikationer. Ett exempel är navigeringsfunktionen $mobile.changepage vilken 12
17 ändrar vy med en popup-effekt liknande den som ofta ses på andra nativa applikationer. Gränssnittet består av tre HTML-dokument som bildar olika vyer: 1. List-vyn: Index.html visar en översiktsvy med lista på valbara noter, samt knapparna Create Note och Exit (figur 6). 2. Skapa-vyn: Add.html visar en vy där användaren lägger till noter med hjälp av olika inmatningsfält, samt knapparna Create och Back (figur 7). 3. Not-vyn: Note.html visar vyn för den valda noten samt knapparna Delete och Back (figur 8). Figur 6,7,8. PhoneGap: List-vyn, skapa-vyn och not-vyn Nedan visas funktionen för att byta till not-vyn efter att användaren har valt en av de inlagda noterna: function gotonote(id) { //Spara ID för senare användning selectedid = id; //Ändra sida till note.html $.mobile.changepage('note.html', 'pop',false, false); } Gränssnittsutformning med Corona SDK Då Corona enbart använder sig av LUA som utvecklingsspråk blir det en hel del kod att skriva för att åstadkomma det som PhoneGap med jquery åstadkom med några få rader. Vyerna skapas genom att vi ritar upp objekten från grunden och därefter lägger in dessa i s.k. display groups 4. Nedan visas hur en lista med noterna skapas och sedan stoppas in i displaygruppen listscreen (figur 9): 4 En typ av behållare för objekt i Corona SDK. 13
18 listscreen = display.newgroup() function createlist() if mylist then mylist:removeself() end mylist = tableview.newlist{ data=noter, default="listitembg.png", over="listitembg_over.png", onrelease=listbuttonrelease, top=display.screenoriginy + 45, bottom=display.screenoriginy - 25, backgroundcolor={0, 0, 0 }, height = 12, callback=function(row) local t = display.newtext(row.notename, 0, 0, native.systemfontbold, 16) t:settextcolor(255, 255, 255) t.x = math.floor(t.width/2) + 12 t.y = 46 return t end } listscreen:insert(mylist) end Ungefär på samma vis skapas not-vyn (figur 10) och skapa-vyn (figur 11), fast istället för tableview fyller vi displaygruppen med ett rektangelobjekt istället. Funktionen transition.to() används för att navigera mellan vyerna, vilken kan liknas med Android SDKs new Intent(). Figur 9,10,11. Corona SDK: List-vyn, not-vyn och skapa-vyn Gränssnittsutformning - sammanfattning Att utforma gränssnitt i Android SDK är relativt enkelt eftersom det finns ett flertal olika visuella verktyg för gränssnittsutformning av XML, t.ex. genom Eclipse. Genom att koppla aktiviteterna till olika vyer blir uppdelningen mellan logik och gränssnitt mycket överskådlig, vilket underlättar utvecklingen. 14
19 Liknande det vi gör med XML i Android SDK gör vi med HTML och CSS i PhoneGap. Det finns även en uppsjö olika HTML-utvecklingsverktyg vilket gör det lätt att skapa snygga gränssnitt. Genom användning av jquery blir sidorna levande och interaktiva vilket är viktigt för en mobilapplikation. Förutom det tillhandahåller det även en CSS-mall som gör att de visuella objekten ser bra ut med minimalt med kod för utvecklaren, och även lätt kan ändra färgschema genom ett enkelt attributsbyte. Till skillnad från de övriga finns det inga verktyg till Corona för designutveckling, så all grafik måste ritas upp med LUA-kod. Ett genomgående tema när gränssnittsutveckling görs här är att det krävs flera rader källkod för att göra vad som kan tyckas vara en enkel sak. Det blir snabbt rörigt i koden redan efter skapning av ett tomt skal med bakgrund och några knappar med text. Sammanfattningsvis är min slutsats att gränssnittsutformning är lättast att göra i PhoneGap just p.g.a. möjligheterna med HTML och CSS. Besvärligast är det i Corona eftersom det inte finns några designverktyg, samt att det jämförelsevis är fler rader källkod som behöver skrivas för att skapa t.ex. en knapp jämfört med samma objekt i HTML Databaskoppling med Android SDK Android använder sig av SQLite för att manipulera data. Då exemplet tillhandahåller en färdigskriven databasadapter var det onödigt att skriva en egen. Genom den sköts alla transaktioner vilket gör uppdelningen av databaslogik och annan logik lätt överskådlig. Nedan visas funktionen createit() som skapar databasen genom SQLiteDatabase när applikationen körs: private SQLiteDatabase mdb; private static final String DATABASE_CREATE = "create table notes (_id integer primary key autoincrement, " + "title text not null, body text not null);"; public void createit() { mdb.execsql("drop TABLE IF EXISTS notes"); mdb.execsql(database_create); } Därefter är det möjligt att nå de olika funktionerna genom klassen mdbhelper, som demonstreras här i funktionen filldata() där vi hämtar namnen på noterna och visar dessa i list-vyn: private void filldata() { Cursor notescursor = mdbhelper.fetchallnotes(); startmanagingcursor(notescursor); String[] from = new String[]{NotesDbAdapter.KEY_TITLE}; int[] to = new int[]{r.id.text1}; SimpleCursorAdapter notes = new SimpleCursorAdapter(this, R.layout.notes_row, notescursor, from, to); setlistadapter(notes); } 15
20 3.3.6 Databaskoppling med PhoneGap Eftersom PhoneGap skapar webbapplikationer 5 så används en databas som kallas Web SQL Database. Det är en databas baserad på SQLite som fungerar på de webbläsare som använder sig av renderingsmotorn WebKit [28]. Jag utgick från PhoneGaps egna databasexempel i JavaScript och skapade en databaseadapter.js fil. Målet var att ha en plats där enbart all databaslogik skulle ske precis som i Androids SDK, men det visade sig att det blev enklare att urskilja och dessutom mindre kod genom att blanda logiken istället, särskilt p.g.a. jquery. Nedan är ett exempel för onload() funktionen där både databasen och tabellerna skapas om den inte redan är skapad: //Skapa DB Handtag db = opendatabase(shortname, version, displayname,maxsize); db.transaction(function(tx){ //Skapa tabell tx.executesql( 'CREATE TABLE IF NOT EXISTS Notes(NotesId INTEGER NOT NULL PRIMARY KEY, NotesName TEXT NOT NULL, NotesText TEXT NOT NULL)', [],nullhandler,errorhandler);},errorhandler,successcallback); ListDBValues(); } Genom användning av tidigare nämnda jquery för bl.a. händelsehantering och interaktion uppdateras listan med noteringar. Exemplet nedan visar hur uppdateringsfunktionen fungerar genom att uppdatera mynotes elementet i list-vyn med resultatet från SQL-anropet Select: db.transaction(function(transaction) { transaction.executesql('select * FROM Notes;', [], function(transaction, result) { if (result!= null && result.rows!= null) { for (var i = 0; i < result.rows.length; i++) { var row = result.rows.item(i); $(".mynotes").append('<li data-icon="false" onclick="gotonote(id);" id="' + row.notesid + '"> <a href="#">' + row.notesname + '</a></li>'); } $(".mynotes").listview('refresh'); } },errorhandler); },errorhandler,nullhandler); return; } Databaskoppling med Corona SDK Corona använder SQLite som databas och LuaSQLite för att manipulera den. SQLite är inbyggt i både iphone och Android vilket gör att det fungerar likadant. För att skapa databaskopplingen utgick jag ifrån exempelapplikationen som följde med installationen. En fördel med Corona vid utformningen av databaskopplingen är att det effektivt och smidigt går att separera den ifrån gränssnittet då vi kan nå funktioner och variabler globalt. Som vanligt måste databasen först skapas och definieras för att vara arbetbar: 5 En applikation beroende av en webbläsare för att vara körbar. 16
21 //Inludera require "sqlite3" //Öppna eller skapa data.db samt tabeller local path = system.pathforfile("data.db", system.documentsdirectory) db = sqlite3.open( path ) local tablesetup = [[CREATE TABLE IF NOT EXISTS notes (NotesID INTEGER PRIMARY KEY, NotesName, NotesText);]] //Kör transaktionen db:exec(tablesetup) För att därefter uppdatera list-vyn som vi tidigare gjorde i gränssnittsutformningen behöver vi bara ändra variabeln i tableview.newlist med data som vi kallade notesdata: //Definiera variabler local notesdata = {} local i = 0 //Loopa igenom notes och sätt data for row in db:nrows("select * FROM notes") do notesdata[i] = {} notesdata[i].notename = row.notesname notesdata[i].noteid = row.notesid i = i+1 end Databaskoppling - sammanfattning Databaskopplingskoden är väldigt lik varandra i de olika verktygen. Ett handtag till databasklassen skapas och genom den utförs de olika transaktionerna. Web SQL kräver lite mer kod än vad de övriga gör, då transaktionskoden även innehåller funktioner för felmeddelningshantering osv. Databasmanipulation genom LuaSQLite är också enkelt då det krävs minimalt med kod för att utföra transaktioner. Corona SDKs klass SQLite3 liknar Android SDKs SQLiteDatabase, transaktionerna utförs med funktionen :exec( SQL Statement ) vilken fungerar liknande ExecSQL( SQL Statement ) i Android. 3.4 Prestandamätning Prestandamätningar har gjorts genom att mäta tiden innan och efter exekveringen av en funktion, och därefter avläsa tiden i logcat. Alla verktyg använder olika funktioner för att åstadkomma loggningen, men den fungerar i princip likadant. Resultaten är gjorda på applikationen installerad på smartphonen och genom att före och efter varje mätning installera om applikationen samt tömma RAM-minnet på enheten. Detta för att det inte ska finnas kvar data från applikationen i minnet, vilket annars kan påverka mätningarna Notapplikation skapad med Android SDK Genom funktionen System.currentTimeMillis() har mätningar gjorts i den Android skapade notapplikationen. Databasmätningen har gjorts genom att mäta tiden innan SQLiteDatabase execsql() och sedan logga tiden efter funktionen körts. Gränssnittet har mätts genom att starta mätning precis innan vyn byts med Intent i = new Intent(this, NoteView.class). Därefter har tiden loggats efter oncreate() funktionen har körts klart i den startade aktiviteten. 17
22 Resultatet för mätningen av exekveringstider kan ses i tabellen i bilaga 1. De slutsatser vi kan dra ifrån tabellen är att databasfunktionerna är mycket snabba och exekveringstiderna ligger ungefär på samma nivåer under alla körningar. Gränssnittsmätningarna visar också på snabba resultat vid bytet av vy, vilket gör att applikationen känns responsiv Notapplikation skapad med PhoneGap Applikationen skapad genom PhoneGap har mätts med hjälp av funktionen +new Date(). Databasmätningen har gjorts genom att mäta tiden innan db.transaction() körs och därefter vänta på ett lyckat svar och logga tiden genom Console.log(). Gränssnittet har mätts genom att börja mätningen innan vyn byts med $.mobile.changepage funktionen och därefter har det med hjälp av jquery bundit en funktion till $('#noteview').live('pageshow') som loggar tiden när sidan visas, liknande oncreate() för Android. Resultatet för mätningen av exekveringstider kan ses i tabellen i bilaga 2. I databasmätningen kan vi se en liten skillnad på runt 100ms för den totala mätningen. Den post som utmärker sig här är Ta bort en not som utförs avsevärt långsammare genom JavaScript med anrop till Web SQL databasen. Gränssnittsmätningen visar stora skillnader på exekveringstiden för navigeringen. Det tog cirka en halv sekund att byta vy vilket gör att applikationen inte känns lika responsiv som den som utvecklades i ren Android-miljö Notapplikation skapad med Corona SDK Coronas tider mättes med funktionen system.gettimer(). Databasmätningen har därefter gjorts genom att logga tiden efter avslutad transaktion med db:exec(). Gränssnittsmätningen är gjord genom att starta tidtagningen i listbuttonrelease() respektive createbuttonpress() med kopplingar till funktionen för byte av displaygrupp. Funktion skapar även displaygruppen och loggningen görs när den visas. Resultatet för mätningen av exekveringstider kan ses i tabellen i bilaga 3. Exekveringstiden för databasmätningen är ungefär likadan som i PhoneGap. Precis som där är det Ta bort not anropet som är långsammare. Gränssnittsmätningen visar att tiden för ändring av vy däremot är mycket snabb, vilket mer liknar Androids motsvarighet Prestandamätning - sammanfattning Sammanfattningsvis har notapplikationerna mycket liknande resultat när det kommer till exekveringstiden för databastransaktionerna. Tabell 1 visar sammanfattning av resultaten. Mer detaljerade resultat finns i bilaga 1,2 och 3. Det mest anmärkningsvärda är att tiden för att ta bort en not ur databasen skiljer sig markant då transaktionen i Android SDK tar cirka 100ms mindre än de övriga. Då de andra databastiderna är liknande för de olika applikationerna och genom försäkran på att noten är borttagen med testkod kan det konstateras att i just det här fallet är notapplikationen utvecklad i Android SDK snabbast på att ta bort en rad ur databasen. Utöver det kan vi även dra slutsatsen att Corona SDK är långsammast på att Skapa fyra noter, då den exekveringstiden är snäppet högre än de andra. I mätningen av gränssnittet visar det tydligt att PhoneGap är långsammare än de övriga när det laddar in ett nytt HTML-dokument genom $mobile.changepage. Tidsskillnaden mellan Corona SDK och Android SDK är väldigt liten och borde inte uppmärksammas av användaren av applikationen. 18
23 Medeltid (ms) Android SDK PhoneGap Corona SDK DB: Skapa tabell DB: Skapa fyra noter DB: Ta bort en not UI: Notval UI: Skapa not DB+UI Totalt Tabell 1. Sammanfattning av prestandamätning. 3.5 Minnesanvändning Då minnesanvändningen i Linuxliknande operativsystem som Android är ett mycket komplicerat område är resultaten bara en approximation. Däremot borde vi kunna dra slutsatser om vi kan se att skillnaderna mellan minnesanvändningen är stora. Se tabell 2 för resultat av Pss- och Uss-värden från de tre applikationerna under körning efter en not är skapad. Alla värden från respektive applikations minnesdump kan ses i bilaga 4,5 och 6. Det vi kan se är att skillnaden mellan PhoneGap applikationen och de andra är mycket stor, samt att en applikation utvecklad i ren Android-miljö tar minst plats. PhoneGaps höga resultat kan delvis bero på WebView komponenterna samt användningen utav jquery. Genom att bara köra applikationen med jquery utan JavaScript kan minnesanvändningen minskas till runt hälften, vilket fortfarande är mer än de övriga. Alltså är det inte troligt att det är den egna koden som skapar den stora skillnaden, även om det är möjligt att det finns en minnesläcka någonstans. Minne (kb) Android SDK PhoneGap Corona SDK Pss Uss Tabell 2. Minnesanvändning. 19
24 4 Diskussion Då ämnet täcker ett ganska stort område finns det en hel del att diskutera. Mina metodval är inte självklara, utvärderingen hade självfallet kunnat göras på andra sätt. Diskussionen besvarar de val jag gjort samt de frågor som uppstått under processen. Även en sammanfattning av mina åsikter efter utvecklingen om verktygens fördelar och nackdelar har tagits upp. 4.1 Android/iOS Det fanns flera anledningar till att jag valde att bara fokusera på Android-plattformen. För flera av verktygen var man tvungen att använda Mac OS X som operativsystem och/eller inneha ett utvecklarkonto hos Apple, vilket kostar 99$ per år. Förutom det så fanns det helt enkelt inte tid till att sätta mig in i utveckling för båda miljöerna, eftersom det blev dubbelarbete med installationer och konfigurering. Genom att Android SDK är gratis vägde det tyngst i valet mellan dessa plattformar. 4.2 Applikationsval Förutom att spara data lokalt i databasen på smartphonen ville jag även synka databasen till en server för att externt spara data liknande det som beskrivs i Smartphone Enterprise application integration [19]. Men eftersom det kan bli ett andra steg avgränsade jag mig till att för tillfället enbart arbeta med en lokaldatabas utan synkning. Valet föll på Android developers Notepad-exempel [16] eftersom det var det bästa databasexemplet jag hittade samt även hade en rimlig omfattning. För att vara säker på att det inte skulle bli några problem att replikera den i de andra verktygen valde jag att ta bort funktioner som teoretiskt kan bli ett problem (t.ex. användningen av menyknappen). Detta gjordes även för att applikationen skulle bli multiplattformsvänlig genom att enbart kräva en tryckkänslig skärm. 4.3 Prestandamätning och minnesanvändning Båda snabba databastransaktioner och ett responsivt gränssnitt är viktigt då de hänger ihop med varandra. De mätpunkter jag gjorde kan diskuteras, men valet föll på att mäta tiden för att initiera databasen och skapa fyra rader i databasen, samt sedan ta bort en rad då jag ansåg det mer representerar ett verkligt användningsfall. Det hade varit intressant att även göra en användarstudieundersökning på hur applikationerna upplevs av användare, då det skulle ge möjlighet att se om resultaten från gränssnittsmätningen också speglar deras uppfattning. Eftersom det inte fanns tid för det så har jag nöjt mig med att konstatera att enligt min subjektiva upplevelse så finns det ett samband. Metoden för mätning av minnesanvändning är baserad på svaret till frågan How to discover memory usage of my application in Android från Stackoverflow [24]. Det framkommer dock att det är svårt att tyda minnesvärderna, och att det inte är helt klart hur mycket minne en process tar upp då en del av minnet är delat med andra processer. Jag tolkar svaret som att det mest korrekta värdet att kolla på är Uss vilket även förespråkas på både Texas Instrument [27] och Elinux [25], och därefter dragit mina slutsatser utifrån det. 20
25 4.4 Kartläggning och verktygsval för utvärdering Kartläggningen av verktygen gjordes i två omgångar, vilket inte var optimalt då detta är ett område under snabb utveckling. AirPlay SDK ändrade t.ex. namn till Marmalade under kartläggningen och deras regler för licens blev generösare vilket möjligtvis hade resulterat i att AirPlay SDK utvärderats istället för Corona SDK om kartläggningen utförts senare. Jag fick även igång Rhodes RhoMobile efter att ha laddat hem en nyare version och installerat om Ruby, vilket även det kunde ändrat utgången av val av verktyg för utvärdering. Många av verktygen är intressanta, särskilt mosync då jag gillade deras IDE för utveckling samt den interna emulatorn. Tyvärr hade det inte någon dokumenterad databas med exempel. Då PhoneGap och Titanium Appcelerator fungerar liknande varandra genom att göra en applikation av HTML-kod var det känslan som avgjorde, och den föll på PhoneGap eftersom integrationen i Eclipse IDE var bra. Jag tror utvärderingen av Titanium hade blivit mycket lik PhoneGaps när det kommer till gränssnittsutformning och databaskoppling. 4.5 Gränssnittsutformning och prestandamätningar Det är möjligt att åstadkomma mer eller mindre likadana visuella gränssnittsresultat på olika sätt i de olika verktygen. I PhoneGap baserade jag applikationen på ett exempel med jquery som använde ett annat HTML-dokument för att generera en ny vy med changepage. Det hade varit möjligt att få samma resultat med endast ett dokument genom att dölja/visa objekt och detta hade möjligtvis resulterat i snabbare mättider. PhoneGap källkoden bör kunna kompileras i Titanium med några små modifieringar. Det kunde varit intressant att undersöka prestanda- och minnesmätningen i Titanium också, eftersom jag är osäker på om den kommer vara samma. I Corona SDK baserade jag applikationen på exemplet List-View. Här är jag däremot osäker på om det är möjligt att få en större skillnad på mättiderna genom användning av ett annat designalternativ. För mycket ändringar gör även att applikationen inte liknar den ursprungliga Notepad applikationen. 4.6 Verktygens lämplighet för utveckling av liknande applikationer PhoneGap var absolut enklast att arbeta med då det är enkelt att designa gränssnitt samt att det finns mycket information om HTML och JavaScript. jquery gjorde det enkelt att göra applikationen interaktiv med få rader källkod. Genom att integrera PhoneGap med Eclipse IDE så kunde applikationen testas precis som vanligt. Nackdelen med PhoneGap var att notapplikationen var slöare än de andra, vilket märktes främst vid navigationen till not-vyn. Sammanfattningsvis anser jag att PhoneGap lämpar sig bra till att utveckla liknande applikationer då det går snabbt att få ett resultat genom HTML och JavaScript. Om prestanda däremot är det viktigaste för utvecklaren rekommenderar jag Corona SDK. Corona SDK saknar dock en egen eller integrerad IDE, vilket resulterade i att källkoden skrevs i tredjepartsprogrammet Notepad++. Coronas egna hemsida erbjöd många ingående exempel vilket gjorde att det var lätt att påbörja utvecklingen, men utöver det finns det väldigt få andra källor att tillgå för information. En nackdel med Corona är att det tar längre tid att utforma gränssnittet än med PhoneGap, eftersom det krävs fler rader källkod samt att inga tredjepartsverktyg för designutveckling finns att tillgå. Testningen gick enkelt då den tillhandahåller en egen emulator, dock så fungerade vissa funktioner inte i den som t.ex. en editbox. Detta var en stor nackdel då 21
26 applikationen först var tvungen att kompileras för att testa dessa funktioner vilket tog längre tid än i PhoneGap. Sammanfattningsvis så anser jag att även Corona SDK lämpar sig för dessa typer av applikationer, då verktyget producerar en applikation med liknande prestanda som en utvecklad i ren Android-miljö. Men eftersom PhoneGap är det utvecklingsverktyg som kräver minst tid för att utveckla en liknande applikation anser jag att det är bäst lämpat för enklare applikationer som använder sig av en databas. Dessutom är det gratis. 4.7 Rekommendation för fortsatt utvärdering Eftersom applikationerna kan kompileras till flera olika plattformar genom verktygen rekommenderas det att göra detta även till ios, samt att konstruera en liknande applikation genom ios SDK och utvärdera dessa. Kommer resultaten att vara liknande, dvs. kommer applikationen byggd i ios SDK vara snabbare än de övriga? Det rekommenderas även att göra en användarstudieundersökning på de olika applikationerna, vad tycker användarna? Speglar resultaten prestandamätningarna? Eftersom PhoneGap och Titanium liknar varandra genom att de båda tillverkar applikationer av HTML hade det varit intressant att jämföra deras prestanda. Utöver detta kan applikationen utvecklas med t.ex. en funktion för att synka den lokala databasen med en central, eller mer avancerade funktioner, för att undersöka verktygens begränsningar. 22
27 5 Slutsatser Slutsatser jag dragit från resultaten är att det stämmer att apparna som utvecklats genom multiplattformsutvecklingsverktygen överlag har sämre prestanda än den som utvecklades med Android SDK. Exekveringstiden för databaslogiken visar att alla tre verktyg har liknande resultat, förutom på mätpunkten Ta bort en not, där är Android SDKs applikation snäppet snabbare. Resultaten av gränssnittets prestanda visar att PhoneGaps applikation är väsentligt långsammare än de övriga verktygens, och Android SDKs och Coronas SDKs motsvarighet har jämförbar prestanda. Även på minnesområdet är Androids SDKs applikation bättre genom att använda mindre minne än de övriga. Om vi bara analyserar det minne som garanterat frigörs om processen avslutas så använder Corona SDKs applikation ungefär dubbelt så mycket som Androids SDKs motsvarighet. PhoneGaps notapplikation använder sju gånger så mycket minne som Androids SDKs. Verktygens utvecklingsprocess för databasimplementationen är lik varandra genom att ett handtag till databasklassen skapas och genom den utförs transaktionerna. Gränssnittsutformningen skiljer sig åt väsentligt då de i PhoneGap (HTML/CSS) och Android SDK (XML) är möjligt att använda tredjeparts program för att designa gränssnittet. Det är inte möjligt i Corona SDK, vilket gör gränssnittsutformning tidskrävande. Kartläggningen resulterade i att valet av verktyg föll på PhoneGap och Corona SDK, då de passade bäst in på kriterierna i kapitel 2.4. Båda verktygen visade sig även vara väl lämpade till dessa typer av applikationer, dock var de inte perfekta. PhoneGaps stora fördel är att utvecklingsprocessen är snabb då gränssnittsutformningen är enkel med HTML och CSS. Nackdelen var dålig prestanda. För Corona SDK var resultat det omvända. 23
28 6 Referenser [1] Canalys, Google s Android becomes the world s leading smart phone platform (Jan 2011) [Online] Available: [2] DN.se, Alla villa ha appar (2011) [Online] Available: [3] A. I. Wasserman, "Software engineering issues for mobile application development," in Proc. of the FSE/SDP workshop on Future of software engineering research, Santa Fe, New Mexico, USA, 2010, pp [4] A. Puder, "Cross-compiling Android applications to the iphone," in Proc. of the 8th International Conference on the Principles and Practice of Programming in Java, Vienna, Austria, 2010, pp [5] P. Biao, X. Kun, and L. Lei, "Component-based Mobile Web Application of Cross-platform," in Computer and Information Technology (CIT), 2010 IEEE 10th International Conference, Bradford, 2010, pp [6] M. D. Bloice, F. Wotawa, and A. Holzinger, "Java's alternatives and the limitations of Java when writing cross-platform applications for mobile devices in the medical domain," in Proc. of the ITI st International Conference, Dubronvik, 2009, pp [7] Faruk Ateş, Native vs. Web Apps (2011) [Online] Available: [8] Martin Fowler, CrosPlatformMobile (2011) [Online] Available: [9] RhoMobile s Rhodes (2011) [11] PhoneGap (2011) [10] Appcelerator (2011) [12] mosync (2011) [13] Ansca Mobile s Corona SDK (2011) [14] AirPlay SDK (2011) [15] Mashable, 5 Cross-Platform mobile development tools (2011) [Online] Available: [16] Android Developers, Notepad Tutorial (2011) [Online] Available: 24
29 [17] IEEE Explore (2011) [18] ACM Digital Library (2011) [19] Smartphone enterprise application integration, white paper, Rhomobile inc., Mars 2011 [20] A. Smith, Mobile Database Applications Importance (2011) [Online] Available: [21] Sun Microsystems, Java performance first edition [Online] Available: [22] Android developer, logcat (2011) [Online] Available: [23] Hoccer, Measuring performance in the Android SDK (2011) [Online] Available: [24] Stackoverflow, How to discover memory usage of my application in Android (2011) [Online] Available: [25] ELinux, Android memory usage (2011) [Online] Available: [26] Android developer, Android Debug Bridge (ADB) (2011) [Online] Available: [27] Texas Instruments, Android memory analysis (2011) [Online] Available: [28] The WebKit Opensource project (2011) 25
30 Bilaga 1. Exekveringstid för Android SDKs notapplikation Funktion: K. 1 K. 2 K. 3 K. 4 K. 5 K. 6 K. 7 K. 8 K. 9 K. 10 Medel DB: Skapa tabell DB: Skapa fyra noter DB: Ta bort en not DB: Total UI: Notval UI: Skapa not UI: Total DB+UI Total: K = Körning DB = Databas UI = Gränssnitt Alla resultat i ms 26
31 Bilaga 2. Exekveringstid för PhoneGaps notapplikation Funktion: K. 1 K. 2 K. 3 K. 4 K. 5 K. 6 K. 7 K. 8 K. 9 K. 10 Medel DB: Skapa tabell DB: Skapa fyra noter DB: Ta bort en not DB: Total UI: Notval UI: Skapa not UI: Total DB+UI Total: K = Körning DB = Databas UI = Gränssnitt Alla resultat i ms 27
32 Bilaga 3. Exekveringstid för Corona SDKs notapplikation Funktion: K. 1 K. 2 K. 3 K. 4 K. 5 K. 6 K. 7 K. 8 K. 9 K. 10 Medel DB: Skapa tabell DB: Skapa fyra noter DB: Ta bort en not DB: Total UI: Notval UI: Skapa not UI: Total DB+UI Total: K = Körning DB = Databas UI = Gränssnitt Alla resultat i ms 28
33 Bilaga 4. Minnesdump av Android SDKs notapplikation 29
34 Bilaga 5. Minnesdump av PhoneGaps notapplikation 30
35 Bilaga 6. Minnesdump av Corona SDKs notapplikation 31
KARTLÄGGNING OCH JÄMFÖRELSE AV MULTIPLATTFORMSUTVECKLINGS- VERKTYG FÖR SMARTPHONES
Malskapada v Henrik KARTLÄGGNING OCH JÄMFÖRELSE AV MULTIPLATTFORMSUTVECKLINGS- VERKTYG FÖR SMARTPHONES SURVEY AND COMPARISON OF CROSS PLATFORM MOBILE APPLICATION DEVELOPMENT TOOLS FOR SMARTPHONES Examensarbete
Android översikt. TDDD80 Mobila och sociala applikationer
Android översikt TDDD80 Mobila och sociala applikationer Översikt Köra app på mobil / emulator Android Studio introduktion Android kodning Android labb 1 Köra på mobil / emulator Developer mode på mobilen
Dedikerad Server Vilket operativsystem ska jag välja? Är ni i startgroparna och ska beställa en dedikerad server eller en virtuell server?
Vilket operativsystem ska jag välja? Är ni i startgroparna och ska beställa en dedikerad server eller en virtuell server? Att välja operativsystem kan vara svårt. Det kan vara svårt att förstå vilka konsekvenser
Vis it. jquery jquery används lite överallt i appen på olika sätt. Det främsta användningsområdet är vid selektering och manipulering av HTML element.
Vis it Introduktion Vi har skapat den webbaserade appen Vis it som bygger på att användare kan ta bilder på och lägga upp sevärdheter via sin mobiltelefon. Dessa sevärdheter är positionsbaserade vilket
Home Storage Manager
Home Storage Manager Johan Fohlin 2014 Examensarbete högskoleexamen, 15HP Datavetenskap Internetteknologi Handledare: Anders Jackson Examinator: Ann-Sofie Östberg Home Storage Manager av Johan Fohlin Akademin
App-klient för smartphones... 2. Power BI... 3. Arbetsflöde... 4. CRM Online... 5. Webb-klienten... 6. Dokumenthantering... 7. Molnet...
Nyheter i Dynamics NAV 2016 Innehåll App-klient för smartphones... 2 Power BI... 3 Arbetsflöde... 4 CRM Online... 5 Webb-klienten... 6 Dokumenthantering... 7 Molnet... 8 Elektronisk fakturering... 9 App-klient
GYMKEEPER ANDREAS SÖDERSTRÖM
GYMKEEPER ANDREAS SÖDERSTRÖM 20120529 ABSTRAKT En post mortem på mitt ios-projekt. Utmaningen låg i att under 10 veckors tid sätta sig in i en plattform och programspråk jag aldrig använt förut. Jag har
Slutrapport YUNSIT.se Portfolio/blogg
Slutrapport YUNSIT.se Portfolio/blogg RICKARD HANSSON 2012-06-04 Abstrakt Rapporten du har i din hand kommer handla om mitt projektarbete som jag genomfört under tio veckor för utbildningen Utvecklare
Översikt. Installation av EasyPHP 1. Ladda ner från http://www.easyphp.org/ Jag använder Release 5.3.4.0 2. Installera EasyPHP.
Laboration 1 Översikt 1. Att komma igång med laborationsmiljön a. installera Aptana Studio 3 b. Installera EasyPHP 2. Testa lite programmering a. Testa enkla uppgifter b. Testa automatiskt 3. Skapa inloggningsformulär
Post Mortem för Get The Treasure!
Post Mortem för Get The Treasure! Av: Emil Lindberg - Grupp 15 Vi skulle göra ett action multiplayerspel som spelades över nätverket. Vilket vi nästan lyckades göra. Tiden tog slut och programmerarna han
Mina listor. En Android-applikation. Rickard Karlsson 2013-06-09. Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.
Mina listor En Android-applikation Rickard Karlsson 2013-06-09 Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.se Innehållsförteckning 2. Innehållsförteckning 3. Abstrakt 4. Inledning/bakgrund
Institutionen för datavetenskap Department of Computer and Information Science
Institutionen för datavetenskap Department of Computer and Information Science Examensarbete MoSync för multi-plattformsutveckling till smartphones av Simon Fransson LIU-IDA/LITH-EX-G--13/007--SE 2014-01-21
Swedbank Mobile Loadtesting. LoadRunner 11.04 Mobile App protocol
Swedbank Mobile Loadtesting LoadRunner 11.04 Mobile App protocol Bakgrund Mission: Prestandatesta mobilt backend Typ: RESTful tjänst Underlag: Dokumenterat URI och API (Uniform Resource Identifier, Application
Slutrapport för JMDB.COM. Johan Wibjer 2012-06-03
Slutrapport för JMDB.COM Johan Wibjer 2012-06-03 Abstrakt Den här rapporten kommer handla om mitt projekt som har handlat om att gör en webb sida för ett personligt media bibliotek, hur jag har jobbar
Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)
Kom igång med LUPP 6.1
Kom igång med LUPP 6.1 Introduktion... 3 Installation... 7 Logga in... 9 Skapa användare... 11 Lägg in organisation, stationer och enheter... 13 Öppna Verksamhetsöversikten... 15 Hjälp i LUPP... 17 1 1.
Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08
Programmering A C# VT 2010 Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Innehåll Hjälp och referenser... 3 Kap 1 Introduktion... 3 Steg för steg... 3 Kapitel 2 Variabler...
Manual C3 BMS för Android-telefoner
- för dig som gillar ovanliga fåglar 2012-09-24 Manual C3 BMS för Android-telefoner Hur fungerar det? Larmsystemet består av en server och databas i Stockholm samt applikationen C3 BMS i telefonen. Trafiken
ÅGIT PRESENTERAR FILR SMIDIG OCH SÄKER FILÅTKOMST OCH DELNING
ÅGIT PRESENTERAR FILR SMIDIG OCH SÄKER FILÅTKOMST OCH DELNING Novell Filr är som Dropbox, men betydligt säkrare. Från och med nu kan alla anställda och studerande inom Ålands gymnasium arbeta med sina
Innehållsförteckning Sida 3 Om IT-Högskolan Sida 4-5.NET-utvecklare Sida 6-7 Applikationsutvecklare till iphone och Android Sida 8-9 Mjukvarutestare
YH-utbildningar 2016 Innehållsförteckning Sida 3 Om IT-Högskolan Sida 4-5.NET-utvecklare Sida 6-7 Applikationsutvecklare till iphone och Android Sida 8-9 Mjukvarutestare Sida 10-11 Webbutvecklare CMS 2
Android - En översikt samt titt på utvecklingsmiljö. Kalle Prorok 12 nov 2013
Android - En översikt samt titt på utvecklingsmiljö Kalle Prorok 12 nov 2013 Översikt Android Översikt Struktur Eclipse Runtomkring Emulator/Simulator Debugging 2013-11-12 Kalle Prorok 3 Android - översikt
VIDEODAGBOKEN. Individuellt Mjukvaruutvecklingsprojekt. En dagbok i videoform online. Robert Forsgren (rf222ce) UD12 2013-06-05
VIDEODAGBOKEN En dagbok i videoform online. Individuellt Mjukvaruutvecklingsprojekt Robert Forsgren (rf222ce) UD12 2013-06-05 Abstrakt: Den här rapporten kommer ta upp mitt projekt Videodagboken, en dagbok
Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2015.Q1
Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2015.Q1 För att 3L Pro skall fungera krävs att nedanstående hårdvarukrav och mjukvarukrav är uppfyllda. Viktigt är att tänka på att
Snabbguide Visma Compact API Version 5.1 Copyright 2006-2008 Visma Spcs AB Visma Compact API
Snabbguide Visma Compact API Version 5.1 Copyright 2006-2008 Visma Spcs AB Visma Compact API Introduktion Visma Compact API är ett programmeringsgränssnitt framtaget för att underlätta integration av Visma
FileMaker Pro 13. Använda Fjärrskrivbord med
FileMaker Pro 13 Använda Fjärrskrivbord med FileMaker Pro 13 2007-2013 FileMaker, Inc. Med ensamrätt. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, Kalifornien 95054, USA FileMaker och Bento är
FileMaker. Köra FileMaker Pro 10 på Citrix Presentation Server
FileMaker Köra FileMaker Pro 10 på Citrix Presentation Server 2004 2009, FileMaker, Inc. Med ensamrätt. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, Kalifornien 95054, USA FileMaker, filmappslogotypen,
Objektsamlingar i Java
1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och
Manual för version V2
Innehållsförteckning 1. Om 2. Installera Administration 3. Programmets skrivbord 4. Lägga upp din första kund 5. Kontaktpersoner 6. Besiktningsadresser 7. Kontrollpunkter/Besiktningspunkter 8. Koppla kontrollpunkter/besiktningspunkter
Användarguide för anslutning till Treserva och TES 2016-02-29. Användarguide för anslutning till Treserva och TES
Användarguide för anslutning till Treserva och TES Innehållsförteckning Systemkrav... 3 Symantec VIP Access... 4 För tvåfaktorsautentisering via mobiltelefon... 4 För två-faktorsautentisering via dator...
Så kör du Android-appar i Windows eller Mac OS!
Så kör du Android-appar i Windows eller Mac OS! 7 Hämta appar från Google Play 7 Kom igång helt gratis 7 Här är verktygen du behöver. Bluestacks gör din dator till en Android-platta Det finns många kul
A" utveckla kartor med responsiv design. Johan Lah8 Geografisk IT- utvecklare Stadsbyggnadskontoret, Malmö stad
A" utveckla kartor med responsiv design Johan Lah8 Geografisk IT- utvecklare Stadsbyggnadskontoret, Malmö stad Innehåll 1. Vad och varför responsiv design? 2. Hur kan det genomföras? 3. Exempel (smap)
Föreläsning 6: Introduktion av listor
Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.
Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2013.Q3
Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2013.Q3 För att 3L Pro skall fungera krävs att nedanstående hårdvarukrav och mjukvarukrav är uppfyllda. Viktigt är att tänka på att
Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22
Översikt 732G11 PROGRAMMERING 1 Institutionen för datavetenskap Om kursen Vad är programmering (bra för)? Programmeringsspråket Java Utvecklingsmiljön Eclipse Genomgång av några programexempel Programmering
Introduktion till integrering av Schenkers e-tjänster. Version 2.0
Introduktion till integrering av Schenkers e- Version 2.0 Datum: 2008-06-18 Sida 2 av 8 Revisionshistorik Lägg senaste ändringen först! Datum Version Revision 2008-06-18 2.0 Stora delar av introduktionen
Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09
Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09 1. Introduktion till webbprogrammering Webbprogrammering består av ett antal
Sida 1 av 12. WSB Biodling. Manual V.1.1. http://www.wermdobiodlare.se
Sida 1 av 12 WSB Biodling Manual V.1.1 Sida 2 av 12 Översikt: WSB Biodling är en app som hjälper dig med olika saker inom biodlingen. Nyheter i denna version är möjlighet att skapa skötselkort och dokumentera
UTVECKLINGSVERKTYG. Praktiska tips för PUM-projekten
UTVECKLINGSVERKTYG Praktiska tips för PUM-projekten TEKNIKER I PROJEKTEN ios 2 C#.NET 1 Java (inkl Android) 6 Webb (HMTL/JS) 4 En genomskumning av de tilldelade projektförslagen ger ovanstående uppfattning
Version Namn Datum Beskrivning 1.0 Förutsättningar Vitec Ekonomi 1.1 Marie Justering för krav på Windows Server
Version Namn Datum Beskrivning 1.0 Förutsättningar Vitec Ekonomi 1.1 Marie 2017-03-09 Justering för krav på Windows Server 2012 1.2 Micke 2017-04-07 Vitec Ekonomi från x.60 kräver IIS 8 och websocket.
Objektorienterad programmering
Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad
Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.
Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel
Installationsanvisning för kursens programvara på egen dator
Installationsanvisning för kursens programvara på egen dator Två program, Java och DrJava, skall installeras på datorn. DrJava är en så kallad utvecklingsmiljö, ett program som underlättar att programmera
Mobila applikationer. Mobil applikationer. Java ME. Konfigurationer. Grunderna i ME
Johan Eliasson Tentan 12/1 9-12 i skrivsal 7 östra paviljongen (om de inte flyttat den till ngn annan lokal) Förklara begrepp Ex: Vad är en tråd? Vad gör en LayoutManager? Hur fungerar Observer-Observable
Thomas Padron-Mccarthy Datateknik B, Mobila applikationer med Android, 7.5 hp (Distans) (DT2014-54006-20132) Antal svarande = 18
Thomas Padron-Mccarthy Datateknik B, Mobila applikationer med Android, 7. hp (Distans) (DT0-006-0) Antal svarande = 8 Svarsfrekvens i procent =.7 Utvärderingsresultat Teckenförklaring Relativa frekvenser
Teknikprogrammet, inriktning informations- och medieteknik
Teknikprogrammet, inriktning informations- och medieteknik Varför välja oss? Kursplan Presentation av våra datatekniska kurser Eftersom företag mycket sällan anställer gymnasieelever (de vill att ni ska
Installationsanvisningar
Installationsanvisningar Hogia Webbrapporter INNEHÅLLSFÖRTECKNING Systemkrav version 2013.x 3 Installation av IIS för Windows Server 2008 5 Nyinstallation av Hogia Webbrapporter 8 Installation och inloggning
Distribuerade System, HT03
UMEÅ UNIVERSITET 21 oktober 2003 Institutionen för Datavetenskap Laborationsrapport Laboration Middleware Distribuerade System, HT03 Jini Namn: Anders Holm, c00asm@cs.umu.se Kjell Johansson, c00kjn@cs.umu.se
För att skriva CSS-kod använder man sig av olika kommandon. Ett exempel på hur man kan skriva kod för att ändra textfärg kan vara:
Hemsida CSS Introduktion till Cascading Style Sheets (CSS) Detta är en mycket kort genomgång av CSS med exempel på hur sådan kod ska läsas och hur den kan användas på IdrottOnline-sidor. Är man ute efter
55200 Inspelningsbar microfon
55200 Inspelningsbar microfon Lär känna Easi-Speak Innehåll: Inbyggd högtalare Mikrofon Volymknappar Hörlursuttag På-/av-knapp Statuslampa Röd inspelningsknapp Grön uppspelningsknapp USB-anslutning Föregående
Föreläsning 1 & 2 INTRODUKTION
Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga
Utredning om införande av digital nämndhantering för socialnämnden
6:1 6:2 6:3 6:4 6:5 Socialkontoret Dnr SN/2015:772-036 Administrativa enheten 2015-11-11 1/6 Handläggare Charlotte Arnell Tel. 0152-291 66 Utredning om införande av digital nämndhantering för socialnämnden
Tips på appar för planering med bilder
StoCKK Stockholm Center för Kommunikativt och Kognitivt stöd Tips på appar för planering med bilder Ett urval av appar för kalender, schema, dagbok, steg-för-steginstruktion Maj 2016 Innehåll Kalendrar...
Slutrapport för projektet Programmeringsundervisning i skolor med webbaserad konstprogrammering Annika Silvervarg, Linköping universitet
Slutrapport för projektet Programmeringsundervisning i skolor med webbaserad konstprogrammering Annika Silvervarg, Linköping universitet Inledning Dagens barn och ungdomar är flitiga användare av datorer,
725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack
725G61 - Laboration 7 Implementation av ett API Johan Falkenjack December 13, 2013 1 Inledning Hittills i kursen har vi tittat på grundläggande programmering och grundläggande objektorientering. I den
På sjön 2.0 Intern Guide för Android
På sjön 2.0 Intern Guide för Android På sjön 2.0 - Guide 1 Översikt Meny Eniro sök GPS position/ Kartorientering Dashboard 2. Meny Innehåller följande funktioner: Min profil/båt information (se 2.1) Mina
StoCKK Stockholm Center för Kommunikativt och Kognitivt stöd. Tips på timer-appar. Appar som hjälper dig hålla koll på tiden
StoCKK Stockholm Center för Kommunikativt och Kognitivt stöd Tips på timer-appar Appar som hjälper dig hålla koll på tiden Januari 2016 Timer-appar Många människor både vuxna och barn, personer med eller
Felsökning av mjukvara
KUNGLIGA TEKNISKA HÖGSKOLAN Felsökning av mjukvara Programmering av en NXT-robot Max Kufa [03/08-13] mkufa@kth.se Introduktionskurs i datateknik (II1310) Sammanfattning Syftet med laborationen var att
Net id OEM Användarhandbok för Windows
Net id OEM Användarhandbok för Windows Net id OEM Användarhandbok för Windows Copyright 2012 SecMaker AB Klassning: Publik Version: 5.6 1 / 8 Net id OEM Användarhandbok för Windows Copyright 2012 SecMaker
Bruksanvisning. Applikationsplats
Bruksanvisning Applikationsplats INNEHÅLL Hur handboken ska läsas...2 Symboler i handboken...2 Friskrivningsklausul... 3 Anmärkningar...3 Vad du kan göra på applikationsplatsen... 4 Innan du öppnar applikationsplatsen...
Handbok Simond. Peter H. Grasch
Peter H. Grasch 2 Innehåll 1 Inledning 6 2 Använda Simond 7 2.1 Användarinställning.................................... 7 2.2 Nätverksinställning..................................... 9 2.3 Inställning
Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.
Klient/server Översikt Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning. Lektion 1: Webbtekniker från Microsoft Microsoft webbtekniker. ASP.NET. Klientsidan. Internet Information Server.
INSTALLATIONSGUIDE TILL ANDROID UTVECKLINGSMILJÖ
INSTALLATIONSGUIDE TILL ANDROID UTVECKLINGSMILJÖ Denna installationsguide berättar hur man installerar och kommer igång med utveckling för Android. Guiden är skriven som en komplettering till min bok Programmera
Mobila enheter. Regler och rekommendationer. Mobiltelefoner Smarta mobiltelefoner Surfplattor. Fastställd av IT-chefen 2013-09-20 Version 1.
UFV 2013/907 Mobila enheter Regler och rekommendationer Mobiltelefoner Smarta mobiltelefoner Surfplattor Fastställd av IT-chefen 2013-09-20 Version 1.0 UPPSALA UNIVERSITET Regler och rekommendationer Mobila
Kom igång med LUPP 6.0
RIB 2012 Sidan 1 av 11 Kom igång med LUPP 6.0 Introduktion... 2 Installation... 4 Vad börjar jag med?... 6 Logga in... 6 Skapa användare... 7 Lägg in organisation, stationer och enheter... 8 Öppna Verksamhetsöversikten...
Web Client. Produktinformation
Web Client Produktinformation Inledning Web Client Industrin ställer allt högre krav på flexibla lösningar. WideQuick Web Client ger operatören möjlighet att styra och övervaka anläggningen oavsett tid
Föreningarnas nya sidmall. Version 4, 12.4.2016
Föreningarnas nya sidmall Version 4, 12.4.2016 Innehållsförteckning Föreningarnas nya sidmall... 1 Introduktion... 3 Sammanfattning... 3 Sidmallar och sidornas uppbyggnad... 4 Gamla sidmallen... 4 Nya
Installations- och bruksanvisning för Gree Smart app: Hansol -seriens luftvärmepump med WiFi
02/2016, ed. 1 BRUKSANVISNING Installations- och bruksanvisning för Gree Smart app: Hansol -seriens luftvärmepump med WiFi Distributör: Tillfällavägen 15 433 63 Sävedalen www.scanmont.se Tack för valet
Projektarbete 2: Interaktiv prototyp
Projektarbete 2: Interaktiv prototyp Jonatan Hilmarch (Grupp 13) 880427-5595 hilmarch@skip.chalmers.se Kurs: Människa-Datorinteraktion TIG061 HT 2010 Projekt 1 - en tillbakablick Enligt projektets systemdefinition
Innehållsförteckning Förutsättningar... 2 Installation av Google Authenticator på iphone... 3 Installation av Google Authenticator på Android...
Säker inloggning Innehållsförteckning Förutsättningar... 2 Installation av Google Authenticator på iphone... 3 Installation av Google Authenticator på Android... 6 Installation av Microsoft Authenticator
O365- Konfigurering av SmartPhone efter flytt till Office 365 alt ny installation
O365- Konfigurering av SmartPhone efter flytt till Office 365 alt ny installation Denna guide är avsedd att hjälpa användare vars epost har blivit flyttad till Exchange Online och Office 365, samt för
Introduktion till arv
Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering
RSI Road Status Information A new method for detection of road conditions
WP 5 Sida 1 av 15 RSI Road Status Information A new method for detection of road conditions Användarmanual för RSI WP 5 Sida 2 av 15 Användarmanual för RSI Om detta dokument Detta dokument är en användarmanual
Hybridappar. Utveckla mobilappar i HTML, Javascript och CSS
Hybridappar Utveckla mobilappar i HTML, Javascript och CSS Presenterat av Erik Tufvesson, Presis i Lund AB Kort om mig Erik Tufvesson Systemarkitekt och utvecklare på Presis! Brinner för utveckling av
Öppen data och vad vi kan vinna på att offentliggöra uppgifter! Formatdag i västerås 2015-11-17 Björn Hagström bjorn.
Öppen data och vad vi kan vinna på att offentliggöra uppgifter! Formatdag i västerås 2015-11-17 Björn Hagström bjorn.hagstrom@orebrolse Den information vi har är ofta kopplad till personer. Grundregeln
Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00
Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 FACIT Tentamen 20150613, kl. 9.00-12.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del
Laboration 10 - NetBeans
Laboration 10 - NetBeans Avsikten med laborationen är att du ska träna på att använda paket, att du ska packa några klassfiler i en jar-fil och slutligen använda innehållet i en jar-fil från en annan klass
Introduktion till migrering till molnet. PART 4: Plattformar för molntjänster
Introduktion till migrering till molnet PART 4: Plattformar för molntjänster PART 4 ÖVERSIKT 1. PaaS 2.Migration Vad betyder PaaS? PaaS betyderplatform as a Service eller plattform för cloud computing
Den stora frågan är ju om jag ska köpa en IPhone eller någon telefon med Android (Känns som att det är dessa två alternativ som gäller idag, eller?
Vad ska jag köpa? IPhone eller Android? Postad av Pelle Svensson - 05 jun 2011 15:32 Jag har idag en gammal "o-smart" Ericsson. Den stora frågan är ju om jag ska köpa en IPhone eller någon telefon med
Redogörelse för utvecklingsprocessen av spelet The Legend of Chalmers
Redogörelse för utvecklingsprocessen av spelet The Legend of Chalmers Ett projekt i kursen TDA367 Objektorienterat programmeringsprojekt och LSP310 Kommunikation och ingenjörskompetens Maxim Goretskyy
Mobile Cross Development
Mobile Cross Development Johan Holm och Jörgen Bengtsson Varje år bjuder vi in våra kunder till tre inspirationsdagar där vi lyfter fram de mest intressanta IT-frågorna med fokus på strategi, teknik eller
STADSLEDNINGSKONTORET SOA SDK IT-AVDELNINGEN VERSION 2.1. Läs mig först. Stockholms stad SOA-plattform. Sida 1 (5)
Läs mig först Stockholms stad SOA-plattform 1 (5) Innehållsförteckning 1 Beskrivning av SDK 3 1.1 Software Developer Kit för Utvecklare... 3 1.2 Support för... 3 1.3 Omfattning... 4 1.4 Versionshantering...
Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document
Programutvecklingsprojekt 2003-04-24 Projektgrupp Elvin Detailed Design Document Björn Engdahl Fredrik Dahlström Mats Eriksson Staffan Friberg Thomas Glod Tom Eriksson engdahl@kth.se fd@kth.se d94-mae@nada.kth.se
Säkerhetskopiera mobilen
Säkerhetskopiera mobilen gratis och helautomatiskt 7 Bästa gratistipsen 7 För Android, Iphone och Windows Phone 7 Säkerhetskopiera till Dropbox. Så fixar du automatisk säkerhetskopiering av mobilen Visst
NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot
KUNGLIGA TEKNISKA HÖGSKOLAN NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot Gabriel Vilén 30/8-2012 gvilen@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Vi har programmerat
Utbildning. Anställningar. Jonathan Wahlund 1994-08-24 Topeliusvägen 35 16761 Bromma
CV Jonathan Wahlund 1994-08-24 Topeliusvägen 35 16761 Bromma Telefon, mobil: 070-610 69 11 Email: jonathan@jonathanwahlund.se Hemsida: http://www.jonathanwahlund.se/ Bilder och länkar knutna till mina
DEN KOMPLETTA PROGRAMVARAN FÖR DESIGN OCH TILLVERKNING AV TRÄTRAPPOR PROGRAMVARA FÖR DESIGN OCH TILLVERKNING AV TRÄTRAPPOR LÄTT ATT ANVÄNDA
PROGRAMVARA FÖR DESIGN OCH TILLVERKNING AV TRÄTRAPPOR LÄTT ATT ANVÄNDA MODULSYSTEM DEN KOMPLETTA PROGRAMVARAN FÖR DESIGN OCH TILLVERKNING AV TRÄTRAPPOR God avkastning på investeringen i form av minskade
Antivirus Pro 2011. Snabbguide
Antivirus Pro 2011 Snabbguide Viktigt! På CD-fodralet finns den aktiveringskod som du behöver för att aktivera produkten. Förvara den på ett säkert ställe. Den här produkten får endast användas om det
LEGO Mindstorm-robot
KUNGLIGA TEKNISKA HÖGSKOLAN LEGO Mindstorm-robot Programmering av LEGO Mindstorm-robot i språket NXC Kim Hammar 2/6-2013 Kimham@kth.se Introduktionskurs i Datateknik 1311 Sammanfattning En viktig del av
Kom igång med mobil kortbetalning
Babs Micro Kom igång-guide Kom igång med mobil kortbetalning Tack för att du har valt Babs Paylink som leverantör! Med din nya kortläsare kommer du enkelt att kunna ta betalt var du än befinner dig. Kortläsaren
Så får du maximal nytta av Evernote
Så får du maximal nytta av Evernote 7 Anteckna på telefon och dator 7 Organisera projekt och idéer 7 Dela dina anteckningar. Så funkar den digitala anteckningsboken Evernote Glöm aldrig en bra idé! På
Systemkrav WinServ II Edition Release 2 (R2)
Systemkrav WinServ II Edition Release 2 (R2) Observera: Alla rekommendationer är aktuella vid den tid då dokumentet publicerades och visar den senaste informationen för nödvändig mjukvara. Systemkrav för
Labbrapport: HTML och CSS
Labbrapport: HTML och CSS Utförd av: Natalie Olmosse Mailadress: natalie.olmosse@gmail.com Datum: 2015 12 18 Kursansvarig: Karin Fahlquist Övriga lärare: Ulrik Söderström Första inlämningen Resultat (Godkänd/Retur):
Föreläsning 3.1: Datastrukturer, en översikt
Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,
Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2013.Q2
Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2013.Q2 För att 3L Pro skall fungera krävs att nedanstående hårdvarukrav och mjukvarukrav är uppfyllda. Viktigt är att tänka på att
Välkommen! SA S PSA S Im I puls s Mobilite t t e 8 1
Välkommen! SAPSA Impuls Mobilitet 81 Impuls sponsorer 2012 Guldsponsorer SAPSA Impuls Mobilitet 81 Mobilitet 81: Mobil reseräkningsapp med möjlighet att fotografera kvittona Christer Ingemarsson Lena Kågedal
Start-Up Customization Applikation för TI-83 Plus
TI Start-Up Customization Applikation för TI-83 Plus Komma igång Börja här Hur Anpassa Start-Up med en bild Anpassa Start-Up med ett program Anpassa Start-Up med en applikation Stänga av Start-Up Customization
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Webbdesign Process till produkt
Webbdesign Process till produkt Umeå Universitet Mediaproduktion för www II 7,5hp Isak Madoun Introduktion; VÅR-KOKBOK Är en kokbok som i sin första upplgaga kom ut på 50-talet. Boken innehåller mer av
Handledning OnTag Digitala Scorekort
Version: 1.0 2014-10-07: 2014 evry.com Handledning OnTag Digitala Scorekort EVRY One Halmstad AB Sida 2 / 15 Innehåll 1 Inledning 3 2 Aktivering av tjänsten 3 3 Exportera slinginformation 4 4 Uppdatera