Programmér mobilen med Java

I fremtiden skal mobiltelefoner med respekt for sig selv kunne afvikle Java-baserede applikationer og spil. Java skal sælge masser af nye telefoner, og i den første af en række artikler om J2ME, Java 2 Micro Edition, ser vi nærmere på arkitekturen bag den komplekse platform med de mange begreber, forkortelser og API'er.

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.
CLDC bygger på KVM-maskinen, som sigter imod 16- eller 32-bit enheder med begrænset hukommelse. CLDC dækker eksempelvis over lommecomputere og mobiltelefoner med begrænset netværkstilslutning, mindst 128 kilobyte systemhukommmelse og 32 kilobyte flash-hukommelse eller tilsvarende permanent hukommelse. Enkelte områder af selve sproget er udeladt, så som komma-tal, undtagelseshåndtering, finalization og internationalisering.

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.




Brancheguiden
Brancheguide logo
Opdateres dagligt:
Den største og
mest komplette
oversigt
over danske
it-virksomheder
Hvad kan de? Hvor store er de? Hvor bor de?
Højer og Lauritzen ApS
Distributør af pc- og printertilbehør.

Nøgletal og mere info om virksomheden
Skal din virksomhed med i Guiden? Klik her

Kommende events
Computerworld Cyber Briefing

Computerworld giver dig hver måned 30 minutter med de nyeste cybertrusler, konkrete angreb og brugbare råd. Få indsigt i AI og sikkerhed, compliance, risikovurdering og forsvarsstrategier. Tilmeld dig næste Cyber Briefing nu.

14. august 2025 | Læs mere


Cyber Security Summit 2025: Her er truslerne – og sådan beskytter du dine kritiske data

Deltag og få værktøjer til at beskytte din virksomhed mod de nyeste cybertrusler med den rette viden og teknologi.

19. august 2025 | Læs mere


Cyber Security Summit 2025 i Jylland

Deltag og få værktøjer til at beskytte din virksomhed mod de nyeste cybertrusler med den rette viden og teknologi.

21. august 2025 | Læs mere






White paper
Tidsbegrænset kampagne: Overvejer du at udskifte eller tilføje printere i din forretning? Vi kan tilbyde én eller flere maskiner gratis