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.

Læses lige nu
    Computerworld Events

    Vi samler hvert år mere end 6.000 deltagere på mere end 70 events for it-professionelle.

    Ekspertindsigt – Lyt til førende specialister og virksomheder, der deler viden om den nyeste teknologi og de bedste løsninger.
    Netværk – Mød beslutningstagere, kolleger og samarbejdspartnere på tværs af brancher.
    Praktisk viden – Få konkrete cases, værktøjer og inspiration, som du kan tage direkte med hjem i organisationen.
    Aktuelle tendenser – Bliv opdateret på de vigtigste dagsordener inden for cloud, sikkerhed, data, AI og digital forretning.

    It-løsninger | Online

    Kod smartere med GitHub Copilot

    Få styr på GitHub Copilot og skriv bedre kode hurtigere. Se hvordan Copilot løser opgaver, sparrer på fejl og løfter komplekse workflows. Oplev live demo og lær hvordan du kommer i gang med licenser og opsætning.

    Sikkerhed | København

    Cyber Threats

    Få teknisk indsigt og konkrete løsninger til at modstå moderne cyberangreb. Lær af fejl, stop angreb i tide og byg systemer med ægte resiliens. Fokus på lavniveau-detektion, netværksovervågning og hurtig gendannelse. Deltag i Cyber Threats fra...

    It-løsninger | København V

    Platform X 2026: Forretning, teknologi og transformation

    Mød verdens stærkeste og mest effektive platforme der driver den digitale transformation samlet i København - og dyk ned i den nyeste teknologi.

    Se alle vores events inden for it

    Navnenyt fra it-Danmark

    Immeo har pr. 16. marts 2026 ansat Honey Arora som Senior Manager. Han kommer fra en stilling som Data Product Owner hos Centrica Energy. Nyt job

    Honey Arora

    Immeo

    Trafikstyrelsen har pr. 1. maj 2026 ansat Nihad Hodzic som IT og Digitaliseringschef. Han skal især beskæftige sig med med IT-projekter og digital transformation, herunder især det strategiske løft af Trafikstyrelsens digitale niveau. Han kommer fra en stilling som Kontorchef hos Udviklings og Forenklingsstyrelsen. Han er uddannet i statskundskab og har en lederuddannelse fra MIT Sloan, samt en igangværende Master i IT-Ledelse. Han har tidligere beskæftiget sig med IT-udvikling og større projekter på momsområdet, hvor han har ledet et projekt- og udviklingskontor. Nyt job

    Nihad Hodzic

    Trafikstyrelsen

    Jakob Dirksen, SVP, Nordic Customer Delivery & Operations hos GlobalConnect, er pr. 1. maj 2026 forfremmet til EVP, Infrastructure Delivery & Operations. Han skal fremover især beskæftige sig med at lede Infrastructure Delivery & Operations, der har til opgave at drive og udvikle fibernetværket på tværs af virksomheden. Forfremmelse

    Jakob Dirksen

    GlobalConnect