Mikro-Java
I løbet af den forestående jul skal 20 millioner europæere gerne blive glædeligt overraskede over at finde en mobiltelefon med mulighed for Java-spil og -applikationer under juletræet. Det skriver vores søsterpublikation Computerworld Online.
Teknologien, som gør det muligt at afvikle Java-programmer på mobiltelefoner og lommecomputere, hedder Java 2 Micro Edition (J2ME), og selv om specifikationerne bag J2ME er færdiggjorte, er der dog endnu tale om en grøn teknologi. Men som udsagnet i indledningen peger på, regner mobil-producenterne med at J2ME skal sælge den næste generation af telefoner.
Det er som bekendt Suns erklærede ambition, at Java skal være overalt. J2EE er arkitekturen på serversiden, J2SE er Java til skrivebordet. J2ME er Java i mikrokosmos.
Ret beset har Java indtil videre kun været en entydig succes på serversiden, men Sun håber på at J2ME vil betyde det samme for små enheder, som J2EE har betydet for servermiljøerne - en fælles arkitektur, som løser udviklernes grundlæggende problemer.
Problemerne ved at skrive programmer til lommecomputere, mobiltelefoner, konsumelektronik og andre typer af enheder er ganske oplagt: Manglen på ensartethed. Input/output-enheder kan variere, fra slet ingen input til tastatur-baserede, baseret på telefon-knapper, input baseret på trykfølsomme skærme, stemmestyret input og andet.
Output sætter lige så store udfordringer. Her kan graden af variation være lige så stor som på input-siden, og selv om man begrænser sig til den type output vi kender bedst, skærme, så kan variationen i størrelser og opløsninger være en svimlende udfordring til udvikleren.
Ligeledes kan hver enkelt enhed indeholde sine egne brugeflade-metaforer, som udviklingsmiljøet skal imødekomme på en eller anden facon. Situationen svarer lidt til GUI-problematikken på skrivebordet, men hvor de fleste GUI'er ligner hinanden på en række grundlæggende punkter, er der på J2ME-siden ikke engang garanti for, at output er givet ved en skærm.
De her nævnte problemer dækker endda kun over forskelle i input/output. Enhedernes variation i processorstyrke, hukommelse, netværksforbindelse og samt evne til at håndtere lagring kan være lige så stor.
Konfigurationer og profiler
Den store spredning i systemernes egenskaber gør det ikke muligt at bygge på en entydigt bestemt konfiguration, som det kan gøres i de mere ensartede miljøer, som J2EE og J2SE befinder sig i.
Derfor har udviklerne bag J2ME benyttet en modulær arkitektur, som desværre introducerer et temmelig stort antal begreber, der udmønter sig i en lind strøm af forkortelser: CDC, CLDC, KVM, CVM, MIDP, FP, PP, PBP og mere til. Selv når de er skrevet fuldt ud, giver forkortelserne ikke den store mening uden en gennemgang af J2ME-arkitekturen.
Arkitekturen bag
For at kunne passe ind i de mange uensartede platforme, er J2ME opdelt på en lagkagefacon, hvor første lag kaldes konfigurationer, og andet lag profiler.
Konfigurationen definerer afviklingsmiljøet ud fra et sæt af kerneklasser og en specifik virtuel maskine, som altså ikke er identisk med den JVM, som benyttes i J2SE og J2EE. Faktisk definerer J2ME ikke én, men to forskellige VM'er, med navnene KVM og CVM. Det vender vi straks tilbage til.
Profilerne, som er anden etage i J2ME-lagkagen, tilføjer klasser, som er nødvendige ud fra enhedernes anvendelsesområder.
Indtil videre er der defineret to konfigurationer: Connected Limited Device Configuration (CLDC), og Connected Device Configuration (CDC).
Arkitekturen
De to eksisterende konfigurationer kan karakteriseres på følgende facon:
J2ME er ikke en delmængde af standard-platformen J2SE, men udvider J2SE på enkelte punkter. |
CDC bygger på CVM-maskinen, og indeholder samme basisklasser som CLDC. CDC retter sig imod enheder med 32-bit processorer og mindst to megabyte systemhukommelse. CDC sigter på større lommecomputere, smartphones, konsumelektronik med videre.
Groft sagt kan man sige, at konfigurationerne adresserer forskelle i hardware, mens profilerne adresserer forskellige anvendelser. Således vil tunge lommecomputere som dem, der bygger på Windows CE, typisk bygge på CDC, mens tynde lommecomputere, som dem der bygger på Palm OS, typisk vil bygge på CLDC. Mobiltelefoner findes ligeledes i begge konfigurationer, afhængig af telefonens kapaciteter og udrustning.
Diagrammet illustrerer J2ME-arkitekturen. Diagrammet er forenklet, i det JavaCard og Embedded Java ikke er med på tegningen.
De fleste af profilerne herover eksisterer kun som forslag i Java Community Process' regi, og er i forskellige grader af færdiggørelse. For CDC-konfigurationens vedkommende drejer det sig om Foundation Profile og Personal Profile, og for CLDC's vedkommende er den eneste færdige specifikation Mobile Information Device Profile (MIDP).
MIDP er rettet imod såkaldte mobile informationsenheder, og det dækker over mobiltelefoner og lette lommecomputere. MIDP adresserer områder som brugerflade, lagring, netværkstilgang og applikationernes livscyklus.
Der er mere information om J2ME at hente på Suns hjemmeside. Der er artikler om J2ME på de sædvandlige Java-relaterede sites, og et site, MicroJava, beskæftiger sig udelukkende med J2ME.
I den næste artikel om mobil Java-udvikling kigger vi på MIDP og miljøets applikationer, MIDlets, i forbindelse med Suns udviklingsværktøjer til J2ME, J2ME Wireless Toolkit, som både kan afvikles på Palm OS og Nokia-telefoner.