Blogi » Java ME-mobiiliohjelmointia
Javalla on melko helppoa tehdä ohjelmia ja monissa kouluissa ohjelmoinnin opetus lähteekin Javasta. Yleensä Javaa opetellaan työpöytäympäristössä, jolloin tehdään tavallisia ohjelmia PC:lle, jotka toimivat esim. Windowsissa ja Linuxissa. Javaa voi myös käyttää monessa muussakin ympäristössä, kuten kännyköissä. Usein ohjelmoinnin peruskursseilla ei kuitenkaan mennä kovin syvälle mobiiliohjelmointiin, jos laisinkaan. Mobiiliohjelmointi Javalla ei kuitenkaan ole kovin paljon monimutkaisempaa kuin työpöytäsovellustenkaan teko. Itse asiassa joissain asioissa mobiiliohjelmointi on jopa helpompaa kuin työpöytäsovelluksien teko (esim. käyttöliittymät ovat paljon yksinkertaisempia matkapuhelimissa). Jos siis pohjalla on kokemusta Java-ohjelmoinnista ja kiinnostusta mobiiliohjelmointiin Javalla löytyy, kannattaa lukaista tämä kirjoitus loppuun.
Ensiksi kannattaa kuitenkin tulla sinuiksi Javan termien kanssa: J2SE, Java Platform Standard Edition, Java SE, J2ME, Java Me, Java Platform Micro Edition, J2EE, Java Platform Enterprise Edition, Java EE, MIDP, CLDC... Lyhenteitä on paljon ja niissä menee helposti sekaisin. Java SE tarkoittaa käytännössä samaa kuin J2SE ja "Java Platform, Standard Edition". Niin ikään J2ME, Java ME ja "Java Platform, Micro Edition" tarkoittavat samaa kuin myös J2EE, Java EE ja "Java Platform, Enterprise Edition". Nimissä esiintyvän kakkosen tarkoituksena oli alunperin kuvata suurta uudistusta Java SE 1.2-versiossa, mutta Java SE 1.6-version myötä kakkonen jätettiin nimestä pois.
Java SE (Standard Edition), Java ME (Micro Edition) ja Java EE (Enterprise Edition) ovat siis kaikki eri variaatioita Javasta. Niissä kaikissa käytetään samaa Java-ohjelmointikieltä, mutta ne on tarkoitettu eri ympäristöihin. Jokainen variaatio koostuu käytännössä virtuaalikoneesta (JVM, Java Virtual Machine), joka siis suorittaa Java-koodia, ja luokkakirjastoista, jotka mahdollistavat esim. verkkoyhteyksien käytön tai käyttöliittymien teon. Käytännössä ohjelmoijalle tämä näkyy siinä, että Java SE:ssä, Java ME:ssä ja Java EE:ssä on käytössä eri APIt (vrt. Java SE 1.5 API ja Java ME MIDP API).
Java SE on tarkoitettu lähinnä tavalliseen työpöytäympäristöön (tähän ohjelmoija törmää usein ensiksi), Java ME mobiiliympäristöön (kännykät, PDAt jne.) ja Java EE yrityskäyttöön (lähinnä palvelimet). Kaikki nämä ympäristöt asettavat Javalle erilaisia vaatimuksia. Esimerkiksi Java ME:ssä ei ole kaikkia samoja perusluokkia käytössä kuin Java SE:ssä, koska mobiiliympäristö asettaa rajoituksensa mm. muistin ja prosessoritehon suhteen. Jokaisella Javan variaatiolla on oma virtuaalikoneensa, joka siis suorittaa Java-koodia. Mobiiliympäristössä virtuaalikone pitää olla kevyt, kun taas työpöytäkäytössä virtuaalikone voi olla hieman raskaampi. Työpöytäkäyttöön tehtyjä Java-ohjelmia ei siis yleensä voi ajaa sellaisenaan mobiiliympäristössä.
MIDP ja CLDC taas ovat osa Java ME:tä. CLDC (Connected Limited Device Configuration) on Java ME:n konfiguraatio, joka määrittää, mikä virtuaalikone on käytössä ja joitain matalan tason luokkakirjastoja (esim. luku- ja kirjoitusoperaatiot). Java ME:ssä on myös toinen konfiguraatio CDC (Connected Device Configuration), jota käytetään mobiililaitteissa, joissa on hieman enemmän tehoa ja muistia (esim. PDA-laitteet tai digiboksit). CLDC:tä taas käytetään esim. matkapuhelimissa, jolloin käytössä on hyvin kevyt virtuaalikone, jota kutsutaan KVM:ksi ("Kilobyte" Virtual Machine).
MIDP (Mobile Information Device Profile) taas on Java ME:n profiili, joka määrittää, mitä luokkakirjastoja CLDC:n luokkakirjastojen lisäksi on käytössä (esim. kännykän käyttöliittymän tekoon tarvittavat luokat). Kaikki Java SE:n luokat eivät millään mahtuisi tavalliseen matkapuhelimeen, joten käytettäviä luokkia on karsittu. Esimerkiksi niinkin perustavaraa oleva metodi kuin tekstipätkän korvaaminen toisella tekstipätkällä (java.lang.String.replaceAll) puuttuu MIDP:stä. MIDP:stäkin on eri versioita: MIDP 1.0 ja MIDP 2.0. Käytännössä matkapuhelimet ovat tukeneet MIDP 2.0:aa jo melko kauan, joten yleensä käytetään sitä. Kännyköille ohjelmia tehtäessä käytetään siis yleensä MIDP:tä ja CLDC:tä.
Mistä sitten aloittaisi Java-ohjelmien teon kännyköille? Ensinnäkin omalle tietokoneelle pitää asentaa Java ME-ohjelmointiin soveltuva ohjelmointiympäristö. Tähän sopii tavalliseen Java-ohjelmointiinkin mainiosti soveltuva Eclipse (Eclipse IDE for Java Developers). Eclipseen täytyy lisäksi asentaa vielä Eclipse ME-lisäosa, joka helpottaa mobiiliohjelmointia. Lisäksi, pitää asentaa vielä Sun Java Wireless Toolkit for CLDC, joka sisältää tarvittavat luokkakirjastot ja emulaattorin, jolla voi ajaa mobiilisovelluksia omalla tietokoneella (kts. kuva oikealla). Näiden käyttöönottoon löytyy hyvä suomenkielinen opas J2ME & Eclipse - pikaopas, joka opastaa asennuksessa.
Varsinaisen Java ME -ohjelman tekoon löytyy hyviä oppaita netistä, tosin englanninkielisiä. Alla on lueteltu muutamia hyviä oppaita, jotka opastavat alkuun Java ME -ohjelmoinnissa. Pohjalla pitää kuitenkin olla ymmärrystä Java SE-ohjelmoinnista:
- J2ME Tutorial, Part 1: Creating MIDlets (Miten päästä alkuun Java ME -ohjelmoinnissa)
- J2ME Tutorial, Part 2: User Interfaces with MIDP 2.0 (Käyttöliittymien teko Java ME-ympäristössä)
- MIDP Programming with J2ME (Hyvä yleisopas Java ME-ohjelmointiin)
- MIDP GUI Programming (Java ME:n käyttöliittymäkomponenteista)
- Java ME MIDP API (MIDP-ympäristössä käytössä olevien luokkakirjastojen dokumentaatio)