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 19 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! Bild 1: W800i, en mobiltelefon med Java-stöd Samma bild som i lektion 1. Ingen pekskärm, men knappar och en liten styrspak. Bild 2: Välj spelet QuadraPop Bild 3: Java-logon När telefonens JVM (den virtuella Java-maskinen) startar, visas Java-logon. Bild 4: QuadraPop Själva spelet QuadraPop. Bild 5: Repetition av Java Java kompileras inte till körbar kod för någon viss processor eller något visst operativsystem, utan Java kompileras till kod, bytekod, för en "virtuell maskin" (JVM, Java Virtual Machine). Den virtuella maskinen finns för många olika operativsystem och många olika datorer. En enda version av källkoden, och ett enda körbart program. (Operativsystem och datortyp spelar inte längre så stor roll.) b Bild 6: Olika Java-editioner Tre olika "Java-spår": Java 2 Platform, Standard Edition (J2SE) - "vanliga skrivbordsdatorter" (inkl laptop-datorer) Java 2 Platform, Enterprise Edition (J2EE) - "servrar" Java 2 Platform, Micro Edition (J2ME) - "smådatorer" (t ex mobiltelefoner) Dessutom skiljer man på: SDK = Software Development Kit = JDK = Java Development Kit = J2ME Development Kit JRE = Java Runtime Environment = J2SE Runtime Environment Ett tillägg hösten 2006 (inte med på ljudspåret): Sun (som är företaget som gör Java) har slutat att prata om "Java 2" och "Java 2 Platform", utan säger numera bara "Java" och "Java Platform". Därför heter det inte längre Java 2 Platform, Micro Edition (J2ME), utan bara Java Platform, Micro Edition (Java ME). Det märks till exempel på att de flyttat sin J2ME-webbplats från http://java.sun.com/j2me/ till http://java.sun.com/javame/. Tänk i fortsättningen på att när det står "Java 2" i kursen, så heter det numera bara "Java". Däremot är förkortningen "J2ME" så inarbetad att man ofta fortfarande använder den, trots att det alltså egentligen heter "Java ME". Bild 7: "Konfigurationer" och "profiler" i J2ME J2ME är samlingsnamnet för olika Java-byggklossar gjorda för maskiner med begränsad kapacitet. En J2ME-implementation består av en konfiguration, en eller flera profiler samt tilläggs-API:er. (API: Application Programming Interface, tillämpningsprogrammeringsgränssnitt - klasser, metoder mm som ett tillämpningsprogram kan använda sig av för att komma åt till exempel operativsystemets olika funktioner.) Figur 1-1 på s 2 i den gamla kursboken Beginning J2ME. Konfigurationer: CLDC = Connected Limited Device Configuration CDC = Connected Device Configuration Profiler: MIDP = Mobile Information Device Profile "Bild" 8: Konfigurationer Om konfigurationer: Bestämmer vilken JVM som används samt ett antal grundläggande API:er Bestämmer oftast minsta tillgängliga mängden minne (både ROM och RAM) Det finns för tillfället två konfigurationer, CDC och CLDC CDC = Connected Device Configuration Minimum 512 KB ROM och 256 KB RAM Någon form av nätverksuppkoppling Hemsida: http://java.sun.com/products/cdc/ CLDC = Connected Limited Device Configuration Minimum 160 KB ROM och 32 KB RAM Någon form av nätverksuppkoppling som förmodligen är hemskt begränsad och långsam Hemsida: http://java.sun.com/products/cldc/ "Bild" 9: Profiler Om profiler: Bestämmer en ganska stor samling av API:er som är nödvändiga för att utveckla program Det finns en massa olika profiler. Några kan kombineras och andra inte. På mobiltelefoner är MIDP, Mobile Information Device Profile, den vanligaste MIDP finns i två varianter, 1.0 och 2.0. 3.0 är på gång. "Bild" 10: Tilläggs-API:er Eftersom inte alla telefoner har alla funktioner ligger saker som exempelvis Bluetooth i ett tilläggs-API istället för i profilen eller konfigurationen Alla tilläggs-API:er finns beskrivna på http://jcp.org/en/jsr/all Exempel: JSR 82, Java APIs for Bluetooth JSR står för Java Specification Request, och är namnet på de dokument som används för att beskriva föreslagna, och antagna, tillägg till den grundläggande Java-plattformen. "Bild" 11: Fragmentering "Write once, run anywhere" stämde inte för skrivbordsdator-Java, och är inte 100% sant på mobiltelefoner heller p.g.a. buggar i tillverkarnas implementationer. Vissa tillverkare kan ha en speciell bugg i många av sina enheter. Exempelvis hade Nokia problem med alignment när man renderade bilder (dvs ritade upp på skärmen) en gång i tiden. Eftersom MIDP inte stödjer alla funktioner i en telefon och det tar tid att få igenom en JSR . Det händer det ofta att tillverkare lägger in egna packages för att ge tillgång till enhetsspecifika funktioner. "Bild" 12 (nyinsatt): MIDP version 1.0 och 2.0 Kan man göra ett spel som QuadraPop med det som står i boken, eller behöver man mer API:er och kanske verktyg? Spel som QuadraPop kan man göra helt och hållet med MIDP 2.0, som tas upp i boken, eftersom MIDP 2.0 har stöd för fullskärm och ett nytt multimediabibliotek för att spela upp ljud och musik. I MIDP 1.0 fanns varken stöd för ljud eller fullskärm, så varje tillverkare hade egna metoder för att åstadkomma det som saknades. Därför blev man tvungen att använda tillverkarspecifika API:er. Vill man sikta in sig på den stora marknaden som fortfarande använder MIDP 1.0, främst om man gör spel, får man läsa på saker som inte står i boken. "Bild" 13 (nyinsatt): MSA MSA betyder Mobile Service Architecture, och är inte något gränssnitt, utan en specifikation av vilka gränssnitt som ska finnas i telefonens Java-miljö. En MSA-telefon ska innehålla CLDC 1.1 och MIDP 2.0, samt ett antal olika API:er, till exempel JSR 184 för 3D-grafik. En del API:er är "villkorligt obligatoriska", till exempel Bluetooth-API:et JSR 82. Om telefonen har Bluetooth, ska API:et finnas med, men om telefonen inte har någon Bluetooth-hårdvara, behöver API:et inte vara med. Om man är intresserad av detaljerna i MSA kan man läsa mer i kapitel 1 i den nya kursboken Kicking Butt with MIDP and MSA, eller i MSA-specen, som även den är en JSR, och heter JSR 248. Läsanvisningar Den här lektionen motsvaras av kapitel 1, både i den nya kursboken Kicking Butt with MIDP and MSA, och i den gamla Beginning J2ME. Läs kapitlet översiktligt som bakgrund. När man hållit på ett tag med Java ME kan man kanske gå tillbaka och läsa kapitlet noggrannare, men sitt inte från början och plugga in förkortningar och nummer på JSR:er. Några frågor som kan användas som instuderingsfrågor: Vad är J2ME? Vad är en konfiguration? Vad bestäms av konfigurationen? Vilka konfigurationer finns det? Beskriv dem kort! Vad är en profil? Vad bestäms av profilen? Vilka profiler finns det? Beskriv dem kort! Vad menas med en stack? Vad är en JSR? Vilka fördelar är det man får med MIDP, jämfört med att till exempel programmera i C++ mot ett särskilt API för varje mobiltelefonmodell eller tillverkare? (Ledtrådar: portabilitet, säkerhet) Vad innebär, i MIDP-sammanhanget, en denial-of-service-attack? Nämn några tillverkare av mobiltelefoner som stöder MIDP. Vad gör man för att motverka fragmentering? Om du vill skriva svar på instuderingsfrågorna, räcker det för de flesta frågorna med en eller några få meningar. Programmeringsövningar Det finns inga programmeringsövningar till den här lektionen. Föregående lektion | Lektionslista | Nästa lektion Thomas Padron-McCarthy (Thomas.Padron-McCarthy@oru.se), 30 maj 2008 Den här lektionen är utvecklad av Thomas Padron-McCarthy i samarbete med Magnus Runesson
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 19 minuter, ca 9 megabyte). Beroende på hur webbläsaren är konfigurerad kan det kräva ett separat mp3-spelarprogram av något slag.
En enda version av källkoden, och ett enda körbart program. (Operativsystem och datortyp spelar inte längre så stor roll.)
b
Sun (som är företaget som gör Java) har slutat att prata om "Java 2" och "Java 2 Platform", utan säger numera bara "Java" och "Java Platform". Därför heter det inte längre Java 2 Platform, Micro Edition (J2ME), utan bara Java Platform, Micro Edition (Java ME). Det märks till exempel på att de flyttat sin J2ME-webbplats från http://java.sun.com/j2me/ till http://java.sun.com/javame/.
Tänk i fortsättningen på att när det står "Java 2" i kursen, så heter det numera bara "Java".
Däremot är förkortningen "J2ME" så inarbetad att man ofta fortfarande använder den, trots att det alltså egentligen heter "Java ME".
(API: Application Programming Interface, tillämpningsprogrammeringsgränssnitt - klasser, metoder mm som ett tillämpningsprogram kan använda sig av för att komma åt till exempel operativsystemets olika funktioner.)
Figur 1-1 på s 2 i den gamla kursboken Beginning J2ME. Konfigurationer:
Om man är intresserad av detaljerna i MSA kan man läsa mer i kapitel 1 i den nya kursboken Kicking Butt with MIDP and MSA, eller i MSA-specen, som även den är en JSR, och heter JSR 248.
Några frågor som kan användas som instuderingsfrågor:
Föregående lektion | Lektionslista | Nästa lektion