marți, 16 iunie 2009

Aplicatie Java mobile - "Hello World !" MIDlet

Scopul acestui tutorial este de a prezenta elemente de baza cu privire la dezvoltarea de aplicatii mobile Java. Pentru a exemplifica notiunile prezentate se construieste o aplicatie simpla de tip HelloWorld.

Resursele necesare pentru dezvoltarea proiectului sunt de tip open-source si pot fi descarcate de pe Internet:
  • mediu de dezvoltare vizual care sa includa platforma Java ME (Micro Edition); acesta nu este obligatoriu, deoarece sursele pot fi compilate si din linia de comanda; exemplul descris in acest material este realizat in NetBeans; acest mediu, ajuns la versiunea 6.5.1, poate fi descarcat de la adresa http://www.netbeans.org/ si desi exista mai multe pachete trebuie ales acela care contine tehnologia Java ME; cel mai putin complex mediu de dezvoltare vizual utilizat pentru aplicatii Java mobile este inclus in Sun Java ME Software Development Kit (http://java.sun.com/javame/sdk/index.jsp)
  • emulatoare de dispozitive mobile care suporta aplicatii Java; un astfel de emulator este deja integrat in distributia de Netbeans; dispozitivul simulat este unul generic; daca se doreste testarea aplicatiei intr-un mediu cat mai apropiat de dispozitivul urmarit atunci se utilizeaza resurse puse la dispozitie de producator; de exemplu pentru dispoztive de tip Nokia, o sursa de SDK-uri (Standard Development Kit) pentru diferite generatii si modele este forum.nokia.com;

Prentru a crea proiectul aplicatiei, in mediul NetBeans se alege File -> New Project si din categoria Java ME este selectat un proiect de tip Mobile Application.

La urmatorul pas al asistentului se defineste locatia (si se deselecteaza optiunea Create Hello MIDlet), iar la pasul trei (Default Platform Selection) sunt definite resurse cu privire la:
  • emulatorul utilizat; implicit, daca s-a instalat doar NetBeans, fara alte SDK-uri, este disponibil doar Sun Java Wireless Toolkit 2.5.2 for CLDC;
  • tipul de dispozitiv mobil (ecran color sau monocrom, cu tastatura qwerty)
  • configuratia dispozitivului; pentru acest proiect se alege CLDC-1.0; CLDC sau Connected Limited Device Configuration reprezinta un standard ce descrie caracteristicile hardware ale dispozitivului mobil; versiunea 1.0 a standardului descrie un dispozitiv cu 128 KB pentru masina virtuala Java, 32 KB pentru memoria dinamica, interfata vizuala limitata si cu capacitatea de a se conecta la o retea de date; acest standard este definit de un consortiu din care fac parte marii producatori de dispozitive mobile pentru a ajuta dezvoltatorii de software sa stabileasca limitele dispozitivului ce va rula aplicatia; de asemenea, aceste setari au impact si asupra modului in care proiectul va fi compilat;
  • profilul dispozitivului; pentru acest proiect se alege MIDP-2.0; MIDP sau Mobile Information Device Profile reprezinta o extensie a configuratiei hardware (CLDC) ce descrie caracteristicile sofware ale dispozitivului cu referire la framework-ul disponibil si la masina virtuala Java; combinatia aleasa (CLDC-1.0 si MIDP-2.0) este valabila pentru mai mult de 75% din dispozitivele mobile produse dupa 2005.
Odata creat proiectul de tip MobileApplication trebuie definit contextul obiectual pe baza caruia se va construi aplicatia. Asta inseamna inserarea unei resurse de tip MIDlet , prin intermediul optiunilor din meniul mediului NetBeans (File -> New File…) sau prin meniul contextual (New -> MIDlet) activat cu Click dreapta pe numele proiectului.
Prin adaugarea unei resurse de tip MIDlet, fisier cu extensia .java, este generate clasa MidletHelloWorld derivata din clasa abstracta MIDlet. Initial forma acestei clase

import javax.microedition.midlet.*;

public class MidletHelloWorld extends MIDlet {

public void startApp() {
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}
}


supradefineste metodele abstracte:
  • startApp() – functia starter a aplicatiei; se executa prima, dupa initializarea instantei MidletHelloWorld
  • pauseApp() – functia este executata la aparitia unui eveniment ce implica blocarea aplicatiei de tip MIDlet; un scenariu des intalnit pe un dispozitiv mobil contine receptionarea unui apel telefonic in timpul executiei aplicatiei;
  • destroyApp() – functia de inchidere a aplicatiei; este executata la terminarea aplicatiei si contine rutinele de eliberare a resurselor; are rol asemanator functiei destructor;
Secventa de cod, descrisa anterior, reprezinta cel mai mic program de tip MIDlet. Acest program nu are efecte vizuale deoarece se termina imediat dupa ce a fost lansat in executie. Daca ne gandim la o aplicatie scrisa in C, MIDlet-ul MidletHelloWorld in forma curenta, este echivalent cu

void main()
{
}

Cele trei metode din clasa MidletHelloWorld sunt obligatorii, situatie generata prin derivarea din MIDlet. Ele gestioneaza starile posibile in care se gaseste aplicatia. Acest concept mai este intalnit si la alte aplicatii Java si anume la applet-uri.
Pentru a afisa un mesaj pe ecran, aplicatia trebuie sa aiba acces la controler-ul resurselor grafice. Acest lucru se face prin definirea unui obiect de tip Display ce este initializat la start-ul aplicatiei.

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class MidletHelloWorld extends MIDlet {
private Display display = null; //referinta la managerul vizual al aplicatiei
public void startApp() {
if(display==null)

display = Display.getDisplay(this);
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}
}


Deoarece caracteristicile hardware si software ale dispozitivului mobil impun restrictii asupra aplicatiilor Java Mobile (lucrurile sunt total diferite fata de aplicatiile Java pentru PC), putem dezvolta doar aplicatii vizuale care afiseaza maxim un formular (sau fereastra) la un moment dat. Mai mult, deoarece ecranul are dimensiuni reduse, acest formular acopera tot display-ul dispozitivului. Pentru a gestiona aceste resurse vizuale si pentru a stabili ce formular este activ este nevoie de referinta de tip Display.

Pentru a afisa pe ecran textul Hello World ! este nevoie de un formular si de un container pentru string-ul respectiv. Astfel vom folosi un formular de tip TextBox (a nu se confunda cu control-ul TextBox din alte limbaje de programare) ce reprezinta un formular ce contine doar un control de tip casuta de dialog cu proprietatea multiline implicit setata. Motivul existentei acestui tip de resursa vizuala este dat tot de resursele limitate de care dispunem pe un telefon. Alte tipuri de formulare permit realizarea unor aplicatii mai complexe, insa ele vor fi descrise in alt post.
Prin adaugarea formularului, codul devine:

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class MidletHelloWorld extends MIDlet {
private Display display = null; //referinta la managerul vizual al aplicatiei
private TextBox tbMainForm; //TextBox pentru a afisa mesajul de salut

public MidletHelloWorld(){
tbMainForm = new TextBox("My First MIDlet", "Hello World !", 100, 0);
}

public void startApp() {
if(display==null)
display = Display.getDisplay(this);
display.setCurrent(tbMainForm); //activarea formularului
}


public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}
}
In secventa de cod, se observa ca afisarea formularului s-a realizat in metoda startApp prin intermediul metodei setCurrent a obiectului de tip Display.
Compilarea si rularea aplicatiei conduce la obtinerea in emulator a imaginii urmatoare

La lansarea emulatorului, acesta nu executa imediat aplicatia. Pentru a o porni trebuia data comanda Launch (butonul din dreapta al emulatorului).
Cu toate ca aplicatia este destul de simpla, ea exemplifica foarte bine structura unui MIDlet, iar elementele prezentate se regasesc in toate aplicatiile de acest tip.
Pentru a-l testa intr-un mediu real, pe telefonul mobil personal, MIDlet-ul din acest exemplu trebuie instalat pe dispozitivul mobil. Acest lucru se face prin transmitere pe telefon (prin Bluetoth, IR, Wireless sau cablu de date) a 2 fisiere ce se gasesc in subdirectorul dist al proiectului (situatia este valabila doar pentru Netbeans). Daca proiectul se numeste MobileApplicationHelloWorld , atunci cele 2 fisiere sunt MobileApplicationHelloWorld.jad (descrierea aplicatiei) si MobileApplicationHelloWorld.jar (sursa aplicatiei).

Niciun comentariu:

Trimiteți un comentariu