Den snabba tillväxten av så kallade smartphones har lett till en explosion av appar, dvs applikationer för sådana telefoner. Flera olika plattformar finns, såsom Googles Android, Apples iOS och Microsofts Windows Phone. Vi koncentrerar oss här på Android, eftersom det huvudsakliga programspråket för Android-appar är Java.
Förutom programspråket i sig kan flera standardbibliotek som ni känner till användas för app-programmering, såsom till exempel paketen java.util och java.io. Däremot ersätts till exempel javax.swing av andra bibliotek, så allt som har med grafiska användargränssnitt att göra måste skrivas om. Dock är Android-varianterna ofta mycket lika Swing-klasserna till sin struktur.
Modellklasserna för en applikation blir typiskt helt oförändrade. Som exempel ska vi här titta på labb 3 och labb 6. Nedan visas två skärmdumpar från en telefon som kör Android-versionerna av dessa.
Som synes är utseendet något annorlunda; knappar och andra komponenter har den look and feel som komponenter har på denna plattform.
En Android-telefon är normalt inställd för att bara ladda ner appar från Android Market, en webbplats som erbjuder över 200 000 appar, både gratisdito och sådana som kostar pengar. För att ladda ner en av våra två appar från sidan som länkas nedan måste telefonens inställningar ändras: I Settings, välj Applications och därefter Unknown sources. Du tillåter därmed installation av appar som inte kommer från Android Market; en varningsdialog påpekar riskerna med detta och du måste godkänna. (För en svenskspråkig telefon är motsvarigheten Inställningar respektive Program.) Efter nedladdning klickar man på filen och väljer Install. Det är på eget ansvar du gör detta, men vi är övertygade om att våra två appar inte ställer till någon skada. Däremot är det förstås tveksamt om man generellt sett ska ladda ner program från okända källor. Det är dock intressant att operativsystemet anser att alla källor utom Android Market är "okända".
Den som har tillgång till en Androidtelefon kan ladda ner färdiga app-versioner av dessa labbar här.
Den kod ni skrivit i labb 3 och labb 6 förändras inte alls om man i stället gör en app för Android. Också de delar ni fått givna har samma struktur i de två fallen -- men klasser och metoder har andra namn och vissa detaljer görs på olika sätt. Avsikten med dessa två exempel är att visa på de stora likheterna i struktur mellan apparna och våra laborationer. För att tydliggöra detta har vi lämnat flera brister i apparna; det är inte svårt att åtgärda detta, men det blir mer kod och likheterna syns mindre tydligt. De två mest uppenbara bristerna är följande.