Dispozitive de programare cu midp

Conceptul MIDP și J2ME API pentru construirea de aplicații wireless cross-platform.

Producătorii pot utiliza dispozitive compatibile cu MIDP pentru a dezvolta aplicații care pot rula pe o varietate de platforme fără fir, cu îmbunătățiri minore ale platformei și configurației. În acest articol, care este primul dintr-o serie de trei părți, se discută conceptul de API MIDP și platforma J2ME. Veți vedea API-ul folosit pentru a crea un cod grafic, șablon, stocat care să servească pentru conectarea la resurse externe. (3500 de cuvinte)

Industria fără fir uimeste viteza dezvoltării tehnologiei. Datorită ratelor ridicate, orice produs nou poate deveni depășit în câteva luni. Rezultatul dezvoltării dinamice este lipsa standardizării platformelor de lucru într-un mediu fără fir. Echipele de dezvoltare se confruntă cu nevoia de a stăpâni numeroasele limbi și procese de marcare, astfel încât produsul lor să funcționeze cu dispozitive diferite. Departamentul de marketing trebuie să schimbe în mod constant direcția avansării într-o piață în schimbare.

Dispozitivele compatibile cu profilul de dispozitive mobile de informații (MIDP) vor permite producătorilor să dezvolte aplicații care vor funcționa pe mai multe platforme, fără eforturi prea mari de configurare și procesare pentru fiecare platformă. Aceasta, la rândul său, va permite dezvoltatorilor să se concentreze asupra funcționalității sistemelor.

Introducere în J2ME

Platforma J2ME este construită în limbajul de programare Java pentru a oferi funcționalitate maximă dispozitivelor cu resurse limitate. Se oferă un set de funcții de bază și un număr de clase specializate.

Acest articol se concentrează pe luarea în considerare a CLDC (configurația conexiunii dispozitivelor cu constrângeri) și a claselor MIDP. Astfel de seturi de clase constituie așa-numitul profil în ceea ce privește J2ME. Profilul oferă limitări puternice privind memoria dispozitivului, viteza procesorului, capacitatea bateriei și capacitatea canalului.

Introducere în API-ul CLDC

Introducere în profilul MIDP

Un scurt exemplu

Mai jos este un exemplu simplu de tipărire a HelloWorld, care oferă o idee generală despre ciclul de dezvoltare a midlet-urilor. Numele MIDlet-ului a fost dat codurilor care rulează pe dispozitivele mobile. Este asemănător unui applet, deoarece conține o interfață de utilizator, date și capabilități de gestionare.

Figura 1 prezintă o copie a ecranului emulatorului DefaultGrayPhone din suita J2ME Windows, care arată rezultatul operației de tip "midlet".

Dispozitive de programare cu midp

Figura 1. Rezultatul medalie HelloMidlet

Pentru a susține clasa MIDlet, sunt importate clase speciale, interfața CommandAction și clasele interfeței utilizator (UI). Aceste clase sunt incluse în API-ul MIDP ca parte a setului modificat de clase de limbaj de programare Java. Mai jos, în acest articol, vom discuta în detaliu clasele din API-ul MIDP.

Această linie declară că clasa HelloMidlet extinde clasa MIDlet și implementează interfața CommandListener. Fiecare MIDlet trebuie să extindă clasa abstractă MIDlet și să implementeze în ea cele trei metode descrise mai jos, care vă permit să finalizați dezvoltarea MIDletului.

Deschideți o conexiune care indică informații despre lungime, tip și codificare. Această interfață extinde interfața StreamConnection.

Deschideți o conexiune cu capabilități de comunicare HTTP utilizând antete și comenzi specifice HTTP. Această interfață extinde ContentConnection.

Metoda open () a conectorului are următoarele forme de bază:

Javax.microedition.ui bibliotecă

Biblioteca javax.microedition.ui conține clase pe care le puteți utiliza la dezvoltarea interfeței utilizator MIDlet. API-ul este conceput pentru a crea unul dintre cele două tipuri de design.

Obiectul Ecran și subclasele sale, pe care le vom discuta mai târziu în exemplul HelloMidlet, sunt folosite pentru a crea interfețe sub formă de formulare. În a doua parte, vom analiza capabilitățile acestor interfețe, în plus, ele pot fi examinate prin documentația Javadoc.

Biblioteca javax.microedition.rms

Biblioteca javax.microedition.rms conține clasele necesare pentru implementarea stocării temporare a datelor în dispozitiv. Aceste baze de date au o capacitate limitată de stocare și preluare a datelor datorită limitărilor privind mărimea dispozitivului.

API-ul bazei de date va fi discutat în a doua parte a acestei serii.

Biblioteca javax.microedition.midlet

Biblioteca javax.microedition.midlet conține clasa MIDlet. Clasa MIDlet execută ciclul principal MIDlet și are metoda getAppProperty (cheie) pentru a accesa informații despre proprietățile programului instalate în fișierul jad.

Să începem

După ce am învățat lecția din exemplul precedent și am înțeles compoziția platformei MIDP, ne îndreptăm acum spre procesul de instalare a mediului MIDP. Investigăm în continuare procesul de construire și executare a clasei MIDlet.

instalare

Sun a oferit un nou set de instrumente care a servit la simplificarea dezvoltării produselor midlet. 2 Micro-revizuirea instrumentelor wireless Java (vezi J2MEWTK) are tot ce aveți nevoie pentru a dezvolta midlet-uri.

În prezent, există două limitări pentru instalarea pachetului. În primul rând, poate funcționa numai în Windows. Poate că în curând Sun va anunța lansarea versiunilor pentru Solaris și Linux. În al doilea rând, numele directorului de instalare nu trebuie să conțină spații, care sunt necesare procesului intern de compilare.

După descărcarea setului de instrumente, trebuie doar să faceți clic pe el cu mouse-ul de câteva ori și va începe să funcționeze. Înainte de a începe instalarea, vi se solicită calea de plasare a fișierelor de programe. J2MEWTK se poate integra cu mediul de dezvoltare Forte, care este de asemenea furnizat de Sun. Pentru a instala diviziunile Forte în setul de instrumente, trebuie să selectați o configurație personalizată la instalare și nu o configurație de eșantion.

Următoarea structură este creată în directorul specificat. Rețineți că, așa cum am menționat mai devreme, dacă numele directorului conține spații, procesul de pre-scanare nu va fi efectuat corect.

Rularea KToolbar

KToolbar rulează atât din linia de comandă, cât și din meniul Start, unde este creată o scurtătură în timpul instalării. Lansarea se numește Ktoolbar.bat.

Ecranul ar trebui să apară ceva similar cu imaginea din Figura 2.


Fig. 2. KToolbar de J2ME fără fir

Crearea unui proiect

După pornirea programului, puteți crea un fișier de proiect HelloMidlet, care a fost discutat mai devreme. Pentru aceasta, faceți clic pe butonul "New Project." Din Fig. 2. Ecranul prezentat în Fig. 3 dialog.


Fig. 3. Dialogul noului proiect.

Această fereastră de dialog vă solicită numele proiectului și numele clasei, care va fi cel principal pentru midlet și care, prin urmare, va cădea direct în proiect. Proiectul poate conține mai multe miezuri, astfel încât să puteți modifica numele MIDlet-ului dacă este necesar.

În exemplul nostru, tastăm HelloMidlet ca nume de proiect, precum și în câmpul de clasă. După introducerea informațiilor, apăsăm butonul "Creare proiect", astfel încât fereastra pentru introducerea setărilor pentru proiect să apară, așa cum se arată în Fig. 4.


Fig. 4. Setările proiectului HelloMidlet.

Setările din Fig. 4 este implicit. Valoarea MIDlet-Jar-URL este compilată de numele proiectului. Nu este necesar să modificați valorile care apar.


Fig. 5. Atribute opționale ale proiectului HelloMidlet

În Fig. 5 arată ecrane KToolbar unde puteți specifica atributul proiectului. MIDletul poate folosi aceste atribute în aplicație. Prin urmare, este recomandat să specificați aici valori constante, mai degrabă decât să le scrieți în cod.


Fig. 6. Midlets în proiectul HelloMidlet

În Fig. Figura 6 prezintă o listă a tuturor midlet-urilor care sunt incluse în proiectul HelloMidlet. Tulkit J2ME pentru Windows vă permite, de asemenea, să modificați ordinea inițierii midlet-urilor pe emulator din fișierul jar. În cazul nostru, MIDlet este doar un MIDlet-1.

Compilarea MIDletului

J2MEWTK are un utilitar încorporat care efectuează procesul de compilare a proiectului. Pentru a compila, trebuie să faceți clic pe butonul "Construiți", care este vizibil în Fig. 2. În acest instrument, procesul de compilare este automat, dar în altele este posibil să nu se întâmple. Prin urmare, descriem procesul în pași:

  1. Pentru lucrarea de compilare, clasele și tmpclasses
  2. rezultatele compilării codului sursă Java sunt plasate în directorul tmpclasses
  3. fișierele de clasă sunt testate și rescrise în directorul de clase
  4. fișierele bifate sunt adăugate în jar
  5. jar adaugă fișiere de resurse
  6. un memento este generat pentru a actualiza dimensiunile fișierelor de jar și jad

Ca urmare a muncii efectuate în borcan, toate fișierele de clasă verificate care sunt necesare pentru scrierea programului pe dispozitiv intră și fișierul jad este creat pentru proiect.

Fișierul jad conține informații complete despre MIDlet, numele și valorile proprietăților sale. Fișierul jad pentru clasa HelloMidlet din exemplul nostru arată astfel:

Aici, printre alte domenii, este listat numele MIDletului, adresa URL, mărimea, versiunea. Linia cea mai interesantă este MIDlet-1. În acest fișier jad există doar un MIDlet raportat, deci această linie este una. Dacă am avea de-a face cu n midlet, am avea n linii:

Fiecare rând conține numele MIDlet, fișierul de desen MIDlet și numele clasei MIDlet.

De ce am nevoie de un control preliminar?

După cum sa menționat mai devreme, fișierele de clasă suferă o fază pre-test. Acest proces asigură că fișierele de clasă nu vor efectua operațiile incorecte specificate mai devreme. În plus, este util să luați măsuri de optimizare pe o mașină mai puternică decât să lăsați-o pe partea virtuală a aparatului.

KVM, care lucrează la memorie în 1 K, este optimizat pentru procesele din astfel de dispozitive, și nu pentru operațiile elementare, care pot fi eliminate cu verificări preliminare.

Executarea MIDletului

Executarea lui midlet poate fi de asemenea controlată de la J2MEWTK. În Fig. 2 afișează KToolbar cu butonul interzis "Run". Acest buton este disponibil când proiectul este încărcat. Pentru a porni aplicația MIDlet, trebuie să selectați dispozitivul pe care îl puteți testa din următoarea listă:

După selectarea dispozitivului, trebuie să faceți clic pe Executare și să porniți emulatorul. MIDletul poate fi rulat din linia de comandă cu comanda:

Comanda sintaxa este descrisă în secțiunea 5.5.2.1 din manualul de utilizare al distribuției Soarelui.

Un exemplu de mediu grafic

Următorul exemplu ilustrează funcționarea unui mediu grafic simplu care vă poate ajuta să stăpâniți dezvoltarea codurilor grafice în mediul MIDP.

Un exemplu simplu cu grafică conține următoarele clase:

  • GraphicalMidlet: clasa MIDlet care asigură interacțiunea cu dispozitivul
  • GraphicalCanvas: Zona de desenare a obiectelor grafice
  • GraphicalObject: Obiect grafic care implementează interfața Runnable
  • MovingTextObject: Mutarea obiectului de text
  • VerticalScrollingTextObject: extensie a unui obiect text

În acest exemplu, clasa GraphicalMidlet extinde clasa MIDlet și își moștenește comportamentul. Această clasă este de asemenea responsabilă pentru implementarea interfeței CommandAction pentru procesarea comenzii de ieșire când utilizatorul termină aplicația.

Constructorul de clase GraphicalMidlet funcționează cu un obiect static de afișare. Constructorul creează o instanță a clasei GraphicalCanvas, pentru care execută CommandListener.

În constructorul GraphicalCanvas, este creat un nou VerticalScrollingTextObject, care transmite zona de desen la mesaj. În acest mediu simplu, informații suplimentare despre viteza, locația și culoarea mesajului text nu sunt procesate. Implementarea acestor funcții poate fi efectuată de către cititor ca exercițiu.

Aplicația GraphicalCanvas folosește metoda vopselei pentru repopsirea ecranului aplicației. În acest caz, zona de desen șterge toate desenele anterioare și dă GraphicalObject o imagine autoportantă.

start () GraphicalMidlet apelează metoda start () pentru a spune GraphicalCanvas să pornească. În acest exemplu, clasa canvas creează un nou flux de programe care conține un Runnable GraphicalObject. Apoi, clasa canvas pornește un fir nou, astfel încât să poată efectua procesarea înainte de a apela metoda repaint și de a inițializa desenul în zona de desen.

De asemenea, puteți dezvolta acest exemplu înainte de a crea mai multe obiecte grafice. GraphicalObject pe zona de desen și să le executați simultan.

Clasa GraphicalObject eliberează interfața Runnable și poate fi pornită de fluxurile din clasa GraphicalCanvas în metoda start (). Subiectul va funcționa până la terminarea metodei stopThread.

GraphicalObject nu știe când să deseneze sau să muteze obiecte create pe baza sa, dar definește două metode care ar trebui redefinite. Acestea sunt următoarele metode:

Prin redefinirea acestor metode, puteți implementa mișcarea dorită a MovingTextObject, precum și modul în care este trasată. Astfel, pentru a implementa un alt obiect, de exemplu, o roată dințată, trebuie doar să schimbați metodele de vopsire și să vă mișcați.

Metoda move () apelează metodele getX () și getY () pentru a obține pozițiile X și Y ale obiectului în mișcare. Acest lucru se face pentru a demonstra eventualele extinderi ale mediului. În acest caz, extensia este destul de simplă, metoda getX () returnează o valoare constantă, metoda getY () mărește poziția Y până când se ajunge la limita inferioară a afișajului.

Creând diferite implementări ale programului MovingTextObject, puteți implementa diverse modele de trafic. De exemplu, clasa RandomMovingTextObject poate implementa un generator de valori aleatoare pentru pozițiile X și Y și le poate returna de la metodele getX și getY.

În continuare în această serie

În primul articol, m-am însărcinat să vă prezint conceptul de MIDP, demonstrând ciclul de viață al unei aplicații utilizând un cod simplu și utilizând ca exemplu un exemplu grafic asemănător cu applet-urile simple pe care mulți dintre voi le-ați creat odată.

În Partea 2, vom discuta despre sistemele de stocare disponibile prin MIDP în dispozitivele fără fir. Folosind un exemplu bazat pe formulare, vom analiza API-urile pe care le puteți utiliza pentru a crea o bază de date fără fir.

În Partea 3, vom examina API-ul de conectare pentru dispozitivele wireless cu surse de date externe, de exemplu, cu adrese URL. În plus, un exemplu mai semnificativ al aplicației va ilustra câteva concepte care fac utilizarea MIDP mai eficientă.

concluzie

Implementarea codului Java în dispozitivele fără fir este următorul pas logic în dezvoltarea platformei. Midlets au potențialul de a revoluționa platforma, permițând dezvoltatorilor să ofere utilizatorilor de dispozitive mobile din ce în ce mai funcționale și ușor de utilizat soluții. Am combinat principalele îmbunătățiri în domeniul programării, de exemplu, locația, iar platforma sa dovedit a fi potrivită pentru implementarea instantanee.

Dezvoltările în acest domeniu sunt foarte plăcute, deoarece permit dezvoltatorilor wireless din lume să învețe o mulțime de lucruri noi grație API-ului Java. Platforma oferă conceptului de "Write Once, Run Anywhere" un nou sens chiar și în Java.

Michael Cymerman este directorul de cercetare și dezvoltare al GroupServe, o firmă de telecomunicații din Washington, DC, care creează aplicații pe Internet pentru comunicarea în grupuri ușoare.


Avertizare. mysql_connect () [function.mysql-connect]: Nu se poate conecta la serverul MySQL local prin socket '/tmp/mysql.sock' (2), în /pub/home/javaport/javaportal/books/show2b.php pe linia 11

Avertizare. mysql_db_query () [function.mysql-db-interogare]: Nu se poate conecta la serverul MySQL local prin socket '/tmp/mysql.sock' (2), în /pub/home/javaport/javaportal/books/show2b.php pe linia 19

Avertizare. mysql_db_query () [function.mysql-db-interogare]: Un link către serverul nu a putut fi stabilită în /pub/home/javaport/javaportal/books/show2b.php pe linia 19

Avertizare. mysql_fetch_array (): argumentul furnizat nu este valid Resursa de rezultate MySQL în /pub/home/javaport/javaportal/books/show2b.php on line 30
Aflați la ce vă gândiți cu adevărat acum.


[a apărut o eroare în timpul procesării acestei directive]


Avertizare. mysql_connect () [function.mysql-connect]: Nu se poate conecta la serverul MySQL local prin socket '/tmp/mysql.sock' (2), în /pub/home/javaport/javaportal/news/worldnews.php pe linia 91

Avertizare. mysql_db_query () [function.mysql-db-interogare]: Nu se poate conecta la serverul MySQL local prin socket '/tmp/mysql.sock' (2), în /pub/home/javaport/javaportal/news/worldnews.php pe line 93

Avertizare. mysql_db_query () [function.mysql-db-interogare]: Un link către serverul nu a putut fi stabilită în /pub/home/javaport/javaportal/news/worldnews.php pe linia 93

Avertizare. mysql_fetch_array (): argumentul furnizat nu este valabil MySQL Resource în /pub/home/javaport/javaportal/news/worldnews.php on line 95