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?
TIETOEVRY DENMARK A/S
Udvikler, sælger og implementerer software til ESDH, CRM og portaler. Fokus på detailhandel, bygge- og anlæg, energi og finans.

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

Kommende events
AI i det offentlige: Potentiale, erfaringer og krav

Hør erfaringerne med at anvende AI til at transformere og effektivisere processer i det offentlige – og med at sikre datakvalitet, governance og overholdelse af retningslinjer.

27. august 2025 | Læs mere


Computerworld Cloud & AI Festival 2025

Med den eksplosive udvikling indenfor cloud & AI er behovet for at følge med og vidensdeling større end nogensinde før. Glæd dig til to dage, hvor du kan netværke med over 2.400 it-professionelle, møde mere end 50 it-leverandører og høre indlæg fra +90 talere. Vi sætter fokus på emner som AI; infrastruktur, compliance, sikkerhed og løsninger for både private og offentlige organisationer.

17. september 2025 | Læs mere


IT og OT i harmoni: Sikring uden at gå på kompromis med effektiviteten

IT og OT smelter sammen – men med risiko for dyre fejl. Få metoder til sikker integration med ERP, kundesystemer og produktion. Tilmeld dig og få styr på forskellene og faldgruberne.

24. september 2025 | Læs mere