Tendinte Actuale In Dezvoltarea Aplicatiilor Folosind Platforma Java Micro Edition (java Me)
1.Introducere
Începutul limbajului Java este în toamna anului 1991, când firma Sun Microsystems a înfințat un proiect cu numele Green condus de James Gosling. Scopul echipei Green era să plaseze firma Sun Microsystems pe piață produselor electronice comerciale. Inginerii și dezvoltatorii de soft de la Sun au căutat microprocesoare care să ruleze pe o mulțime de mașini ,în particular pe sisteme distribuite care lucrează în timp real. Cheia succesului firmei Sun a fost abilitatea lucrului pe platform multiple. După patru ani de lucru echipa Green finalizează specificațiile limbajului Java. Apoi,compania Sun vinde licență firmelor IBM, Microsoft, Silicon Graphics, Adobe și Nestcape.
Java este un limbaj de programare orientat obiect consacrat. Cele mai multe aplicații distribuite sunt scrise în java ,iar noile evoluții tehnologice permit utilizarea să șip e dispozitive mobile gen telefon, agenda electronică etc. În felul acesta se crează o platform unică , la nivelul programatorului,deasupra unui mediu eterogen extreme de diversificat.
Avantajele sunt evidente, atât pentru proiectanți , care “scriu o dată și o execută pe orice mașină virtuală Java(JVM)”, cât și pentru utilizatori ,care vor beneficia de spectru îmbogățit de servicii. De aceea se poate afirmă cu încredere că Java este un câștigător, în lumea volatile a tehnologiilor pe calculator.
Java este un limbaj de programare de nivel înalt ,proiectat inițial pentru realizarea de aplicații pentru internet și mai cu seama pentru Web. Acesta este utilizat în present cu success și pentru programarea aplicațiilor destinate intranet-urilor. În acest sens, multe firme recurg la limbajul Java în procesul de informatizare întrucât oferă un foarte bun support pentru tehnologiile de vârf și, nu în ultimul rând, pentru faptul că este gratuit și în mod continuu îmbogățit și îmbunătățit .
Carcateristicile limbajului Java:
-Limbaj interpretat și compilat- Un limbaj este interpretat dacă instrucțiunile unui program scris în acel limbaj sunt procesate linie cu linie și traduse în cod mașină. Un limbaj este compilat dacă un program scris în acel limbaj este introdus într-un cod pe care calculatorul îl poate ”înțelege” mult mai ușor.Programele interpretate sunt mai lente decât cele compilate, însă cele compilate sunt de obicei dependențe de platforma respective.
-Limbaj independent de platform- La instalarea limbajului Java, se va crea o mașină virtuală Java care are drept scop traducerea intrucțiunilor unui byte code Java în instrucțiuni mașină pentru platform curentă. Aceste fișiere intermediare byte code pot fi copiate și executate pe orice platform.
-Limbaj orientat obiect- Cea mai importantă proprietate a limbajului Java este orientarea obiect, aceasta fiind privită ca o trăsătură implicită. Java pune în evidență toate aspectele legate de programarea orientată obiect :obiecte, trimitere de parametri, incapsulare, clase, biblioteci,moștenire și modificatori de acces.
-Limbaj concurent- Concurența înseamnă capacitatea unui program de a execută mai multe secvențe de cod în același timp. O secvență de cod java se numește fir de execuție(thread).
Datorită posibilității creării mai multor fire de execuție,un program Java poate să execute mai multe sarcini simultan (de exemplu animația unei imagini, trasmiterea unei melodii spre placă de sunet etc.).
-Limbaj simplu- Spre deosebire de C++, care este cel mai popular limbaj orientat obiect, Java elimină câteva dintre trăsăturile acestuia: posibilitatea moștenirii multiple este exclusă, șirurile sunt incapsulate într-o structura de clase.În java nu există poiteri, iar alocare și dealocarea memoriei se face automat. Există un mecanism de eliberare a memoriei pus în practică de un fir de execuție de prioritate mică.
-Limbaj distribuit- Java este distribuit deoarece permite utilizarea obiectelor locale și de la distanță. Limabjul Java permite posibiliatea dezvoltării de aplicații pentru Internet, capabile să ruleze pe platform distribuite și eterogene. Java respectă standardul IEEE pentru structurile de date și se poate utiliza în aplicații de rețea, deorece respectă protocoalele de rețea, cum ar fi FTP,HTTP etc.
-Limbaj performant- Interpretorul Java este capabil să execute un byte code aproape la fel de repede ca un cod compilat. Având posibilitatea să lucreze cu fire multiple, Java justifică faptul că este un limbaj performant.
-Limbaj dynamic și robust- Java întârzie alocarea obiectelor și legarea dinamică a claselor pentru momentul execuției. Astfel se vor evita erorile de alocare chiar dacă mediul s-a schimbat de la ultima compilare a programului. Faptul că Java este robust se justifică prin eliminarea utilizării pointerilor, care erau generatoare de erori în cazul programelor C/C++. Java verifică memoria dinamic înainte de a fi alocată și are un sistem automat de alocare/dealocare a memoriei.
-Limbajul singur- Programele Java nu pot accesa memoria heap,stack sau alte secțiuni protejate de memorie, deoarece Java nu folosește pointeri și alocă memorie doar la execuție. Înainte că interpretorul Java să execute byte codul, se verifică dacă este un cod Java valid prin cercetarea accesului la date, conversiilor de date nepermise, valori și parametri incorecți, depășirea stivei.
De la apariția să și până în present, Java a fost îmbunătățit incontinu, transformându-se într-un mediu de dezvoltare pentru o largă varietate de aplicații,cum ar fi aplicații de tip client/server, aplicații Internet sau aplicațiile strandard independente.
Cea mai recentă platform Java este J2ME(Java2MicroEdition), care oferă suportul pentru creearea aplicațiilor care rulează pe dispozitive mai mici fără fir, cele mai cunoscute la noi fiind telefonul mobil și pagerul.
J2ME face parte din platform java 2, care mai cuprinde J2EE(Java 2 Enterprise Edition) și J2SE(Java 2 Standard Edition).
Tehnologia J2ME este asemănătoarea cu cea J2SE, diferențele constând în faptul că dispozitivele pentru care sunt destinate aplicațiile J2ME folosesc resurse limitate.Astfel pentru a crea astfel de aplicații este folosit un subset de clase din pachetele java.lang, java.io, java.util, pachete care fac parte din J2SE. În plus, pentru J2ME au fost construite două mașini virtuale: C Virtual Machin(CVM) și K Virtual Machin(KVM). Acestea ocupă puțină memorie și necesită mult mai puține resurse decât mașina virtuală pentru tehnologiile J2EE ȘI J2SE.
Pentru a rula KVM, un dispozitiv fără fir trebuie să aibă anumite caracteristici hardware. Printre acestea se numără condițiile minimale:
-între 160KB de memorie internă pentru a rula platform Java
-procesor pe 16-biți sau 32-biți cu viteză de 25MHz
-consumul redus de energie oferit adesea de o baterie
-conectare la un anumit tip de rețea adesea fără fir, cu o lărgime de bandă limitată de 9600bps
-rezoluție de 96×54
-adâncimea de culoare de 1 bit.
Mediu J2ME este furnizat de către Sun în cadrul pachetului Java 2 Micro Edition Wireless Toolkit. Acest pachet este disponibil pe două platforme: Microsoft Windows și Sun Solaris.
O aplicație care poate rula pe un dispozitiv “fără fir” se numește middle. Un astfel de midllet se aseamănă ca tehnologie cu tehnologia appleturilor Java.
2.Înțelegerea procesului de creare MIDlet – Fără Toolkit
Există șapte pași în crearea unui MIDlet. Aceste etape sunt: proiectarea, codificarea, compilarea, preverificarea , ambalarea, testarea și implementarea. Unele dintre aceste etape nu sunt strict MIDlet-centrice (de exemplu, fiecare aplicație trebuie să fie proiectată, codificată și compilată), dar le vom acoperi aici pentru că există diferențe-MIDlet-centrice. Setul de instrumente abstractizează o mulțime din acești pași astfel încât este mai ușor pentru tine de a tine o schemă generală a lucrurilor. Această este bine o dată ce știi procesul, dar atunci când doar ce ai început, trebui să codezi de mâna, mai degrabă decât folosind o abstractizare. Pentru a te asigura că vom obține o înțelegere a acestor pași, să ne ajutăm de un exemplu simplu. Vom crea un MIDlet care, atunci când este executat, va imprima data și ora curentă pe un dispozitiv mobil pentru o perioada scurtă de timp. Împreună cu aceasta în minte, figura 1 te va ajuta să înțelegi succesiunea acestor etape. De asemenea, rețineți că voi explică ciclul de viață al MIDlet mai târziu. Pentru moment, să punem un MIDLET în funcțiune, care va ilustra aceste etape.
Figura 1. Pasii crearii unui Midlet
2.1. Pasul 1 : Proiectarea
Proiectarea MIDlet-urilor este diferită de alte aplicații pe care este posibil să le fi creat , pur și simplu pentru că MIDlet rulează într-un mediu care este foarte diferit . Există mai multe aspecte , nu doar cele care sunt cele mai vizibile (de exemplu ,interactivitatea MIDlet cu utilizatorul ) , dar altele care au impact pe utilizare.
Pentru aplicarea exemplului nostru Date-Time MIDlet nu are nevoie de interactivitate cu utilizatorul . Este nevoie pentru a afișa data și ora curenta timp de câteva secunde atunci când utilizatorul execută MIDlet-ul . Pentru cazurile simple, cum ar fi acesta probabil este suficient pentru a imita designul MIDlet prin tragerea lui pe o bucată de hârtie . Pentru modelele complexe cu mai multe ecrane , cel mai bine este de a proiecta pe ecrane profesionale înainte de a începe procesul de codare actual.
2.2. Pasul 2: Codificarea
Codificarea fiecărui MIDlet trebuie să extindă clasa abstractă MIDlet găsită în pachetul javax.microedition.midlet, la fel ca crearea unui applet prin extinderea clasei java.applet.Applet. La minim, MIDlet-ul trebuie să suprascrie trei metode din această clasa abstractă, startApp (),pauseApp (), și destroyApp (boolean necondiționat). Aici este clasa:
În acest exemplu, constructorul DateTimeApp creează elementul care este necesar pentru a afișa ora pe ecranul unui dispozitiv și startApp metoda ce face sarcina reală pentru afișarea acestui element. Nu vă faceți griji dacă nu înțelegeți cum funcționează elementul alert sau în cazul în care constructorul sau alte metode sunt apelate. El va acoperi prima în următoarea parte, atunci când ne uităm la elementele GUI ale MIDP 2.0, iar acesta din urmă va apărea în partea de MIDlet durata ciclului de viață.
2.3. Pasul 3: Compilarea
Cu acest cod simplu în loc, acum trebuie să știți cum să-l compilați astfel încât să fie gata pentru dispozitivele mobile. Compilarea MIDlet nu este foarte mult diferită de compilarea aplicațiilor Java normale. Încă utilizați javac ca compilator, cu excepția faptului că trebuie să schimbați CLASSPATH de pornire în timp ce compilați MIDlet. Acest lucru are ca efect modificarea claselor din baza Java pe care compilatorul Java le folosește pentru a compil MIDlet împotriva, asigurându-se astfel că compilarea este orientată spre un set restrâns de API-uri Java pentru platforma J2ME. Deci, în loc de elaborarea împotriva java.lang. Date în Java "normal", vrei de fapt compilarea făcută pentru java.lang.Date J2ME lui. Acest lucru se face prin indicarea claselor CLDC și MIDP prin opțiunea -bootclasspath javac în timp ce compilează.Acest lucru este arătat mai jos pentru întocmirea DateTimeApp MIDlet. Pentru a face această compilare, asigurați-vă că introduceți comandă prin navigarea la directorul (C:\WTK22\articol) prin linia de comandă.
(C:\WTK22\articol>javac-bootclasspath..\lib\cldcapi11.jar;..\lib\midpapi20.jar
com\J2ME\part1\DateTimeApp.java)
Observați că am făcut elaborarea împotriva API CLDC 1.1 și MIDP 2.0 respectiv versiuni API, prin includerea acestor biblioteci în opțiunea bootclasspath. Am fi putut face compilarea față de alte versiuni dacă ar fi fost necesar, prin simplul fapt că arătăm spre bibliotecile lor.
2.4. Pasul 4: Preverificarea
Înainte de a putea implementa clasa ta MIDlet, aceasta trebuie să fie preverificată. Verificarea byte code este un pas efectuat de JVM(Java Virtual Machine) înainte de a porni orice fișier de clasa pentru a se asigura că fișierul de clasa este conceptual corect structural și conform specificației JVM. Dacă fișierul de clasa nu are această verificare, se respinge și JVM se oprește, indicând fie securitatea sau integritatea încălcată a fișierul clasei. Această verificare se face prin toate JVM, chiar mici JVM conținut într-o configurație CLDC pentru un dispozitiv J2ME. Deși acest lucru nu este o problema pentru aplicații "normale"
,verificarea în dispozitive J2ME este o resursă și constrângere de memorie care pur și simplu nu se poate ocupă (sau nu ar trebui să se ocupe). Prin urmare, nu e nevoie de preverificare. Preverificarea este o parte dintr-un proces special de verificare în doi pași, în special conceput pentru dispozitive constrânse, cum ar fi cele care rulează JVM CLDC-based. Ideea este de a lasă un dezvoltator de preverified a cursurilor sale care limitează suma de muncă necesară pentru a fi efectuată în cazul în care clasele sunt verificate în aparat. Acest proces de preverificare adaugă informații speciale pentru clasele care se identifică ca preverified și face ca procesul de pe dispozitiv sa fie mult mai eficient. Păstrând în vedere acest lucru, preverifica Date-Time MIDlet al tău. Toolkit wireless vine cu un instrument de preverificare în folderul bin de instalare (C:\WTK22\bin). Următoarea comandă, atunci când sunt executate de la (C:\WTK22\articol, va preverifica DateTimeApp.class)creat în etapă anterioară. (C:\WTK2\articol> ..\bin\preverify.exe-classpath..\lib\cldcapi11.jar;..\lib\midpapi20.jarcom.j2me.part1). DateTimeApp în mod implicit, preverificatorul va crea versiunea preverified de dumneavoastră DateTimeApp.class fișier într-un folder numit ieșire în directorul curent. Ea va păstra structura pachet, astfel încât clasa ta preverified va fi acum în folderul (C:\WTK22\articol\ieșire\com\J2ME\part1\). Puneți, desigur, punctul de ieșire într-un alt dosar, folosind opțiunea -d pentru instrumentul preverify, dar pentru moment, utilizați folderul implicit de ieșire.
2.5. Pasul 5: Pachete
Ambalarea MIDlet, astfel încât acesta să fie gata pentru testare și implementare este un process destul de complex, cu mai multe etape. Deși fiecare pas este simplu, ele trebuie să fie urmate în ordine corectă.
Primul pas este de a crea un fișier manifest. Acest fișier manifest descrie conținutul arhivei Java (JAR) fișier pe care îl vom crea în următorii pași. Există mai multe atribute care pot merge în acest dosar, dar pentru dvs. Date-Time MIDlet, doar la cele care sunt necesare. Conținutul acestor fișiere este afișat aici:
Salvați acest fișier că MANIFEST.MF în (C:\WTK22 articol folderul\ieșire). (Notăm o nouă linie după ultimele atribute, MIDlet-vendor. Acestea trebuie să fie prezente, în caz contrar aceste atribute nu vor fi recunoscute.)
Apoi, creați fișierul JAR ca pachete până la DateTimeApp.class preverified fișier și fișierul manifest. Pentru a crea acest fișier JAR, navigați la (C:\WTK22\articol\ieșire) director și va emite următoarea comandă:
(C:\WTK22\articol\ieșire> borcan cvfm DateTimeApp.jar MANIFEST.MF\com)
Acest lucru va crea fișierul DateTimeApp.jar în actualul (C:\WTK22\articol\ieșire) dosar.
În ultimul pas este creat un fișier care are o extensie pe .jad. Un Java Descriptor (JAD) puncte de fișiere la locația MIDlet îl descrie astfel încât un dispozitiv J2ME să poată fi instalat. Din nou, acest fișier poate conține mai multe atribute pentru un singur MIDlet (sau pentru mai multe MIDlet-urile), dar pentru dumneavoastră Dată-Time MIDlet, te v-a trimite la cele care sunt necesare.
Salvați acest fișier că DateTimeApp.jad în același folder ca și fișierul JAR (C:\WTK22\ articol\ieșire). Voi explică atributele din acest fișier mai târziu, dar acum, rețineți că valoarea atributului MIDlet-Jar-Size lipsește. Acestă lipsa a valorii va aduce la ultimul pas al etapei de ambalare, în cazul în care determinam dimensiunea fișierului DateTimeApp.jar și vom punem această valoare în acest dosar JAD, în biți reali. Este foarte important pentru a obține exact acest drept, deoarece instalarea acestui MIDlet va eșua dacă această valoare nu este diferită de dimensiunea reală. „On my machine, this value is 1469 bytes, and therefore, this is what this attributelooks like on my machine”:
Aceasta completează partea de ambalare. Ei bine, de fapt, există alți pași în ambalaj despre care am putea vorbi (de exemplu, semnarea și confuzia), dar pentru a menține lucrurile simple, voi discuta despre aceste etape mai târziu.Acum, vom trece la testarea MIDlet-ului dumneavoastră.
2.6. Pasul 6: Testarea
Înainte de implementarea MIDlet-ului tău, acesta trebuie să fie testat prin utilizarea unei baze comune dispozitiv-emulator care imită funcționalitatea unui dispozitiv real pe computer.
Acest emulator este parte a setului de instrumente wireless și oferă funcționalități care asigura majoritatea dispozitivelor la care MIDlet se adresează. Acest emulator este prezent în dosarul bin a Toolkit.
Din directorul de ieșire creat în etapa anterioară de preverificare , și unde acum avem un MIDlet ambalat în formă de JAR și JAD fișiere, emite următorea comandă pentru a rula emulatorul cu acest fișier JAD ca o opțiune.
(C:\WTK22\articol\ieșire> ..\ .. \bin\emulator.exe -Xdescriptor DateTimeApp.jad)
Ar trebui să vedeți pop emulator pe ecran ca in figura de mai jos, cu DateTimeApp MIDlet selectată. Daca nu, cel mai probabil la acest punct de informare eroarea ar fi dimensiunea incorecta a JAR-ului. Asigurați-vă că aveți exact mărimea listată în fișierul JAD.
Figura 2. Testarea DateTimeApp
2.7. Pasul 7: Implementarea
Asta este! Acum ai ajuns la stadiul în care se poate implementa MIDlet direct de pe dispozitivul dumneavoastră mobil. Există două moduri de a face acest lucru. Prima este printr-o conexiune de rețea între computer și telefon. Aceasta poate fi printr-un cablu USB sau o conexiune fără fir Bluetooth, în funcție de dispozitiv.
Cele mai multe dispozitive compatibile Java vă vor permite să instalați aplicații J2ME prin acestă conexiune.
În al doilea rând, și cel mai interesant este că putem să deschide MIDlet-ul la lumea exterioară, prin intermediul internetului. La urma urmei, la ce este bun MIDlet tău în cazul în care restul lumii nu il poate vedea? Desigur, acest lucru înseamnă că dispozitivul ar trebui să poată să se conecteze la Internet folosind browser-ul intern.
Înainte de a trece mai departe, amintesc că, atunci când ați creat fișierul JAD, tu înscrii două atribute în el, ce specifică versiunea de CLDC (1.1) și MIDP (2.0), pentru care a fost creat MIDlet. Având în vedere că DateTimeApp MIDlet nu utilizează oricare dintre caracteristicile acestor versiuni, acesta ar trebui să ruleze pe dispozitive teoretic care sprijină versiunile inferioare ale acestor atribute, precum și prin urmare, DateTimeApp MIDlet ar trebui să ruleze pe CLDC 1.0 și MIDP 1.0, dar pentru că JAD fișier restricționează aceste versiuni cu cele mai noi dispozitive va eșua, asta daca incercam să instalam acest MIDlet în cazul în care nu susțin aceste noi versiuni. Dacă acesta este cazul cu dispozitivul, nu vă temeți! Așa cum am spus mai înainte, pentru că noi nu folosim nici un MIDP 2,0 sau caracteristici CLDC-1.1-specifice, aveți posibilitatea să modificați pur și simplu aceste numere de versiune în fișierul JAD, iar acest lucru va fi suficient pentru a instala acest aparat pe toate dispozitivele Java. Dacă acesta este cazul cu aparatul sau dispozitivul care îl vor testa pe acest MIDlet , pur și simplu schimbă aceste valori în fișierul JAD și este bun pentru rulare.
Pentru a putea implementa MIDlet-ul prin Internet, trebuie să aveți acces la un server web cu o adresă IP din lumea reală sau nume de domeniu. De asemenea, trebuie să ai privilegii administrative pentru a putea modifica fișierele de configurare de serverul web pentru a adăuga unele Multipurpose Internet Mail Exchange (MIME) tipuri pentru extensiile JAD și JAR. Dacă folosiți Jakarta / Tomcat ca server-ul dumneavoastră web, nu aveți nevoie pentru a face acest lucru, deoarece are deja aceste tipuri MIME. Pentru Apache server web, modificați fișierul mime.types și adăugați următoarele tipuri de extensie.
Prin adăugarea acestor tipuri MIME, oferiti browser-ului, sau oricărui client accesarea acestor fișiere de pe server, cum să se ocupe de aceste fișiere atunci când sunt descărcate în dispozitiv.
Apoi, creați un fișier HTML care va deveni punctul de referință. Strict, acest lucru nu este necesar, deoarece un dispozitiv care poate accesa o pagina HTML poate, de asemenea, accesa un fișier JAD. Dar o pagină HTML oferă un punct de referință, și prin urmare, vom crea pentru dumneavoastră Data-Time MIDlet. Nu uita că utilizatorii vor accesa aceasta pagina prin intermediul unui dispozitiv mobil, deci este prudent să se păstreze dimensiunea acestei pagini la minimum. Acest lucru este arătat în Listarea 2.
Listarea 2. pagina DateTimeApp.html pentru accesarea DateTimeApp MIDlet
Pagina oferă o legătură la fișierul JAD, iar fișierul JAD oferă o legătură la fișierul JAR asociat prin intermediul MIDlet-Jar-URL-ul: DateTimeApp.jar atribut. Cu toate acestea, acest lucru este acum accesat prin intermediul unui server web pe Internet, este recomandabil să se facă această legătură absolută în loc de relative.
(Comportamentul URL-urilor relative este în contradicție în ceea ce privește accesul MIDlet în cauză.).Din moment ce am de gând să servească această MIDlet prin intermediul unui site web (Craftbits.com)
Mă descurc, am modificat această legătură într-un URL absolut utilizarea acestui site web.
MIDlet-Jar-URL: http://www.craftbits.com/j2me/DateTimeApp.jar
Desigur, trebuie să modificați această adresă URL pentru propriul domeniu.
În cele din urmă, încărcați fișierul JAD modificat, fișierul HTML nou creat și inițial fișier JAR la serverul de web într-o locație director în cazul în care veți putea să navigați la pagina HTML prin intermediul browser-ul dispozitivului mobil. Acum, oricine cu un dispozitiv mobil care poate naviga pe Internet ar trebui să poată să indice fișierul DateTimeApp.html și să descarce, instaleze și ruleze DateTimeApp MIDlet.
Pentru cei care nu au acces la un server de web, am încărcat aceste fișiere la serverul meu de web. Pur și simplu punctul de http://www.craftbits.com/j2me/DateTimeApp.html puneti aparatul și veți putea vedea acest MIDlet în acțiune.
Asta este! Ați finalizat toate măsurile necesare pentru a crea manual și implementa un MIDlet. Acest proces a ajutat să înțelegi ce se întâmplă în spatele scenei și va dat încredere în toate etapele de creație MIDlet. Pentru că o mulțime din aceste etape sunt repetitive, are sens să utilizati un instrument automat. Aceasta este în cazul în care Toolkit Wireless vine și îl va folosi pentru a crea restul MIDlet-ului. Pentru moment, să recreem același MIDlet folosim acest Toolkit, astfel încât să puteți să vă familiarizați cu interfața sa.
3.Înțelegerea procesului de creare MIDlet – Utilizand Toolkit
În secțiunea de dobândire și instalare J2ME Development Kit de mai sus, ati descărcat Toolkit și la-ti instalat în folderul (C:\WTK22) (în măsura în care folderul este preocupat; este posibil să-l fi descărcat și instalat într-un alt folder).
Să explorăm conținutul acestui dosar. Figura 3 prezintă aceste conținuturi așa cum ar trebui sa arate pe calculatorul dumneavoastră.
Figura 3. conținutul dosarului Wireless Toolkit
Rețineți că instalarea implicită a programului Toolkit nu ar fi creat dosarul articol și că l-ați creat în sectiunea precedenta. În ceea ce privește dezvoltator MIDlet, cele mai importante dosare sunt aplicații și dosare bin, dar aici este un scurt rezumat pentru fiecare dintre aceste dosare.
Directorul aplicații este directorul unde toate MIDlet-urile sunt create folosind Toolkit sunt instalate. Parcurgeți acest dosar, și veți observa mai multe exemple de MIDlet prevăzute în propriile dosare. Acestea au propriile lor structuri de directoare, care permite separarea curată de codul sursă, biblioteci și restul fișierelor asociate cu un proiect MIDlet.
Folderul bin conține executabile pentru Toolkit. Cel mai important este ktoolbar.exe (pe Windows), care începe interfata principala pentru Toolkit. Acest dosar conține alte executabile, de asemenea, unele din care am dat peste ele mai devreme (de exemplu, preverify.exe și emulator.exe).
Să ne concentrăm acum pe utilizarea Toolkit prin rularea ktoolbar.exe din folderul bin.Toolkit va începe și veți privi fereastra din figura 4 .
Figura 4. Fereastra principala Toolkit
Așa cum spune mesajul din fereastra, de aici, puteți crea fie un nou proiect sau deschideți unul existent. Când faceți clic pe butonul de meniul deschidere proiecte va fi prezentată o listă de proiecte. Așa cum poate ați ghicit, această listă de proiecte este lista de directoare a folderului aplicații. Selectarea unui proiect din această listă il va deschide și iți va permite să schimbi setările (care include elaborarea, preverificarea, și ambalarea) și să rulați. Etapele de proiectare și de codificare sunt în continuare efectuate în afara acestui Toolkit. Să folosim Toolkit pentru a crea Date-Time MIDlet din secțiunea anterioară.
Dati Click pe butonul de meniu New Project și introduceți detaliile în fereastra care apare jos, așa cum se arată în figura 5.
Figura 5. Crearea unui nou proiect
Următoarea fereastră care apare vă va permite să modificați setările care controlează
platforma țintă a MIDlet-ului. În acest caz,doriți să vizați acest MIDlet spre platformele MIDP 2.0 și CLDC 1.1 și prin urmare, să păstreze platforma țintă ca JTWI, care preselectează profilul MIDP 2.0 . Cu toate acestea, va trebui să schimbi configurarea CLDC 1.1 și debifați biblioteca API Optional Mobile Media,așa cum se arată în figura 6.
Figura 6. Schimbare setari proiect
Puteți revizui restul setărilor, făcând click pe filele din partea de sus, dar pentru moment, proiectul este gata sa fie creat. Fă acest lucru prin a da click OK în partea de jos. Proiectul va fi creat cu informații despre unde să plasați fișiere de proiect afișate pe ecran, așa cum se arată în figura 7. Puteți verifica dacă Toolkit a creat un folder DateTimeApp în folderul de aplicații prin navigarea sa.
Figura 7. Proiect DateTimeApp creat
Ați creat deja singurul dosar src necesar numai pentru acest MIDlet în secțiunea anterioară. Copiați acest fișier, DateTimeApp.java, din folderol (C:\WTK2 \articol\com\J2ME \part1) pentru a realiza dosarul complet calificat src (C:\WTK22\apps\DateTimeApp\src\com\J2ME\ part1).
Rețineți că Toolkit a creat calea complet calificată pe baza pachetului nume, ca să nu o faci tu. Odată ce copia e facută, întoarcete la Toolkit și apăsați butonul de meniu executare. Toolkit va compila, preverifica pachetul și totul merge bine cu condiția ca va rula DateTimeApp în emulator.
Pare destul de simplu, nu-i așa? Tot ce trebuia să faceti era să creati un nou proiect, să configurati setările, scrieti codul, plasați-l în directorul dreapta și dati click Run.
Toolkit a avut grijă de restul.
Înainte de a pleca din această secțiune,examinati restul dosarelor sub DateTimeApp proiect. Directorul bin sub folderul DateTimeApp conține fișierele JAD și MANIFEST, în timp ce directorul clase conține clase compilate. Dar unde este fișierul JAR pentru acest MIDlet? Ei bine, fișierul JAR nu este creat doar rularea aplicatiei în Toolkit. Pentru a crea fișierul JAR, va trebui să selectați elementul de meniu Project, apoi selectați una dintre opțiunile de sub submeniul pachet, așa cum se arată în figura 8.
Figura 8. Crearea fisierului MIDlet JAR
Prin crearea acestui pachet, fișierul JAR va fi creat, cu corectarea informatie din Manifest în fișierul JAD. Puteți crea chiar fișierul HTML pe care am creat în secțiunea implementata anterior, dând click pe Run prin OTA (Over The Air) meniu. Acest lucru nu va permite doar să simuleze emulator care rulează acest MIDlet prin intermediul internetului, dar, de asemenea va crea fișierul HTML pentru tine în bin folder. Înainte de a utiliza acest fișier HTML pentru a implementa pe propriul server, de-a lungul cu JAD, fișierele JAR, va trebui să schimbați numele de gazdă, care e "localhost".
Acum știți cum să creați un MIDlet simplu, atât folosind Toolkit și fără el. Acum este timpul să ne uitam la ciclul de viață al MIDlet pentru a înțelege ceea ce se întâmplă atunci când MIDlet-ul este implementat și functionează.
4.Ciclul de Viata MIDlet
Dispozitive mobile, indiferent dacă sunt emulatoare sau reale, interacționează cu MIDlet folosind softwarer-ul propriu, care se numește Application Management Software (AMS). AMS-ul este responsabil pentru inițializarea, inceperea, oprirea, reluarea, și distrugerea MIDlet. (În afară de aceste servicii, AMS poate fi responsabil pentru instalarea și eliminarea unui MIDlet) .Pentru a facilita acest management, un MIDlet poate fi în unul dintre cele trei state, care este controlat prin intermediul metodelor de clasă MIDlet, ca fiecare MIDlet sa extindă și suprascrie. Aceste state sunt active, întrerupte și distruse.
Figura 9. posibile state de MIDlet și tranziția dintre ele
După cum puteți vedea din Figura 10,un MIDlet instalat este pus într-o pauza de AMS creând o instanță , numindu-se no-args constructor.
Aceasta este, desigur,unul din modurile în care MIDlet poate fi întrerupt. Se poate intra in acest stat, atunci când AMS apelează pauseApp () Metoda pe un MIDlet activ (și metoda revine cu succes).
Se poate intra, de asemenea, in această stare atunci când MIDlet se întrerupe prin apelarea notifyPaused ()Metoda, spre deosebire de metoda pauseApp (),cu care este chemat de AMS. Cu toate acestea, ce se întâmplă cu MIDlet în pauză?
Într-un stat întrerupt, MIDlet așteaptă șansa de a intra în starea activă. Odată ce MIDlet este creat, aceasta este in starea in care trebuie sa fie înainte de a deveni activ. De asemenea, intrarea în starea de pauză este necesară când aparatul necesită să consume mai puține resurse, deoarece aceste resurse pot fi necesare pentru controlul altor funcții ale aparatului, cum ar fi gestionarea unui apel. Aceasta se intampla atunci când dispozitivul invocă pauseApp () metoda prin AMS. Dacă MIDlet trebuie sa informeze AMS că e întrerupt, ar trebui să invoce metoda notifyPaused () ,prin care AMS spune ca MIDlet-ul este intr-adevar intrerupt.
O modalitate finală în care MIDlet poate ajunge într-o stare întrerupta este metoda startApp (metoda MIDlet), care se numește AMS ce invocă să înceapă MIDlet (fie pentru prima dată sau de la un întrerupt stat), aruncă o MIDletStateChangeException. În esență, în caz de eroare, MIDlet ia drumul sigur de a rămâne în stare de pauză.
Starea activă este locul unde fiecare MIDlet vrea să fie! Acesta este momentul in care MIDlet isi poate indeplini functiile, deține resursele de pe dispozitiv și în general să facă ceea ce ar trebui să facă. Așa cum s-a spus mai înainte, un MIDlet este într-o stare activă în cazul în care AMS numește metoda startApp () pe un MIDlet interrupt (de fapt, MIDlet-ul intră în starea activă, chiar înainte ca această metodă sa fie anuntată de către AMS). Un MIDlet pe pauza poate solicita să intre în starea activă prin apelarea metodei resumeRequest (), care informează AMS că MIDlet dorește să devină activ. AMS poate desigur,sa aleaga să ignore această cerere sau, în mod alternativ, dacă in acestă coadă există alte MIDlete in asteptare .Statul distrus este înscris atunci când un MIDlet se numeste destroyApp (boolean necondiționat) și se întoarce cu succes, fie de la o stare activă sau întreruptă. Această metodă este chemată de AMS atunci când simte că nu este nevoie de MIDlet sa funcționeze și este locul unde MIDlet poate efectua alte activități în ultimul minut de curățare .
MIDlet poate intra în acest stat, prin apelarea notifyDestroyed ()metoda, care informează AMS că MIDlet a curățat resursele și este eligibil pentru distrugere. Deoarece în acest caz,destroyApp (Boolean necondiționată) metoda nu este chemată de către AMS, orice activitate de ultimul minut trebuie să fie făcută înainte ca această metodă sa fie invocată.
4.1. Ce se întâmplă dacă AMS cheamă destroyApp (boolean necondiționat)
Metoda de mijlocul : Orice pas important pe care MIDlet il face poate fi dispus să fie distrus ?
Aceasta apare în cazul în care Boolean necondiționată flag vine în imagine. Dacă acest flag este setat la true, MIDlet va fi distrus, indiferent de ceea ce face MIDlet. Cu toate acestea, în cazul în care acest flag e fals, în mod eficient, AMS spune ca MIDlet vrea sa fie distrus, dar dacă MIDlet face ceva important, se poate ridica o MIDletStateChangeException, iar AMS nu-l va distruge încă. Cu toate acestea, rețineți că chiar și atunci, nu există garanții că MIDlet nu va fi distrus și rămâne la aprecierea fiecarui dispozitiv pentru a decide modul în care ar trebui să se ocupe cererea.
Dacă dispozitivul onorează cererea MIDlet-ului, acesta poate încerca și invoca destroyApp (boolean necondiționat) la un stadiu ulterior.
Rețineți că un stat distrus înseamnă că instanța MIDlet a fost distrusă, dar nu dezinstalat din dispozitiv. MIDlet rămâne instalat în dispozitiv și o nouă instanță a acestuia pot fi create mai târziu.
Lasă-mă să închei această secțiune cu o diagramă a unei secvențe tipice evenimentelor în timp ce utilizați DateTimeApp MIDlet pe care le-am creat în secțiunile precedente, precum și acțiunile corespunzătoare AMS și statele MIDlet. Acestă diagramă este prezentată în figura 10.
Figura 10. Acțiunile AMS și MIDlet afirmă printr-o succesiune de evenimente
5. Pregatirea mediului de dezvoltare
Programul folosit pentru dezvoltarea aplicației este NetBeans IDE (NetBeans este un mediu de dezvoltare open-source scris preponderant în Java. Acesta este folosit pentru dezvoltarea de aplicații în Java și prin intermediul altor plug-in-uri, în alte limbaje. NetBeans IDE este un mediu de dezvoltare – un instrument pentru programatori, pentru scrierea, compilarea, testarea, depănarea, proiectarea și instalarea programelor. Este scris în Java – dar poate accepta orice limbaj de programare.).
Search “Google” , NetBeans IDE pe browser-ul Opera și am dat pe site-ul “.www.netbeans.org.”
În partea din dreapta a primei pagini apare un buton de “Dowloands(descărcare)”.
Dând click pe “Dowloand” va apărea “NetBeans IDE 7.1.2 Download” care va oferi posibilitatea de a alege pentru ce tip de sistem de operare doriți să descărcați programul. Sub aceasta apare programul și obțiunea pentru platforma folosită. Pentru platforma calculatorului meu am ales Windows și ultima obțiune “All” care include pe Java ME și Dowloand (208 MB).
Am dat click pe obțiune si am intrat pe o pagină de unde am descărcat programul NetBeans IDE.
În urma descărcării pe partiția” c în dowloands” am primit:
1img.
Mai întâi am instalat platforma JDK și apoi programul.
2img.
Instalare
Am dat dublu click pe iconița menționată mai sus 1img .
S-a deschis o fereastră și am dat next .
Am acceptat termenii și condițiile și am dat next
Am acceptat termenii si am dat next
Am ales locația unde va fi instalat NetBeans-ul next și instal.
Next și Finish .
6.Prezentarea Aplicației
Aplicația constă în crearea unei aplicații mobile pentru antrenamente fitness acasă și pentru a alege o alimentație sănătoasă, pentru că împreună cu antrenamentele de fitness să slăbiți,să vă tonifiati și să creșteți masa musculară .
6.1. Partea Structurală a Aplicației
Proiectul meu poartă numele de Licenta si contine:
1). Source Packages – <default package> : 1. O clasă principal numită : Visual.Java (MIDlet)
2. Imaginile utilizate in aplicatie :Abs.jpg, Bicycle.jpg, Legs.jpg, Legs1.jpg, abs1.PNG, abs2.PNG, abs3.PNG, abs4.PNG, fruits.jpg, fruits1,jpg, legs2.jpg, legs3.jpg, plank.jpg, screenspl.png, vege1.jpg, vege2.jpg.
2).Resources:- NetBeans MIDP Components PDA
-NetBeans MIDP Componrnts SVG
-NetBeans MIDP Components
-NetBeans MIDP Components WMA
3).Project Configurations – DefaultConfiguration –Resources – 2).
1.1.Visual.Java
Clasa Visual are următoarele:
a). Un Mobile Device: Started (MIDlet) și Resumed (MIDLet);
b). Un LoginScreen (displayables) care conține două getter : Login_command și exitcommand (commands);
c). Un Succes (displayables) care conține o getter: okcommand (commands) și via (vias);
d). Un alert (displayables) care conține două getter: backcommand (commands), okcommand (commands) și via (vias);
e). Un waitScreen (displayables) care conține două getter: SUCCES_command și FAILED_comand (commands);
f). Un splashScreen (displayables) care conține trei getter:DISMISS_COMMAND (commands), exitcommand (commands) și backcommand (commands);
g). O list (displayables) care conține șase getter: exitcommand (commands), okcommand (commands), Reboot app (elements), Exit app (elements), Healthy eating (elements) și Fitness Style (elements);
h). O list (displayables) numită Fitness care conține șase getter: exitcommand (commands), backcommand (commands), Abs (elements), Bicycle (elements), Legs (elements) și Plank (elements);
i). O list (displayables) numită Food care conține patru getter : exitcommand (commands), backcommand (commands), Fruits (elements) și Vegetables (elements);
j). Șase form (displayables) numite Abs, Bicycle, Legs, Plank, Fruits, Vegetables și conțin : backcommand (commands)
DIAGRAMA:
Figura 1. Toată diagrama și legăturile lor
Figura 2. Prima parte a aplicației Start Aplicație,Login,Succes ,Splashscreen si Aplicația (list)
Figura 3. A doua parte a aplicației List, Food, Fitness etc.
6.2. Partea Funcțională a Aplicației
Fields
SwitchDisplayables
MIDlet- partea în care este localizată aplicația. Aceasta conține Resume și StartMIDLet.
LoginScreen- locul de logare pentru a avea acces în aplicație. Dând pe butonul din mijloc o să introducem username, iar de la meniu dăm ok și de pe săgeată dăm în jos ,apoi pe butonul din mijloc și o să introducem parola, iar de la meniu dăm ok.
În afară butonului de login această fereastră mai are și un ExitCommand1. Aceasta face ieșirea din aplicație la MIDlet( am dat click dreapta pe el în “flow”-properties- action- aici am selectat Exit MIDlet ).
Figura 1. LoginScreen
WaitScreen- în această fereastră se așteptă mesajul Success sau alert (failure) după logare.
Cele 2 comenzi Succes fac trecerea în splashscreen și ulterior în aplicație prin OK2 ,iar alert (failure) face întoarcerea înapoi în LoginScreen prin OK1.
Cele 2 OK:
Figura 2. WaitScreen
SplashScreen- oferă o imagine pentru câteva secunde înainte de a intra în aplicație. Adăugarea ei se face dând click dreapta pe ecran în “Screen”-properties– image– add– browse- screenspl.png– ok.
Figura 3. SplashScreen
List(aplicația)- Fața principală a aplicației .
Aceasta conține :
a) 4 elemente:- 2 care deschid ferestre noi Fitness Style și Healthy eating ;
– 2 care conțin comenzi Reboot app te întoarce la pagina de Login (am dat click dreapta pe el în “flow”-properties-action- aici am selectat switch to displayable iar din lista aceea am ales LoginScreen) și Exit app te scoate din aplicație ducându-te la pagina MIDlet(am dat click dreapta pe el în “flow”-properties-action- aici am selectat Exit MIDlet).
b) 2 comezi: -okcommand1 acționează asupra primului element Fitness Style ( am dat click dreapta pe el în “flow”-properties-action- aici am selectat switch to displayable iar din lista aceea am ales Fitness);
-exitcommand2 iese din aplicație ( am dat click dreapta pe el în “flow”-properties-action- aici am selectat Exit MIDlet)
Figura 4. List
Fitness- este un form care conține 4 elemente cu antrenamente fitness și 2 comezi. Dând click pe Fitness Style vom intra pe această fereastră Fitness.
Aceasta conține :
4 elemente : Abs, Bicycle, Plank, Legs. Dând click pe ele deschidem ferestre noi cu antrenamente fitness.
2 comenzi : -backcommand4 (am dat click dreapta pe el în “flow”-properties-action- aici am selectat switch to displayable iar din lista aceea am ales list);
-exitcommand (am dat click dreapta pe el în “flow”-properties-action- aici am selectat Exit MIDlet).
Figura 5. Fitness
Abs, Bicycle, Plank, Legs- 4 form-uri care conțin antrenamente de fitness. Acestea conțin imagini și text. Pentru adăugarea imaginilor și a textului am folosit Items- imageItem și Items-stringItem. Adăugarea acestora se face trăgând de ele pe ecranul “Screen” sau “Flow” în form-ul unde dorim să apăra.
Items-imageItem- adăugarea imaginii se face dând click dreapta în form pe imageItem- properties- add- browse- (imaginea selectată)- ok. Tot aici se poate adaugă și textul dând click dreapta pe imageItem- properties- Label- (în label adăugăm textul dorit și modul în care să apară)- ok.
Items-stringItem- adăugarea scrisului se face dând click dreapta pe stringItem- properties- Label- (în label adăugăm textul dorit și modul în care să apară)- ok. Tot aici putem selecta și fontul scrisului dând click dreapta pe stringItem- properties- Font- (putem alege unul sau putem crea unul).
ImageItem:
Aceste form-uri conțin câte o comandă de backcomand1/2/5/6 (am dat click dreapta pe el în “flow”-properties-action- aici am selectat switch to displayable iar din lista aceea am ales Fitness).
Abs:
Figura 6. Abs
Bicycle:
Figura 7. Bicycle
Plank:
Figura 8. Plank
Legs:
Figura 8. Legs
Food- este un form care conține 2 elemente cu alimentație sănătoasă și 2 comezi. Dând click pe Healthy eating vom intra pe această fereastră Food.
Aceasta conține :
a)2 elemente: Fruits si Vegetables. Dând click pe ele deschidem ferestre noi cu fructe si legume .
b)comenzi: -backcommand7 (am dat click dreapta pe el în “flow”-properties-action- aici am selectat switch to displayable iar din lista aceea am ales list);
-exitcommand3 (am dat click dreapta pe el în “flow”-properties-action- aici am selectat Exit MIDlet).
Figura 10. Food
Fruits si Vegetables – 2 form-uri care conțin alimentație sănătoasă. Acestea conțin imagini și text. Pentru adăugarea imaginilor și a textului am folosit Items- imageItem și Items-stringItem. Adăugarea acestora se face trăgând de ele pe ecranul “Screen” sau “Flow” în form-ul unde dorim să apară.
Items-imageItem- adăugarea imaginii se face dând click dreapta în form pe imageItem- properties- add- browse- (imaginea selectată)- ok. Tot aici se poate adaugă și textul dând click dreapta pe imageItem- properties- Label- (în label adăugăm textul dorit și modul în care să apăra)- ok.
Items-stringItem- adăugarea textului se face dând click dreapta pe stringItem- properties- Label- (în label adăugăm textul dorit și modul în care să apăra)- ok. Tot aici putem selectă și fontul textului dând click dreapta pe stringItem- properties- Font- (putem alege unul sau putem crea unul).
ImageItem:
StringItem:
Aceste form-uri conțin câte o comandă de backcomand 8/9 (am dat click dreapta pe el în “flow”-properties-action- aici am selectat switch to displayable iar din lista aceea am ales Food).
Fruits:
Figura 11. Fruits
Vegetables:
Figura 12. Vegetables
7.Concluzii
Java ME (Micro edition) a fost creată pentru a face față constrângerilor legate de aplicații construite pentru dispozitive mici .
Rețelele și dispozitivele care le utilizează sunt evoluate într-un ritm rapid. Operatorii mari de rețea și vânzătorii de dispozitiv se mișcă repede pentru a obține beneficii cât mai mari in timp ce tehnologia inaintează. Exemplu de astfel de tehnologie inaintată reprezintă posibilitatea de a trimite și primi e-mail de pe dispozitive mobile, pentru a naviga pe Web pe telefoane mobile, pentru a naviga pe Internet, de a face cumpărături online,de a folosi aplicații, de a asculta muzică , etc. Pe scurt, exista din ce in ce mai multe aplicații pentru dispozitive cât mai mici cu o capacitate mare .
In timp tehnologia mobilă va deveni din ce in ce mai avansată iar programatorii familiarizați cu această tehnologie pot investi in ea. Forța de muncă pe partea Java Mobile este din ce in ce mai mare deorece telofoanele mobile devin din ce in ce mai inteligente iar oamenii caută din ce in ce mai multe aplicații noi si lucruri noi pe partea mobilă.
Dezvoltarea permanentă a tehnologiei și apariția unor dispozitive din ce în ce mai performante ne ajută în viața de zi cu zi. Oamenii au devenit dependeți de propriile telefoane mobile inteligente. Tehnologia mobilă a cunoscut o dezvoltare rapidă și diversificată, în ultimii ani. Acum, aproape oricine își poate permite un smartphone sau o tabletă, acestea devenind pentru mulți un gadget nelipsit. De asemenea, a scăzut mult vârsta utilizatorilor de telefoane și tablete (fiind utilizate chiar și de către copii), iar prețurile sunt din ce în ce mai accesibile.
Aplicațiile de pe telefoane ar putea fi folosite în viitor :
– pentru a adună și centraliza informații extrem de importante despre lumea care ne înconjoară;
– pentru a deveni și dispozitive medicale;
– pentru a controla telefonul cu mișcări ale mâinii;
– pentru a putea fi capabile să recunoască alte obiecte din jurul lor;
– ca întreg corpul nostru să fie utilizat drept indicator pentru dispozitivele inteligente etc.
Bibliografie
[1] https://today.java.net/article/2005/02/07/j2me-tutorial-part-1-creating-midlets#introduction
[2] Java de la 0 la expert / Ștefan Tanasă, Cristian Olaru, Ștefan Andrei – Iasi:Polinom, 2003.
[3][Hor00]-Horton,I.: Beginning Java 2.JDK 1.3, third edition, Wrox Press Ltd (2000).
[4][HSH99]-Hughers, M., Shoffner, M., Hamner, D.: JAVA. Network Programming, Manning (1999).
[5][Vad99]-Văduva, C.M.: Programarea in JAVA, Microinformatica (1999)
[6]http://www.oracle.com/technetwork/java/embedded/documentation/me-e-otn-faq-1852008.pdf
[7]The source for Java(TM) Technology: http://java.sun.com
[8]Java 2 Platform, SE v1.4.1 API documentation :
http://java.sun.com/j2se/1.4.1/docs/api/index.html
[9][CG100]- Chan, M.C.,Griffith, S.W., Iasi, A.F.:JAVA. 1001 secrete pentru programatori, Teora(2000).
[10] http://docs.oracle.com/javame/8.1/me-dev-guide/changes.htm
[11] https://netbeans.org/index_ro.html
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Tendinte Actuale In Dezvoltarea Aplicatiilor Folosind Platforma Java Micro Edition (java Me) (ID: 150711)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
