Idag: Utvecklingsmiljö och kompilering.
|
Klicka på startknappen i den lilla mediaspelaren ovan för att lyssna på lektionen. (Man kan behöva vänta en stund på att ljudfilen laddas ner.) Om mediaspelaren inte syns, eller om det inte fungerar av något annat skäl, kan man klicka här för att ladda ner mp3-filen (ca 20 minuter, ca 9 megabyte). Beroende på hur webbläsaren är konfigurerad kan det kräva ett separat mp3-spelarprogram av något slag.
Tänk på att lektionerna ger en översikt och introduktion. Du måste läsa i kursboken och arbeta med övningarna för att tillgodogöra dig kursen! |
Java-programmen i Java ME (Java 2 Mobile Edition)
kallas MIDlet:ar.
(Jämför: applet, servlet.)
|
När Java-maskinen ska köra ett Java-program, börjar den med att verifiera att den kompilerade koden inte bryter mot reglerna.
Att skriva källkod för Java ME är precis som all annan Java-programmering. Varje fil innehåller en klass vars namn är identiskt med filnamnet, inklusive stor och liten bokstav. |
"Korskompilering" = vi kompilerar för en annan miljö än på datorn med kompilatorn!
Java-kompilatorn (javac.exe) kräver parametern -bootclasspath för att ange var klassbiblioteken i kör-miljön (dvs MIDP) finns, till exempel java.lang-paketet. WTK (eller en IDE som Eclipse) sköter dock detta automatiskt. |
Verifierar att .class-filerna är korrekt uppbyggda
och inte innehåller några konstigheter.
WTK (eller en IDE) sköter detta automatiskt. |
Lägger ihop alla klassfiler och resursfiler i en fil med filändelsen
.jar. En jar-fil är egentligen bara en zip-fil och
kan packas upp med exempelvis WinZIP eller WinRAR.
En jar-fil innehåller ett manifest (svenska: märkrulla, förteckning över lasten på ett fartyg) som beskriver innehållet i jar-filen. En jar-fil kan också vara åtföljd av en jad-fil, som innehåller ungefär samma innehåll som manifestet i jar-filen. En jad-fil behövs om man t. ex. vill installera program via GPRS, men använder man t.ex. Nokias PC-suite behövs inte jad-filen. |
En MIDlet kan man köra antingen på en telefon eller i en
emulator på datorn. En emulator är ett program som emulerar,
alltså låtsas vara, någonting annat. I vårat fall emulerar vår
emulator olika typer av telefoner. Det man ser på datorskärmen ska
likna det man får se på skärmen på telefonen.
En emulator behöver, till skillnad från en simulator, inte fungera exakt som hårdvaran den emulerar, därför är det viktigt att man provar sitt program på en riktig telefon med jämna mellanrum. Det är dessutom skillnad mellan olika telefontillverkares implementationer av JVM:en och MIDP-api:et så prova på så många olika telefoner som möjligt. |
En kommentar från Magnus Runesson, som arbetar med Java ME och är med under kursutvecklingen:
Du nämnde att det inte finns så många emulatorer att prova med. Jag vet inte exakt hur det ligger till med det men om man t.ex. laddar hem en SDK från Nokia för exempelvis 7710'an eller vilken telefon som helst så får man med en speciell emulator för just den enheten, komplett med en ny bild för telefonen som emulatorn ska representera. Jag skulle tro att det är i gurnden samma emulator som följer med WTK men den har skeppats med en speciell jar-fil för lite enhetsspecifika grejer, t.ex. Nokias egna API:er. Så om man inte är riktigt nöjd med det som följer med WTK'n kan man ladda hem en unik WTK från telefontillverkarens hemsida, så kanske man har tur och får en ny emulator och lite nya dokument osv. Tänkte att det kunde vara bra att veta. |
|
Ett tillägg 2010 (inte med på ljudspåret):
Det finns nyare versioner, både av skrivbords-Java och Java ME (Java ME). Mer om detta nedan. |
Om ni har kvar J2SE-SDK:n från förra kursen kan ni hoppa över detta
steg. Annars kan ni hämta SDK:n från
http://java.sun.com/j2se/1.5.0/download.jsp
och installera som vanligt.
Man bör komma ihåg vilken katalog som man väljer att installera SDK:n i. Eventuellt kan man även behöva ange sökvägen när man sen installera Sun Java Wireless Toolkit, så kom ihåg den. Mer utförliga installationsanvisningar finns att läsa på http://java.sun.com/j2se/1.5.0/install-windows.html. |
Ett tillägg 2010 (inte med på ljudspåret):
Det har kommit senare versioner efter J2SE 1.5.0, och dessutom har Sun slutat prata om "Java 2" och säger nu bara "Java". Därför kallas "J2SE" nu för "Java SE". Dessutom säger man inte längre "SDK" (Software Development Kit) utan "JDK" (Java Development Kit). Den senaste versionen av JDK heter numera "Java SE Development Kit 6" eller bara "JDK 6". Den kan laddas ner från java.sun.com/javase, och finns (bland annat) både för Windows och Linux. |
Ett tillägg till, i augusti 2010 (inte med på ljudspåret):
Sun har blivit uppköpta av Oracle, så numera laddar man ner Java-produkterna från Oracle (www.oracle.com). Men än så länge funkar det att gå till Suns gamla Java-webbplats (java.sun.com), så blir man omdirigerad, och därför har jag inte ändrat några länkar än. |
Varning!
Om man har ett 64-bitars Windows 7, och vill använda WTK 3.0, ska man installera 32-bitarsversionen av Java-SDK:n, trots att det finns en 64-bitarsversion. WTK 3.0 fungerar nämligen inte med 64-bitarsversionen! Jag har bara provat detta på Windows 7, men det gäller förmodligen även för 64-bitars Windows Vista och 64-bitars Windows XP. |
Här lyckades installationsprogrammet hitta en J2SE SDK, som synes.
Notera att installationen måste ha katalogen till en J2SE SDK, inte JRE (J2SE Runtime Environment). Om man bara ger sökvägen till en JRE kan man bara provköra MIDletar, inte utveckla dem.
Ett tillägg 2010 (inte med på ljudspåret):
Det har kommit nya versioner av WTK. För Windows finns WTK 3.0, som är en mer integrerad programmeringsomgivning, med en inbyggd editor. För Linux är den senaste versionen 2.5.2. De kan laddas ner från java.sun.com/javame. Exemplen i det mesta av kursen är gjorda med 2.3, men 2.5.2 ser ungefär likadan ut. och jag rekommenderar att man använder den nyaste (3.0 för Windows, 2.5.2 för Linux). |
Kom ihåg denna katalog, för där kommer alla projekt att finnas!
Vi litar på Sun och tillåter deras grejer koppla upp sig mot nätet om det skulle behövas.
Vi ska skriva programmen i en vanlig texteditor.
Använd vilken som helst, i värsta fall Notepad.
Annars kan man ladda ner Textpad från http://www.textpad.com/download/. Installationsprocessen är inte så klurig så den klarar ni nog utan assistans. |
Ett tillägg 2010 (inte med på ljudspåret):
WTK 3.0 för Windows har en inbyggd editor. |
På ett Linux-system blir det (till exempel) /usr/local/java/installation/WTK2.2/apps/Tompa-Test-1/src.
(Källkoden till kursböckernas exempel finns på respektive boks webbplats.)
Vi ska studera detaljerna i hur man skriver en MIDlet-klass senare.
Kompilering, för-verifiering och paketering görs automatiskt.
En class-fil innehåller inte bara själva koden
utan även fullständiga klass-, variabel- och metodnamn i
klartext. Dessa kan man förvränga och minimera med
hjälp av "obfuscation".
Varför? Jo:
Ett bekymmer med att förvränga sina namn är när man har en klass eller metod som måste behålla sitt ursprungliga namn. Ett exempel är notifyIncomingMessage, en metod i din kod som anropas av JVM:en när programmet tar emot ett SMS. När ett SMS anländer till din telefon kommer JVM:en leta i sin lista över metoder efter den som heter notifyIncomingMessage, men eftersom obfuscatorn har bytt namn på metoden till t. ex. a, så kan inte JVM:en hitta rätt och programmet visar ett felmeddelande. Andra metoder som fungerar likadant är startApp och destroyApp men eftersom de är så vanliga så förvrängs inte de som standard. |
Ett tillägg våren 2008 (inte med på ljudspåret):
WTK 2.5.2 finns även till Linux, men det kan vara lite olika hur kompatibel den är med de operativsystemkärnor och bibliotek som finns i olika Linux-versioner. Man kan prova, men om det inte fungerar på ens Linux-maskin går det bra med gamla WTK 2.2, så länge man inte ska använda de modernaste gränssnitten. |
Ett tillägg våren 2007 (inte med på ljudspåret):
Som ett alternativ till Suns WTK kan man prova öppen-källkods-alternativet MicroEmulator 2.0. Den är byggd helt i Java, och fungerar därför både på Linux och Windows. Den både startar och kör mycket snabbare än WTK. Om man har installerat Java så man kan köra Java-applets i sin webbläsare, kan man till exempel provköra mobil-webbläsaren Opera Mini i MicroEmulator här: http://www.operamini.com/features/simulator/ |
I den gamla kursboken Beginning J2ME kan man också läsa kapitel 2, som där heter Building MIDlets. Avsnitten Tour of MIDP Features och Using Ant kan hoppas över.
Det är själva provkörandet av MIDlet:en, så man kommer igång med utvecklingsmiljön, som är det viktiga här, men det finns också några frågor som kan användas som instuderingsfrågor:
Föregående lektion | Lektionslista | Nästa lektion
Den här lektionen är utvecklad av Thomas Padron-McCarthy i samarbete med Magnus Runesson |