Metodologii de Proiectare Folosind Platforma Java
Proiecte economice în informatică
Model de aplicație utilizând platforma Java
CUPRINS
Introducere
Capitolul 1. introducerea în limbajul utilizat
1.1 Bazele limbajului Java
1.2 Istoricul, prezentul și viitorul limbajului Java
1.3 Impactul Java asupra WEB-ului
1.4 Caracteristicile platformei
1.5 Utilizarea platformei Java
Capitolul 2. metodologii de proiectare folosind platforma java
2.1 Introducerea în proiectarea web
2.2 Metodologia de proiectare a aplicațiilor web – WSDM – Web Site Design Method ("WiSDoM")
2.3 Metodologia de proiectare a aplicațiilor web – SOHDM – Scenario-based Object-Oriented Hypermedia Design Methodology
2.4 Metodologia de proiectare a aplicațiilor web – HFPM: Hypermedia Flexible Process Modeling
2.5 Metodologia de proiectare a aplicațiilor web – OOHDM – Object-Oriented Hypermedi Design Method
2.6 Metodologia de proiectare a aplicațiilor web – Web Modeling Language
2.7 Platforme de dezvoltare pentru aplicațiile dispozitivelor mobile
Capitolul 3.model de aplicație java – agendă telefonică
3.1. Dezvoltarea aplicației Java utilizând modelul de dezvoltare NetBeans
3.1.1.Crearea claselor și a obiectelor4
3.1.2.Scrierea codului sursă pentru comenzile dorite
3.2. Conectarea aplicație J2ME la WEB
Concluzii și propuneri
bibliografie
INTRODUCERE
De-a lungul istoriei, realizările noastre ca și oameni au fost marcate de diferite epoci precum epoca de piatră, a bronzului și cea a fierului. Odată cu apariția internetului, omenirea și-a început dezvoltarea în era informațională, având posibilitatea de acces și de transmitere a informațiilor de la distanță. Conceptul este strâns legat de revoluția digitală, urmare a faptului că aparatura electronică digitală și-a câștigat imediat supremația în fața celei analogice. Utilizând simultan atât internetul cât și aparaturile electronice, s-a trecut de la simpla transmitere de informații la o altă dimensiune a tehnologiei, și anume la programarea automatizată a diferitelor aparaturi. Acest fapt face posibilă abilitatea de a răspunde rapid și eficient la multiplele necesități.
Am ales ca temă de licență un subiect actual și popular dar care incă ridică numeroase probleme în înțelegerea lui, și anume, proiectarea aplicațiilor informatice, atât web cât și mobile. Prin aceasta doresc să subliniez anumite detalii pe care toți utilizatorii noii tehnologii ar trebui să le cunoască, și totodată să prezint funcționalitatea unei aplicații proprii și modalitatea de programare utilizată în dezvoltarea acesteia.
Astfel, în primul capitol am realizat o introducere în lumea programării axându-mă pe descrierea platformei Java, prin intermediul căreia am creat aplicația finală. În următorul capitol am pus accentul pe multiplele posibilități de a modela aplicația mobilă sau web în funcție de temă și alte criterii stabilite odată cu alegerea temei. Ultimul capitol este destinat prezentării aplicației și pașii parcurși în dezvoltarea acesteia, cât și erorile și problemele întâlnite, în așa fel încât persoanele interesate să poată crea și ele, la rândul lor, alte aplicații urmând modelul.
Tehnologia software este într-o continuă dezvoltare, astfel încât dacă acum aproximativ zece ani conexiunea calculatorului la internet se făcea foarte greu și descărcarea unei fotografii sau a unei melodii se făcea în timp de câteva zile, acum însă putem descărca de pe internet date direct pe telefonul (denumit smart-phone) care are simultan mai multe întrebuințări. De exemplu același telefon poate fi utilizat pentru a apela o persoană (sau mai multe), în timp ce comunicăm prin mesagerie cu alte persoane, și totodată primim și trimitem postări pe Facebook sau pe orice alt site de socializare. Foarte interesantă este astfel tranziția de la calculatorul de birou la laptop, apoi la smart-phone și tablete. Toate acestea s-au schimbat în numai zece ani și cu siguranță lucrurile vor continua să se schimbe. Noi putem alege să fim simpli utilizatori ale acestor invenții sau să contribuim. În cazul în care doriți să contribuiți în dezvoltarea tehnologiei actuale puteți începe prin a studia tehnicile prezentate în următoarele capitole.
CAPITOLUL 1. INTRODUCERE ÎN LIMBAJUL UTILIZAT
În cadrul primului capitol voi prezenta aspectele principale ale platformei de programare
Java, evoluția acesteia în decursul anilor și creativitatea contemporană din domeniul aplicațiilor Java.
Bazele limbajului Java
Java este un limbaj de programare orientat-obiect, puternic tipizat, conceput la începutul anilor 1990 de către James Gosling la Sun Microsystems și lansat în 1995. Cele mai multe aplicații distribuite sunt scrise în Java iar noile evoluții tehnologice permit utilizarea sa și pe dispozitive mobile ca telefon, agendă electronică, palmtop, tabletă etc. În felul acesta se creează o platformă unică, la nivelul programatorului, deasupra unui mediu eterogen extrem de diversificat. Limbajul împrumută o mare parte din sintaxă din programele C și C++, dar are un model al obiectelor mai simplu și prezintă mai puține facilități de nivel inferior.
O platformă este un mediu (hard sau soft) în care o aplicație rulează. Multe astfel de platforme sunt o combinație între sistemul de operare și suportul hard pe care rulează, Windows sau Linux. Java este un tip diferit de platformă care rulează pe aceste medii menționate anterior. Se deduce deci că Java este o platformă independentă, dar și faptul că poate fi un pic mai lentă decât codul nativ de pe platformele de bază. Platforma are două componente: JVM (Java Virtual Machine) și Java API (Application Programming Interface). API-ul Java este o colecție de componente deja create care pot oferi multe funcționalități utile. Aceste librării sunt grupate în librării de clase și interfețe înrudite: packages.
Un program Java compilat, corect scris, poate fi rulat fără modificări pe orice platformă pe care este instalată o mașină virtuală Java (Java Virtual Machine, JVM). Acest nivel de portabilitate, inexistent pentru limbajele C, este posibil deoarece sursele Java sunt compilate într-un format standard numit cod de octeți, care este intermediar între codul mașină (dependent de tipul calculatorului) și codul sursă.
Mașina virtuală Java este mediul în care se execută programele Java (vezi figura 1.1). În prezent, există mai mulți furnizori de JVM printre care Sun, IBM, Bea, Oracle, FSF.
Figura 1.1. – Legătură între platforma Java, mașina virtuală și aplicația ProgramulMeu.java
Java reprezintă cel mai sigur limbaj de programare disponibil în acest moment deoarece deține mecanisme stricte de securitate a programelor. Acestea sunt concretizate prin verificarea dinamică a codului pentru detectarea secvențelor periculoase și prin impunerea unor reguli stricte pentru rularea programelor lansate pe calculatoare aflate la distanță, acestea din urmă neavând acces la rețeaua locală și astfel nici posibilitatea de a lansa în execuție aplicațiile locale. Tehnologia Java este în același timp un limbaj de programare și o platformă. Limbajul de programare Java este un limbaj de nivel înalt ce poate fi caracterizat de multe atribute: orientat-obiect, simplu, dinamic, portabil, independent de arhitectură, robust, distribuit. Codul sursă este scris în fișiere text cu extensia „.java”. Aceste fișiere sunt compilate cu compilatorul java în fișiere „.class”. Fișierele compilate nu conțin cod nativ procesorului ci conțin „bytecode”, limbajul mașină folosit de Java Virtual Machine (JVM). Aplicațiile java sunt lansate în cadrul unei instanțe JVM prin utilitarul java. JVM este disponibil pe multe sisteme de operare (Windows, Solaris, Linux, Mac), de unde rezultă că și aplicațiile java deja compilate pot rula pe aceste sisteme fără a mai fi necesară recompilarea codului sursă.
Istoricul, prezentul și viitorul limbajului Java
În 1991, firma SUN, mergând pe direcția dezvoltării sistemelor deschise de lucru în retea, a creat un proiect de lucru numit Green, care avea drept scop punerea la punct a unor procesoare care să poată rula pe diferite tipuri de aparate și a unui sistem care să poată rula pe platforme diferite. Planul initial prevedea dezvoltarea proiectului în C++ dar au aparut foarte multe probleme în încercarea de dezvoltare a compilatorului de C++. Ca urmare, James Gosling, membru al grupului Green, a început să lucreze la dezvoltarea unui nou limbaj, numit Oak, care mai târziu avea să se numească Java. De asemenea grupul Green avea să-și schimbe numele întâi în FirstPerson, apoi în JavaSoft.
Inițial, JDK 1 apăruse pe piață cu noi atribute care au stârnit multe discuții ce urmau să sublinieze și numeroase dezavantaje în compilare. Acestea au produs firmei daune surprinzătoare dar au determinat programatorii să revină cu alte versiuni îmbunătățite.
Acum, ciclul de producție a unei noi versiuni s-a accelerat iar JDK 1.3 beta a fost deja lansat. Criticile cu privire la performanțele mai scăzute ale JDK 1.2 față de versiunile anterioare în anumite domenii nu au rămas fără urmări. Astfel JDK 1.3 cuprinde printre altele, numeroase optimizări la nivelul mașinii virtuale incluzând și tehnologia HotSpot în versiunea client, dar și rescrierea compilatorului de Java. JDK 1.3 înglobează un suport pentru noul standard CORBA 2.3 și de asemenea un compilator IDL (idlj).
Impactul Java asupra WEB-ului
Abia după ce a fost înființată compania Netscape Communications Corporation, cei de la JavaSoft s-au orientat către Internet și Web, mediul multiplatformă distribuit al rețelei Internet fiind perfect pentru testarea proiectului.
În prezent licența pentru tehnologia Java a fost acordată unor firme precum IBM, Microsoft, Sillicon Graphics, Adobe si Netscape. Limbajul Java a devenit vizibil ca limbaj obținut prin rafinarea limbajului C++, asigurând portabilitatea prin execuția interpretată și permițând îmbogățirea paginilor de Web cu componente dinamice care se execută direct pe calculatoarele celor care vizualizează paginile Web. Foarte repede numele Java a ajuns să desemneze nu numai un limbaj de programare, ci o colecție de tehnologii legate de Internet.
Într-o perioadă relativ scurtă fenomenul a atins proporții la care puțini se așteptau. A scrie azi despre fenomenul Java în general este dificil datorită numeroaselor domenii în care Java are o prezență. A pătruns în fortăreața aplicațiilor pentru baze de data Oracle, își propune să ofere suport pentru aplicații distribuite JINI, și au existat tentative chiar dacă nu întotdeauna încununate de succes, ca JavaOS sau microprocesorul PicoJava.
La nivelul limbajului singura modificare constă din introducerea unui nou cuvânt cheie (strictfp), a cărui obscură funcționalitate este de a păstra compatibilitatea operațiilor în virgulă mobilă cu versiunile anterioare ale JDK.
În lipsa acestui modificator mașina virtuală poate optimiza operațiile pentru procesorul pe care rulează, ceea ce duce evident la o creștere a vitezei de execuție, dar introduce o posibilitate de incompatibilitate.
Absența unor modificări mai substanțiale poate conduce la concluzia că pentru obiectivele actuale pe care și le propune limbajul, Java a atins maturitatea. Obiectivele urmărite de Java sunt în continuă evoluție, prin urmare este posibil ca în viitor să asistăm la modificări mai spectaculoase.
Caracteristicile platformei
Un punct forte al tehnologiei Java îl constituie securitatea integrată în mașina virtuală. Acest mecanism este într-un fel cheia de boltă a mecanismului execuției applet, deoarece în lipsa acestuia nimeni nu ar accepta execuția de cod străin adus de navigatorul Web pe mașina sa. Conceptul de securitate în Java a pornit de la modelul cutiei cu nisip (sandbox) introdus în versiunea 1.0. Acest model presupune executarea codului recepționat de la distanță sub controlul unui manager de securitate care poate interzice sau permite codului străin accesul la resursele locale. Pentru appleturi însă, aceasta se traducea invariabil prin interzicerea accesului la aoare ale JDK.
În lipsa acestui modificator mașina virtuală poate optimiza operațiile pentru procesorul pe care rulează, ceea ce duce evident la o creștere a vitezei de execuție, dar introduce o posibilitate de incompatibilitate.
Absența unor modificări mai substanțiale poate conduce la concluzia că pentru obiectivele actuale pe care și le propune limbajul, Java a atins maturitatea. Obiectivele urmărite de Java sunt în continuă evoluție, prin urmare este posibil ca în viitor să asistăm la modificări mai spectaculoase.
Caracteristicile platformei
Un punct forte al tehnologiei Java îl constituie securitatea integrată în mașina virtuală. Acest mecanism este într-un fel cheia de boltă a mecanismului execuției applet, deoarece în lipsa acestuia nimeni nu ar accepta execuția de cod străin adus de navigatorul Web pe mașina sa. Conceptul de securitate în Java a pornit de la modelul cutiei cu nisip (sandbox) introdus în versiunea 1.0. Acest model presupune executarea codului recepționat de la distanță sub controlul unui manager de securitate care poate interzice sau permite codului străin accesul la resursele locale. Pentru appleturi însă, aceasta se traducea invariabil prin interzicerea accesului la anumite clase de resurse (vezi figura 1.2).
Figura 1.2. – Exemplu de applet
Genul acesta de restricții pot fi acceptabile pentru applet-uri care urmăresc îmbogățirea aspectului paginilor web, dar ridică probleme greu de rezolvat pentru applet-uri care necesită interacțiunea directă cu mașina pe care se execută. Pentru a evita acest gen de probleme în versiunea 1.1 a JDK s-a introdus noțiunea de applet semnat. Aceasta însemna practic acordarea de drepturi depline unui applet care oferea o semnătură digitală acceptabilă.
Între cele două extreme, drepturile depline și cutia cu nisip, există o dihotomie de tipul totul sau nimic. Pentru a oferi o reală flexibilitate era necesară introducerea unui mecanism configurabil de securitate. În acest sens JDK 1.2 a introdus politici de securitate. Acestea se implementează sub forma unui fișier de configurare ce permite diferențierea drepturilor acordate codului aflat în execuție în funcție de originea sa și se aplică atât appleturilor cât și aplicațiilor.
Mecanismul de Extensions Framework oferă posibilitatea de a extinde bibliotecile disponibile pe o mașină virtuală. Există două tipuri de extensii în funcție de modul în care se face instalarea acestora:
pachetele instalate local, sau installed extensions, au aceleași drepturi ca bibliotecile standard, putând utiliza și codul nativ al platformei pe care se instalează. Un număr de produse Sun care nu fac parte propriu-zis din JDK (JavaServlet, Java3D, ș.a.) pot fi instalate în acest mod și poartă denumirea de extensii standard.
pachete instalate dinamic, sau download extensions, sunt aduse și instalate în timpul execuției mașinii virtuale și servesc ca biblioteci pentru applet-uri. O arhivă Java (.jar) conține un applet și poate specifica extensiile de care are nevoie, acestea urmând să fie aduse automat de mașina virtuală.
JDK 1.2 introduce și suport pentru obiecte referință. Trei tipuri de referințe sunt introduse: soft, weak și phantom. Acestea modifică substanțial modul în care colectorul de memorie disponibilă "vede" un obiect. Există acum 5 stări de accesibilitate ale unui obiect: strong, soft, weak, phantom și inaccesibil.
Obiectele referite doar prin referințe soft pot fi distruse prin decizia colectorului de memorie disponibilă ca urmare, de exemplu a unei cereri de alocare de memorie. Referințele soft pot să fie utilizate pentru implementarea unor cache-uri de obiecte, în care obiectele referite sunt distruse dacă mașina virtuală are nevoie de memorie suplimentară.
Obiectele accesibile weak pot fi finalizate în orice moment de către colectorul de memorie disponibilă. De exemplu clasa WeakHashMap se bazează pe acest tip de referințe pentru a implementa o tabelă asociativă în care lipsa unei referințe externe la o cheie duce la ștergerea automată a acesteia din tabelă. Astfel, pentru a implementa variabile care au o valoare specifică pentru fiecare fir de execuție (ThreadLocal) este de preferat ca la dispariția unui fir de execuție să dispară automat și valoarea specifică a variabilei.
Referințele phantom permit cod mai flexibil de finalizare, deoarece obiectele referite în acest mod nu sunt distruse automat după finalizare ci rămân accesibile phantom până când referințele sunt eliberate explicit.
Pentru toate tipurile de obiecte referință este posibilă înregistrarea acestora la o coadă. În momentul în care are loc o modificare a stării de accesibilitate a obiectului, referința este automat pusă în coada la care era înregistrată.
Anumite componente JDK 1.2 folosesc deja această schemă considerabil mai complexă pentru a face anumite optimizări. Un exemplu în acest sens este implementarea RMI. Rămâne de văzut dacă aplicațiile utilizatorului "obișnuit" vor putea profita de aceste facilități, având în vedere că utilizarea lor optimă este destul de dificilă.
În ceea ce privește bibliotecile introduse în JDK 1.2 trebuie observat că puține dintre acestea sunt noi, majoritatea sunt produse care și-au dovedit anterior viabilitatea și au fost incluse pur și simplu în JDK.
Biblioteca JFC
Fără îndoială că cea mai importantă bibliotecă integrată în JDK 1.2 este JFC (Java Foundation Classes). Deși numele aduce oarecum aminte de biblioteca MFC (Microsoft Foundation Classes), obiectivele urmărite de JFC sunt diferite, deoarece JFC își propune să se ocupe exclusiv de interfața grafica a aplicațiilor și applets.
JFC înglobează acum AWT (Abstract Windowing Toolkit) care era în versiunile anterioare ale JDK singura bibliotecă pentru crearea interfețelor grafice.
Pe lângă AWT însă, în JFC sunt incluse o serie de noi biblioteci dintre care cea mai importantă este Swing.
Biblioteca SWING
Swing își propune să reconstruiască de la zero practic conceptul de interfață grafică portabilă "100% Java pură". Dacă în AWT componentele grafice erau implementate prin intermediul componentelor oferite de sistemul de ferestre peste care rula mașina virtuală (Motif, MS Windows, ș.a.) de cele mai multe ori printr-o mapare directă, în Swing acestea sunt desenate folosind primitive grafice, ceea ce permite consistența aspectului componentelor pe toate platformele. AWT suferea de problema celui mai mic numitor comun în sensul că putea oferi doar acele primitive grafice care erau suportate pe toate platformele. Această limitare fiind eliminată de Swing, paleta componentelor oferite este acum larg diversificată.
Probabil că aspectul cel mai spectaculos al Swing este personalizarea aspectului și comportamentului componentelor (pluggable look and feel – PL&F). Aspectul și chiar comportamentul componentelor poate fi modificat dinamic în timpul execuției programului conform unei personalități (L&F) care conferă omogenitate componentelor. Personalități predefinite ca Windows L&F sau Motif L&F sunt incluse în JFC.
Biblioteca Java 2D
Pe lângă AWT și Swing, JFC mai include Java 2D – o bibliotecă de prelucrare a imaginilor, precum și suport pentru Drag & Drop și suport pentru persoanele cu handicap (Accessibility).
JDK 1.2 integrează versiunea 1.1 a JFC, dar o versiune mai recentă a JFC (1.1.1) a fost lansată separat de JDK. Conform anunțului făcut de realizatorii JFC, acest model de dezvoltare permite testarea separată a JFC iar pe măsură ce codul se stabilizează este inclus în JDK. Suportul pentru programarea orientată pe componente denumit JavaBeans a făcut parte din JDK încă de la versiunea 1.1.
Deși suportul pentru JavaBeans este inclus în JDK nu sunt incluse și beans care să poată fi folosite pentru dezvoltarea efectivă de aplicații cu atât mai puțin un mediu de dezvoltare. Pentru cei interesați Sun oferă BDK (JavaBeans Development Kit) în aceleași condiții de licențiere ca și JDK. Scopul BDK nu este însă proiectarea vizuală a aplicațiilor ci dezvoltarea și testarea de "beans". BDK include printre altele BeanBox – un program care permite interacțiunea cu beans într-un mod similar cu cel al unui IDE "adevărat".
Cei care doresc să folosească această tehnologie pentru dezvoltarea vizuală a aplicațiilor și appleturilor au nevoie de un mediu de dezvoltare comercial cum ar fi IBM Visual Age, Inprise JBuilder sau Symantec Café.
1.5. Utilizarea platformei Java
Cea mai des întâlnită utilizare a JavaScript este în scriptarea paginilor web. Programatorii web pot îngloba în paginile HTML script-uri pentru diverse activități cum ar fi verificarea datelor introduse de utilizatori sau crearea de meniuri și alte efecte animate.
Browserele rețin în memorie o reprezentare a unei pagini web sub forma unui arbore de obiecte și pun la dispoziție aceste obiecte script-urilor JavaScript, care le pot citi și manipula. Arborele de obiecte poartă numele de Document Object Model sau DOM. Există un standard W3C pentru DOM-ul pe care trebuie să îl pună la dispoziție un browser, ceea ce oferă premiza scrierii de script-uri portabile, care să funcționeze pe toate browserele. În practică, însă, standardul W3C pentru DOM este incomplet implementat. Deși tendința browserelor este de a se alinia standardului W3C, unele din acestea încă prezintă incompatibilități majore, cum este cazul Internet Explorer.
O tehnică de construire a paginilor web tot mai întâlnită în ultimul timp este AJAX, abreviere de la „Asynchronous JavaScript and XML”. Această tehnică constă în executarea de cereri HTTP în fundal, fără a reîncărca toată pagina web, și actualizarea numai anumitor porțiuni ale paginii prin manipularea DOM-ului paginii. Tehnica AJAX permite construirea unor interfețe web cu timp de răspuns mic, întrucât operația (costisitoare ca timp) de încărcare a unei pagini HTML complete este în mare parte eliminată.
Datorită beneficiilor oferite, aplicațiile WEB dezvoltate pe platforma Java pot fi regăsite mai ales în toate site-urile din sistemul bancar dar și în cele precum www.bmw.ro, www.mercedes.ro. Tehnologiile Java sunt predominante în programarea de servere pentru firmele mari, dar în același timp se pot utiliza și pentru dezvoltarea unor aplicații de tip desktop. Cele mai interesante din acestea sunt, evident, jocurile precum Super Mario, Counter Strike, Zuma, GTA, Angry Birds sau accesoriile ajutătoare de genul orarelor, agendelor telefonice, calculatoarelor etc. Intrebuințarea cea mai uzuală programării Java rămâne totuși necunoscută de noi. Aceasta este reprezentată de existența programelor Java în dispozitive electronice începând de la simplele electrocasnice până la cele mai complexe.În încercarea de a înțelege programarea web se poate observa că evoluția hard-ware, mai exact explozia de aparaturi electronice din ce în ce mai complexe, generează și posibilitatea deîmbinare a planului web cu cel mobil. Astfel, în capitolul următor sunt prezentate modalitățile de dezvoltare web și mobilă dar și conceptul de transpunere a aplicațiilor web în mobile și invers.
CAPITOLUL 2. METODOLOGII DE PROIECTARE UTILIZÂND PLATFORMA JAVA
Web-ul, aplicațiile web și comunitatea web în ansamblu au evoluat de la apariția Internet-ului iar acum, în era informațională, conceptul de a transforma structura web-ului din cea statică în una dinamică, mobilă reprezintă interesul multor organizații de dezvoltare software .
La nivel de infrastructură, web-ul este un spațiu creat prin intermediul unor limbaje și protocoale specificate formal. Deși oamenii au fost implicați de la început în crearea paginilor și utilizarea legăturilor dintre acestea, a durat aproximativ un deceniu până la crearea conceptului de web dinamic. Interacțiunea acestora cu aplicațiile mobile formează un model web-mobile la scară macroscopică. Dezvoltarea atât a aplicațiilor web cât și a celor mobile reprezintă un nou plan al oricărei afaceri complexe de software. În sprijinul informării, acest capitol explică succint metodele de proiectare web și de dezvoltare mobilă. Obiectivul acestui capitol este de a prezenta principalele avantaje a unei dezvoltări simultane web-mobile.
2.1. Introducere în proiectarea web
Proiectarea web ca disciplină științifică este influențată de dezvoltarea aplicațiilor web. Orientarea actuală în domeniul dezvoltării aplicațiilor web este deseori caracterizată printr-o abordare ad-hoc și o lipsă a metodelor de dezvoltare. Datorită complexității și ritmului proliferării aplicațiilor web, această abordare are un impact negativ asupra calității.
Pentru a rezolva acest dezavantaj este necesară construirea unui ciclu clar de viață a aplicațiilor web, prezentarea conceptelor, tehnicilor, metodelor și utilitarelor pentru dezvoltarea sistematică a aplicațiilor web.
Proiectarea web poate fi considerată o ramură independentă a ingineriei software. Aceasta reprezintă în general o aplicație practică a științei folosită în scopul dezvoltării aplicațiilor într-un mod mai bun, mai rapid, mai ieftin și mai sigur. Ingineria software este definită ca o aplicație a științei și matematicii prin care capacitățile unui sistem de calcul pot fi utilizate de oameni prin intermediul programelor, procedurilor și documentației asociate. Pe baza acestei definiții și a celei lui Deshpande, putem defini Proiectarea web în două moduri:
– Proiectarea web reprezintă aplicarea unor abordări sistematice și cuantificabile (concepte, metode, tehnici, utilitare) în analiza cerințelor, proiectarea, implementarea, testarea, exploatarea și întreținerea aplicațiilor web de calitate superioară.
– Proiectarea web reprezintă și disciplina științifică implicată în studiul acestor abordări.
Proiectarea web face posibilă planificarea și repetarea proceselor de dezvoltare, facilitând astfel evoluția continuă a aplicațiilor web. Aceasta permite nu doar reducerea costurilor și minimizarea riscului pe parcursul dezvoltării și întreținerii, ci și creșterea calității și măsurarea calității rezultatelor fiecărei faze.
Din punct de vedere al Ingineriei Software, dezvoltarea aplicațiilor web este un nou domeniu al aplicațiilor. În ciuda anumitor similitudini cu aplicațiile tradiționale, caracteristicile speciale ale aplicațiilor web necesită o adaptare a multor abordări ale Ingineriei Software sau chiar dezvoltarea unor abordări complet noi. Ingineria Web este un domeniu nou al ingineriei software, care pune accent pe dezvoltarea sistemelor Web.
În ultimii ani, au fost propuse câteva abordări pentru dezvoltarea sistemelor Web. Aceste metode oferă elemente de modelare specifice pentru analiză și proiectare, multe dintre ele definesc o notație proprie utilizată pentru reprezentarea grafică a elementelor. Aproape toate propun procese specifice pentru a sprijini dezvoltarea sistematică sau semi-automată a aplicațiilor Web.
Escalona și Koch (2004) arată că doar câteva dintre metodologiile Web existente (NDT – Navigational Development Techniques, OOHDM – Object-Oriented Hypermedi Design Method, UWE – UML-based Web Engineering, W2000) încep ciclul de dezvoltare cu o analiză detaliată a cerințelor. Alte abordări analizate de autori propun tehnici clasice pentru analiza cerințelor Web sau ignora această fază a procesului de dezvoltare.
Analiza cerințelor este considerată de toate abordările ingineriei software ca fiind un pas cheie în dezvoltarea unor sisteme software de succes. Efortul investit în analiza cerințelor reduce în mod considerabil deficientele în fazele ulterioare ale dezvoltării. Specificarea cerințelor constă în realizarea unei descrieri a cerințelor utilizând diferite tehnici: de la descrierea textuală informală la specificația formală în limbaje precum limbajul Z.
Escalona și Koch (2004) au dezvoltat un metamodel comun pentru reprezentarea conceptelor și relațiilor ingineriei cerințelor Web (Web requirements engineering (WebRE).
Metodologiile de proiectare a aplicațiilor Web disponibile în literatura de specialitate și care vor fi prezentate pe scurt în paginile următoare pot fi clasificate conform părerii lui Berners după cum pun accent pe "ce" se cere să facă aplicația (proiectare conceptuală în domeniul problemei) sau pe "cum" poate satisface aplicația cerințele și cum poate implementa ceea "ce" se cere să facă aplicația (proiectarea logică în domeniul soluțiilor). UWA- Ubiquitous Web Application, OOHDM, OOWS – Object-Oriented Web Solution și OO-H – Object-Oriented Hypermedia Method se încadrează în prima categorie, în timp ce UWE și WebML – Web Modeling Language pot fi considerate ca fiind metodologii hibride, deoarece acoperă atât proiectarea conceptuală cât și proiectarea logică.
Metodologiile de proiectare conceptuală fac abstracție de detaliile de implementare și oferă o privire de ansamblu asupra sistemului, din punctul de vedere al utilizatorilor. Modelarea conceptuală este punctul de plecare pentru implementarea sistemelor complexe. Totuși, distanța mare între modelul conceptual al unei aplicații Web și implementarea sa face ca utilizarea proiectării conceptuale să fie insuficientă pentru dezvoltarea unei aplicații Web. Dacă nu există niveluri de proiectare intermediară pentru translatarea specificațiilor conceptuale în proiectarea implementării, atunci activitățile de implementare a unei aplicații Web pot să aibă loc independent de proiectarea conceptuală, ceea ce ar conduce la o risipire a efortului. Tendința unor cunoscute metodologii de proiectare este de a se dezvolta spre abordări integrate, care să acopere întreg ciclul de viață al aplicațiilor Web. Printre metodologiile care urmează această direcție se număra OO-H, OOWS, UWE și OOHDM.
2.2. Metodologia de proiectare a aplicațiilor web – WSDM – Web Site Design Method ("WiSDoM")
Metoda WSDM reprezintă o abordare centrată pe utilizatorul care modelează aplicația pe baza cerințelor informaționale ale grupurilor de utilizatori. Această abordare permite realizarea de site-uri Web mai bine adaptate necesităților vizitatorilor și prin aceasta având un grad mai mare de satisfacție în utilizare.
Procesul de dezvoltare este împărțit în patru faze:
modelarea audienței, în care utilizatorii sunt clasificați și grupați în vederea studierii cerințelor sistemului potrivit fiecărui grup de utilizatori;
proiectarea conceptuală, în care este proiectată o diagramă clasă pentru a reprezenta modelul static al sistemului și un model de navigare
proiectarea implementării, în care modelele proiectării conceptuale sunt translatate într-un limbaj abstract, ușor de înțeles de către calculator;
implementarea, în care rezultatul proiectării implementării este scris într-un limbaj calculator specific.
Celelalte faze din procesul de dezvoltare WSDM se bazează pe clasificarea utilizatorilor realizată în prima fază. Se face o distincție clară între proiectarea conceptuală (care nu conține nici un detaliu de implementare) și proiectarea prezentării, care ia în considerație limbajul de implementare folosit. Această separare este similară distincției făcute în proiectarea bazelor de date între schema conceptuală și schema logică.
2.3. Metodologia de proiectare a aplicațiilor web – SOHDM – Scenario-based Object-Oriented Hypermedia Design Methodology
Metodologia SOHDM a fost prima abordare ce pune accent pe importanța unui proces care permite analiștilor să "capteze" și să definească cerințele aplicațiilor. SOHDM are similarități cu metodologia OOHDM, dar propune o specificare a cerințelor bazată pe scenarii. Ciclul de viață SOHDM cuprinde șase etape:
analiza, în care sunt descrise cerințele utilizând scenarii;
realizarea modelului obiect, în care se construiește o diagramă clasă pentru a prezenta structura statică a sistemului;
proiectarea prezentării, care exprimă modul în care sistemul va fi prezentat utilizatorului;
proiectarea navigării, unde este dezvoltat un model clasă de navigare, pentru a exprima posibilitățile de navigare în sistem;
realizarea implementării, unde sunt dezvoltate paginile Web, interfața și baza de date;
construirea sistemului, în care este construit sistemul.
Pentru a construi o diagramă de context, analistul trebuie să identifice entitățile externe care comunică și cu aplicația și evenimentele care declanșează comunicarea între aceste entități și aplicație. Setul de evenimente este specificat ca un tabel ce arată entitățile ce participă la un eveniment. SOHDM propune asocierea unui scenariu la fiecare eveniment. Scenariile sunt reprezentate grafic folosind o notație proprietar numită Scenario Activity Chart. Un scenariu descrie procesul de interacțiune între utilizator și aplicație, atunci când un eveniment declanșează o activitate. Acesta specifică fluxul activității, obiectele implicate și tranzacția realizată. SOHDM propune un proces pentru a obține modelul conceptual al aplicației din aceste scenarii. Modelul conceptual propus este reprezentat printr-o diagramă clasă. Următorul pas în procesul de dezvoltare SOHDM este regruparea acestor clase cu obiectivul de a obține o diagramă clasă de navigare.
2.4. Metodologia de proiectare a aplicațiilor web – HFPM: Hypermedia Flexible Process Modeling
Aceasta metodologie prezentată de Olsina (1998) este o abordare ce include strategii de modelare a procesului descriptive, orientate pe analiză, și prescriptive. HFPM include task-uri tehnice, de management, cognitive și participative. Astfel, HFPM furnizează recomandări (ghiduri) pentru planificarea și conducerea unui proiect Web, acoperind întreg ciclul de viață a unui astfel de proiect software. HFPM constă din 13 faze, pentru fiecare fiind definit un set de task-uri. Astfel, pentru "modelarea cerințelor" sunt definite următoarele task-uri:
Descrierea problemei;
Descrierea cerințelor funcționale;
Modelarea datelor;
Modelarea interfeței cu utilizatorul;
Descrierea cerințelor ne-funcționale.
Faza de "Dezvoltare" are definite următoarele task-uri:
Modelarea cerințelor software;
Modelarea conceptuală;
Modelarea navigării;
Modelarea interfețelor abstracte;
Proiectarea modelului de lucru;
Criterii cognitive;
Integrare/modelare fizică;
Documentare.
2.5. Metodologia de proiectare a aplicațiilor web – OOHDM – Object-Oriented Hypermedi Design Method
Metodologia OOHDM propune dezvoltarea de modele separate: conceptual, de navigare și interfața abstractă pentru sistemele Web. Modelul de navigare este construit cu o varietate de concepte, printre care puternicul "context de navigare". Procesul OOHDM este împărțit în patru faze:
modelul conceptual, reprezentat ca un model clasă, este construit pentru a arăta aspectele statice ale sistemului;
modelul de navigare constă dintr-o diagramă clasă de navigare (reprezentând posibilitățile statice ale navigării în sistem) și o diagramă de structură de navigare (incluzând structurile de acces și contextele de navigare);
modelul interfeței abstracte este dezvoltat folosind o tehnică specială numită ADV;
implementarea constă în codul implementat și se bazează pe modelele anterioare.
OOHDM a fost extins ulterior cu o tehnică specială ce se ocupă de interacțiunea cu utilizatorul în faza de analiză a cerințelor. Tehnica folosită se numește User Interaction Diagram (UID) și este construită pentru interacțiunea specială a utilizatorului Web cu sistemul Web. Diagramele UID se bazează pe tehnica binecunoscută a cazurilor de utilizare. Cazurile de utilizare sunt folosite pentru a "capta" cerințele, dar sunt considerate în OOHDM destul de ambigue și insuficiente pentru definirea cerințelor aplicațiilor Web, în special în ceea ce privește interacțiunea dintre utilizator și sistem. De aceea această metodologie sugerează pentru specificarea cerințelor rafinarea cazurilor de utilizare construind diagrame UID, care sunt folosite pentru a modela grafic interacțiunea dintre utilizator și sistem fără a lua în considerație aspectele specifice ale interfeței.
2.6. Metodologia de proiectare a aplicațiilor web – Web Modeling Language
Web Modeling Language este un sistem de notații pentru specificarea vizuală a site-urilor complexe la nivel conceptual. Spre deosebire de modelarea datelor, care este o activitate consolidată, modelarea hipertext este o disciplină mai tânără căreia îi lipsește o bază organizată de concepte, notații și metode de proiectare. Limbajul WebML oferă instrumente și notații elementare pentru modelarea hipertext. Ca bază se ia modelul Entitate-Relație ce folosește concepte simple și expresive pentru specificarea modelelor exprimate prin notații grafice intuitive. Modelul propus în WebML trebuie înțeles ca o prelungire a modelului Entitate-Relație, care dă posibilitate programatorului să extindă schema de date a aplicației cu specificarea hipertextului utilizat pentru publicarea și manipularea datelor. Componentele principale ale WebML sunt: paginile, unitățile și legăturile, organizate în structuri modulare numite zone și vederi ale site-ului. Unitățile sunt fragmente atomice de conținut, ce oferă alternative de combinare dinamică a conținutului extras din entități și relații al schemei de date. Totodată, unitățile permit specificarea formelor de introducere a datelor de către utilizatori. Din unități sunt formate paginile, care sunt elementele de interfață oferite utilizatorilor. Paginile și unitățile sunt conectate într-o structură hipertext. Legăturile reprezintă esența modelării hipertext: ele exprimă posibilitatea de navigare și transmitere de parametri de la o unitate la alta, necesari pentru generarea conținutului unei pagini. Toate conceptele WebML sunt asociate cu o notație grafică, ceea ce face ca modelarea Web să fie naturală și pentru personalul non-tehnic. În același timp, WebML este un limbaj formal care poate fi utilizat eficient pentru generarea unei implementări a site-ului într-un cadru arhitectural specific. WebML poate fi privit și ca un profil UML pentru dezvoltatorii de aplicații Web. WebML a stat la baza programului WebRatio, al cărui succes comercial demonstrează importanța modelării conceptuale a site-urilor web. Accentul în WebRatio se pune pe modelarea și reutilizarea implementărilor precedente, care sunt generate în mod automat sau semiautomat din modele de nivel înalt. Valoarea abordării propuse nu constă în componentele individuale ale sistemului, ci în definiția unei carcase bine sistematizate în cadrul căreia elaborarea aplicațiilor Web poate fi organizată în concordanță cu principiile fundamentale ale ingineriei soft și toate sarcinile sunt îndeplinite conform conceptelor, notațiilor și metodelor adecvate.
2.7. Platforme de dezvoltare pentru aplicațiile dispozitivelor mobile
J2ME si .Net Compact Framework (CF) sunt cele mai complexe platforme pentru dezvoltarea de aplicatii destinate clientilor din dispozitive mobile inteligente, ambele fiind noi tehnologii critice pentru comerțul avansat prin dispozitive mobile. În comparație cu tehnologiile de tip micro-browser precum WAP/WML sau cele enumerate mai sus, dispozitivele mobile inteligente oferă suport pentru interfețe mai bogate. De asemenea, clienții inteligenți (dispozitivele) reduc traficul din rețea și îmbunătățesc stabilitatea tranzacțională prin faptul ca suportă spațiu de stocare mai ridicat la nivel de dispozitiv. Din punct de vedere al dezvoltatorilor de aplicații, J2ME (Java Edition) și .NET CF cresc productivitatea creării de aplicații, siguranța aplicației și securitatea codului mobil. Creat special pentru "mobile computing", .NET CF este o versiune simplificată a Microsoft .NET Framework. .NET CF Common Language Runtime (CLR) execută aplicații .NET de tip byte code, asemănător Java, iar .NET CF conține un subset al bibliotecilor .NET standard, biblioteci necesare dezvoltării aplicațiilor mobile. .NET CF poate fi rulat pe dispozitive mobile care suporta Windows CE/Pocket PC. Spre deosebire de cel dintâi, J2ME conține o configurație si un profil standardizat, creat pentru a oferi cel mai bun compromis între portabilitate si performanta, din punct de vedere al dispozitivelor mobile. Fiecare combinație validă de configurații (care suportă API-urile de bază ale Java) are ca țintă un tip specific de dispozitive:
profilele create peste Connected Device Configuration (CDC) au ca țintă dispozitivele de tip hi-end. Aceste dispozitive au capacități hardware similare celor necesare pentru .NET CF. CDC cuprinde o mașină virtuală Java 2 standard, astfel încât poate fi utilizat byte code-ul standard al Java 2 Platform, Standard Edition (J2SE);
profilele create peste Connected Limited Device Configuration (CLDC) au ca țintă PDA-urile low-end și telefoanele celulare mici (cu volum mic) si utilizează o mică mașină virtuală care nu este compatibilă cu J2SE sau CDC.
.NET CF suporta numai un singur sistem de operare, și anume Windows. Se poate argumenta și faptul că .NET CF este o multi-platformă într-un anumit grad din cauza CLR: sistemele de operare Windows CE si Pocket PC rulează pe mai mult de 200 de tipuri de dispozitive diferite, iar byte-code-ul este portabil direct (doar) între aceste dispozitive. Cu toate acestea, dispozitivele Windows ocupă doar un mic procent din piața totală de dispozitive mobile. Partea cea mai mare a pieței telefoniei mobile este deținută de platformele Motorola iDEN, Nokia Symbian OS si Qualcomm Brew, existând de asemenea platforme specifice diversilor producatori. Pe PDA-urile low-end, jucătorul cel mai important din piață este Palm OS; pe dispozitivele de tip embedded sau telematic sunt utilizate sisteme de operare în timp real precum QNX Software Systems sau Win River VxWorks. Chiar și pe piața PDA-urilor hi-end, unde Windows are cea mai mare cotă de piață, au aparut dispozitive bazate pe Symbian OS sau diferite tipuri de Linux. Pentru dezvoltatorii de aplicații mobile, esențial este ca aplicațiile produse să se execute pe cât mai multe platforme, cu minimum de efort. Aici Java are mai multe avantaje asupra .NET CF, multe din platformele mobile enumerate mai sus având suport incorporat pentru Java. Multe extensii standard J2ME suportând facilități care nu sunt disponibile pe toate platformele (de exemplu SMS – Short Meesage Service sau redare multimedia). De asemenea, producătorii de dispozitive tind să adauge valoare soluțiilor lor prin oferirea de pachete de extensii J2ME. Din punct de vedere al aplicațiilor, piața s-a orientat mai mult către aplicațiile orientate-consumator. Jocurile de pe telefoanele mobile disponibile în rețelele NTT DoCoMo sau telefoanele cu camere foto și mesagerie multimedia au ajuns să fie utilizate și în platformele prezentate mai sus. Astfel, deși .NET CF nu este orientat în mod specific către o piață de tip consumer, suportă desenarea direct pe canvas, double buffering sau remaparea butoanelor dispozitivului prin intermediul bibliotecilor Windows Forms. Prin intermediul API-urilor native ale Windows Media Player de pe Pocket PC, aplicațiile .NET CF oferă suport pentru redare de conținut multimedia. Platformele J2ME au, în comparație cu .NET CF, suport larg către aplicațiile orientate către consumatori, platforma fiind capabilă să ofere atât acces la jocuri cât și la redarea conținutului multimedia. Datorită lipsei accesului direct la hardware, nici .NET CF și nici J2ME nu sunt capabile pentru aplicații video de înaltă performanță, suportul pentru aplicațiile consumator rămânând la ceea ce se poate observa la momentul actual pe piață. Nu același lucru se poate spune despre aplicațiile mobile destinate întreprinderilor, ambele platforme oferind, prin intermediul producătorilor suport pentru dezvoltarea și întreținerea acestor tipuri de aplicații. Pentru a beneficia pe deplin de capacitățile off-line, existența unei baze de date la nivelul dispozitivului mobil este esentială. .NET CF suporta un subset substantial al ADO.NET, în timp ce Java ofera JDBC (Java DataBase Connectivity). Cu toate că bazele de date izolate sunt destul de utile, la nivelul organizațiilor trebuie să existe suport pentru sincronizarea și consolidarea cu bazele de date mari, utilizate în aplicațiile curente. La ora actuală nu există un API standard pentru sincronizare pentru nici una din platformele discutate, fiecare producator de baze de date mobile sincronizând baza de date din dispozitivul mobil cu cea de la nivelul de întreprindere prin propriile soluții. În ceea ce privește utilizarea serviciilor web, Microsoft are un avans considerabil în adoptarea acestora, fiind una din firmele mari care au adoptat de timpuriu această tehnologie, promovând-o în toate aplicațiile sale recente. Consumarea serviciilor web în .NET CF nu presupune nici un cod adițional, aceste servicii putând fi tratate ca și obiecte locale, din punct de vedere al programatorilor. Pentru J2ME, suportul pentru SOAP nu este înca standardizat, existând totuși biblioteci care se pot utiliza pentru construirea clienților SOAP mobili. De asemenea, toate mediile de dezvoltare recente suportă utilizarea serviciilor web în J2ME prin intermediul kSOAP sau a serverelor de aplicații wireless proprietare (Oracle cu 9i Wireless Application Server, de exemplu). Din punct de vedere al managementului dispozitivelor, acesta este cea mai costisitoare parte pentru soluțiile mobile de întreprindere de astăzi. Asigurarea faptului că utilizatorii potriviți obțin softul potrivit și că softul se actualizează, este importantă pentru organizatiile care oferă accesul la resursele interne prin clienți mobili. Pentru aplicațiile mobile cu acces general, purtătorii rețelelor wireless trebuie să construiască "grădini" pentru a proteja clienții si sursele de venit. Pe partea de J2ME, aplicațiile sunt gestionate de pe back-end de-a lungul întregului ciclu de viață al produsului. Putem concluziona că atât .NET CF cât și J2ME sunt excelente platforme pentru dezvoltarea clienților inteligenți în vederea utilizării acestora în aplicații la nivel de întreprindere sau pentru comerț electronic mobil. Platforma .NET CF este orientată mai mult spre aplicații de întreprindere cu interfață bogată cu utilizatorul, în timp ce J2ME suportă un design modular și este portabilă pe o varietate de dispozitive, platforma oferind un suport balansat între aplicații de întreprindere și aplicații orientate către consumatori/utilizatori obișnuiți. În urma prezentării teoretice a conceptelor de aplicație web și mobilă am decis să creez o aplicație utilizând platforma Java pe care să o transpun în aplicație mobilă cu ajutorul unui emulator, după care să o conectez la web. Pentru ca acestea să fie posibile, în capitolul următor voi prezenta pașii parcurși atât în crearea aplicației cât și cei necesari în implementarea acesteia pe web dar și pe un telefon.
CAPITOLUL 3. MODEL DE APLICAȚIE JAVA – AGENDĂ TELEFONICĂ
În cel de-al treilea capitol voi expune etapele esențiale în dezvoltarea unei aplicații Java prin prezentarea codului dar și a rezultatelor acestora. Obiectivul acestui capitol este de a facilita înțelegerea rapidă a limbajului Java, dar și de a atrage atenția asupra posibilității de transpunere a aceluiași proiect în mai multe medii precum web și mobil. Acestea au fost posibile prin utilizarea de tehnologii diferite, specifice fiecărui mediu dar și a emulatorului și a mașinii virtuale.
Pentru a dezvolta corect aplicația și pentru ca aceasta să poată funcționa complet este necesară analiza detaliată a structurii sale. În alegerea platformei și mediului de dezvotare trebuie să considerate și operațiunile de transpunere web și de sincronizare pe telefonul mobil. Astfel, din cele trei platforme Java furnizate de Sun Microsystem (Java Micro Edition, Standard Edition și Enterprise Edition) cea care se potrivește aplicațiilor pentru telefoane sau alte gadget-uri este Java Micro Edition (J2ME). Deoarece proiectul final va fi transpus și pe platformă web, a fost nevoie să se realizeze o selecție a mediilor de dezvoltare existente, și anume, dintre Jcreator, Eclipse, NetBeans, BEA Workshop, BlueJ, CodeGuide, DrJava, IntelliJ IDEA, JBuilder, JDeveloper și Kdevelop, au rămas valabile doar mediile NetBeans și Eclipse.
3.1. Aplicație Java utilizând mediul de dezvoltare integrat NetBeans
Tehnologia potrivită acestui proiect, J2ME, una relativ nouă și agreată de marile companii producătoare de dispozitive mobile, își propune să extindă aria aplicațiilor mobile de la telefoane celulare până la cele mai sofisticate terminale fără fir produse astăzi.
Primul pas după cel al alegerii platformei este cel în care se stabilește arhitectura aplicației care va influența și hotărârea legată de mediul de dezvoltare ( vezi figura 3.1.1).
Figura 3.1. 1– Arhitectura aplicațiilor J2ME
După observarea arhitecturii și analizarea etapelor de prelucrare a aplicației se observă necesitatea existenței de Middlet-uri, ceea ce justifică alegerea mediului NetBeans pentru dezvoltarea acesteia ( vezi figura 3.2).
Figura 3.2. – Interfața mediului de dezvoltare NetBeans
Pentru începerea programării aplicației se deschide NetBeans și se crează un nou proiect J2ME care să aibe proprietățile stabilite în arhitectură. După aceasta se trece la scrierea codului ce va genera execuția anumitor comenzi.
3.1.1. Crearea claselor și obiectelor
În această aplicație s-au folosit tipuri generice pentru clasele necesare operațiunilor de adăugare de date, ștergere, modificare etc. Tipurile generice sunt intens folosite de clasele care implementează colecții de date. O astfel de clasă, fără a folosi tipuri generice, ar controla o colecție de obiecte de tip Object.
Adăugarea de obiecte de orice tip (mai puțin cele primare) se poate face folosind următorul cod:
package agenda_telefon;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.ListIterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.table.AbstractTableModel;
Crearea propriu-zisă a claselor se realizează introducând urmatoarea secvență de cod în urma căreia se va genera rezultatul din figura 3.1.1.
public class CarteDeTelefon extends AbstractTableModel
{
List<Abonat> contacte = new ArrayList<>();
class NumeComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
String nume1=((Abonat)o1).getNume();
String nume2=((Abonat)o2).getNume();
return nume1.compareTo(nume2);
}
}
class PrenumeComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
String prenume1=((Abonat)o1).getPrenume();
String prenume2=((Abonat)o2).getPrenume();
return prenume1.compareTo(prenume2);
}
}
class CNPComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
String cnp1=((Abonat)o1).getCNP();
String cnp2=((Abonat)o2).getCNP();
return cnp1.compareTo(cnp2);
}
}
class NrTelFComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
String nr1=((Abonat)o1).getT().getFix();
String nr2=((Abonat)o2).getT().getFix();
return nr1.compareTo(nr2);
}
Figura 3.1.1 – Crearea claselor necesară agendei
3.1.2. Scrierea codului sursă pentru comenzile dorite ( adăugare, ștergere, modificare, căutare, ordonare)
Primul pas este adăugarea contactelor (figura 3.1.2), deoarece este necesară crearea unei baze de date pe care să se execute comenzile. Acesta se face prin:
void adauga(Abonat a) {
contacte.add(a);
fireTableDataChanged();
}
Figura 3.1.2 – Adăugarea contactelor în agenda creată
Ștergerea datelor din agendă (figura 3.1.3) este realizată prin:
void stergere(Abonat a) {
contacte.remove(a);
fireTableDataChanged();
}
Figura 3.1.3 – Ștergerea abonaților din agendă
Opțiunea de modificare a datelor se realizează introducând secvențele următoare:
pentru modificarea numelor și a prenumelor (figura 3.1.4):
void modificaNume(Abonat a, String nume) {
int i = contacte.indexOf(a);
Abonat ab = contacte.get(i);
ab.setNume(nume);
//contacte.set(i, ab);
fireTableDataChanged();
}
void modificaPrenume(Abonat a, String nume) {
int i = contacte.indexOf(a);
Abonat ab = contacte.get(i);
ab.setPrenume(nume);
//contacte.set(i, ab);
fireTableDataChanged();
Figura 3.1.4. – Modificarea datelor
pentru modificarea CNP-ului:
void modificaCNP(Abonat a, String nume) {
int i = contacte.indexOf(a);
Abonat ab = contacte.get(i);
ab.setCNP(nume);
//contacte.set(i, ab);
fireTableDataChanged();
}
Opțiunea de introducere a datelor altor persoane(vezi figura 3.1.5) cu eventualele
semnalizări de erori se realizează prin codul urmator :
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Abonat ab = contacte.get(rowIndex);
switch(columnIndex){
case 0: return ab.getNume();
case 1: return ab.getPrenume();
case 2: return ab.getCNP();
case 3: return ab.getT().getFix();
default: return ab.getT().getMobil();
}
}
@Override
public String getColumnName(int column) {
return new String[]{"Nume","Prenume","CNP","Fix","Mobil"}[column];
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
Abonat ab=contacte.get(rowIndex);
switch(columnIndex){
case 0: ab.setNume(aValue.toString()); break;
case 1: ab.setPrenume(aValue.toString()); break;
case 2: ab.setCNP(aValue.toString()); break;
case 3: ab.setTF(aValue.toString()); break;
default: ab.setTM(aValue.toString()); break;
Figura 3.1.5.- Introducerea noilor contacte în baza de date
Observăm că programul rulează și poate reda orice comandă dorită. Având această aplicație configurată corect trecem la următorul pas și anume la coversia ei.
3.2. Conectarea aplicației J2ME la WEB
Probleme apar atunci când avem nevoie să extragem un obiect de un anumit tip din colecția de date locală și să îl transpunem pe web. Obiectul obținut este de tip Object, iar noi trebuie să facem o conversie adecvată explicită. Aici este punctul unde pot apărea problemele. Folosind o conversie explicită la un tip pe care îl știm noi că este cel corect, vom permite compilatorului să verifice dacă conversia este una corectă.
Pentru a testa solutia J2ME ne vom conecta la un serviciu Web .NET. Aceasta se realizează urmând următoarele instrucțiuni:
decărcați cea mai recent versiune a librăriei Ksoap.
deschideți din nou NetBeans și creați un nou proiect J2ME cu următoarele proprietăți:
Emulator Platform: Java Platform Micro Edition SDK 3.0
Device: Default CldcPhone1
Device Configuration: CLDC-1.1
Device Profile: MIDP-2.1
adăugați librăria kSOAP 2 în proiect (vezi figura 3.2.1)
Figura 3.2.1. – Adăugarea librăriei kSOAP
selectati proiectul J2ME in fereastra Projects din NetBeans. Apăsați Click-dreapta pe numele proiectului si selectati Properties
selectați categoria Libraries & Resources
verificați dacă pachetul este bifat și selectați OK.
creați un MIDIet simplu cu următoarele proprietăți:
MIDIet Name: MidletkSOAP
MIDP Class Name: MidletkSOAP
Package: eu.itcsolutions.j2me.ksoap
pentru a ne concentra pe modul de utilizare a serviciului WEB și transpunerea acestuia în tehnologie mobilă vom defini o interfață simplă bazată pe un form în emulatorul kSOAP (vezi figura 3.2.2)
Figura 3.2.2 – Emulatorul kSOAP pentru aplicație
Toate controalele interfetei sunt definite ca atribute ale clasei MidletkSOAP și sunt initializate in constructorul clasei:
package eu.itcsolutions.j2me.ksoap; import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class MidletkSOAP extends MIDlet {
//formularul principal
Form mainForm = null;
//controalele text-box pentru input
TextField txtBoxA = null;
TextField txtBoxB = null;
//label pentru rezultat
StringItem result = null;
//comanda Exit
Command cmdExit = null;
//comanda Add
Command cmdAdd = null;
//referinta la Display
Display display = null;
public MidletkSOAP()
{
//construim formularul principal
mainForm = new Form("kSOAP Example");
//construim controalele
txtBoxA = new TextField("Value 1:", null, 5, TextField.NUMERIC);
txtBoxB = new TextField("Value 2:", null, 5, TextField.NUMERIC);
result = new StringItem("Result:", null);
//adaugam controalele la formular
mainForm.append(txtBoxA);
mainForm.append(txtBoxB);
mainForm.append(result);
//construim comenzile
cmdExit = new Command("Exit", Command.EXIT, 1);
cmdAdd = new Command("Add", Command.SCREEN, 1);
//adaugam comenzile
mainForm.addCommand(cmdAdd);
mainForm.addCommand(cmdExit);
}
public void startApp() {
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
}
După construirea formului în emulator se rulează din nou programul și se observă migrarea bazei de date inițiale în “telefonul virtual” reprezentând o aplicație tipică pentru un telefon mobil. Singura diferență este că acest telefon mobil este creat virtual, prin intermediul emulatorului. Evident, după executarea programului acesta simplu se pot face adăugări, și astfel se completează aplicația până la un stadiu cât mai elaborat pentru a putea satisface cât mai multe nevoi.
O propunere de îmbunătățire a aplicației este adăugarea unor detalii la fiecare contact din agendă precum poze sau sunete. Acest lucru este posibil doar după studierea amănunțită a detaliilor de programare în mediul NetBeans, criteriilor necesare pentru transpunerea pe web și după, analizarea caracteristicilor ce urmează a fi introduse în emulator pentru a crea imaginea virtuală a unui telefon rulând aplicația.
CONCLUZII
În urma conceperii acestei lucrări am realizat faptul că obiectivele inițiale au fost atinse, și anume cel de a crea o imagine mai clară asupra acestei teme, de a răspunde la anumite întrebări legate de posibilitatea transpunerii pe mai mult medii a unei simple aplicații, și de a-mi aprofunda cunoștințele din domeniu.
Aplicațiile Java, cum am menționat și anterior în capitolul întâi, necesită o atenție deosebită datorită faptului că tehnologia informațională a suferit o dezvoltare explozivă iar acest limbaj a devenit esențial pentru orice aparatură modernă.
Am urmărit expunerea pașilor exacți în dezvoltarea unei aplicații Java prin care am creat o agendă telefonică pentru a putea prezenta funcționalitatea acesteia nu doar pe platforma locală ci și pe web și pe mobil. Acestea au fost posibile studiind diferite tehnici de transpunere de la un mediu la altul, fapt ce a implicat o contribuție proprie substanțială. Prin această lucrare doresc să ofer posibilitatea de a înțelege în profunzime tehnicile necesare în crearea dar și în utilizarea aplicațiilor proprii de la distanță, folosind internetul, sau de pe mobilul personal.
PROPUNERI
Una din cele mai interesante probleme din domeniul Java o reprezintă inexistența unei posibilități de creare a unei aplicații proprii și de sincronizare la platforma iOS, în cazul deținerii unui iPhone. Aceasta este cauzată de diferențele dintre Java și Apple, care ar putea fi mascate însă printr-un emulator iOS creat pe platforma Java. Emulatorul ar putea simula prezența sistemului de operare iOS, și astfel ar oferi posibilitatea de creare a diferitor aplicații personale după bunul plac. O astfel de realizare ar ușura munca a milioanelor de utilizatori iPhone care își doresc aplicații personalizate.
Bibliografie
Cărți și volume:
B. Andrei, Programare WEB utilizand Java, Editura Albastra, 2006.
B. Joshua, Effective Java, 2nd Edition, 2008.
C. Luca, E. Ciurea, Algoritmi si programare JAVA- teorie si aplicatii, Editura: Albastra, 2006.
C., Stefano, Computer Networks, Volume 33, June 2000.
Constantine, L., Lockwood, L., Software for Use: A Practical Guide to Models and Methods for Usage-Centered Design, ACM Press, 2001.
De Troyer, O., C. Leune, WSDM: A User-Centered Design Method for Web Sites. Computer Networks and ISDN Systems, World Wide Web Conference, Elsevier, 1998.
D. Danciu, G. Mardale, Arta programarii in Java (Vol II) Algoritmi si structure de date, Editura Albastra, 2008.
F. David, Java in a Nutshell, 3rd edition, O’Reilly & Associates, 1999.
F. M. Boian, R. F. Boian, Tehnologii fundamentale Java pentru aplicatii web, Editura: Albastra, 2004.
J. Ioan, Programarea orientata pe obiecte. Limbajul Java, Editura: Editura de Vest, 2005.
K. Jim, JavaScript fara mistere – ghid pentru autodictati, Editura: Rosetti Educational, 2005.
R. Stuart and S. Marty, Building Java Programs: A Back to Basics Aproach, 2nd edition, 2010.
S. Cosmin, V. Mircea – Florin, Elemente practice de baza pentru programarea in limbajele C# si Java, Editura: Casa Cartii de Stiinta, 2012.
S. Kathy and B. Bert, Head First Java, 2nd Edition, 2005.
T. Stefan, O. Cristian, A. Stefan, Java de la 0 la expert, editia a-II-a, Editura: Polirom, 2007
Vilain, P., D. Schwabe, C. Sieckenius de Souza, A Diagrammatic Tool for Representing User Interaction, 2000.
Articole și jurnale de specialitate:
Biffl, S., Aurum, A., Boehm, B. W., Erdogmus, H., Grunbacher, P., Value-based Software Engineering, Springer-Verlag, September 2005
Deshpande, Y., Murugesan, S., Ginige, A., Hansen, S., Schwabe, D., Gaedke, M., White, B., Web Engineering, Journal of Web Engineering, 2002.
Escalona, M. J., N. Koch: Requirements Engineering for Web Applications: A Comparative Study. Journal on Web Engineering, 2004.
Jos de Burgin, P. Axel, The Semantic Web: Research and Applications, June 2006
K. Nora , A Comparative Study of Methods for Hypermedia Development, 2003.
Mendes, E., Mosley, N., Web Engineering, Springer, 2006.
Olsina, L., Building a Web-based Information System, 2004.
Surse on-line:
http://www.wsmo.org/TR/d16/d16.1/v0.3/20070209/d16.1v0.3_20070209 [Accesat la data de 29/11/2012]
http://www.sciencedirect.com/science/article/pii/S0378720699000117 [Accesat la data de 10/11/2012]
http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=651682&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D651682 [Accesat la data de 12/11/2012 ]
http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=323335&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D323335 [Accesat la data de 05/10/2012]
http://www.sciencedirect.com/science/article/pii/S1389128600000402 [Accesat la data de 07/112012]
Bibliografie
Cărți și volume:
B. Andrei, Programare WEB utilizand Java, Editura Albastra, 2006.
B. Joshua, Effective Java, 2nd Edition, 2008.
C. Luca, E. Ciurea, Algoritmi si programare JAVA- teorie si aplicatii, Editura: Albastra, 2006.
C., Stefano, Computer Networks, Volume 33, June 2000.
Constantine, L., Lockwood, L., Software for Use: A Practical Guide to Models and Methods for Usage-Centered Design, ACM Press, 2001.
De Troyer, O., C. Leune, WSDM: A User-Centered Design Method for Web Sites. Computer Networks and ISDN Systems, World Wide Web Conference, Elsevier, 1998.
D. Danciu, G. Mardale, Arta programarii in Java (Vol II) Algoritmi si structure de date, Editura Albastra, 2008.
F. David, Java in a Nutshell, 3rd edition, O’Reilly & Associates, 1999.
F. M. Boian, R. F. Boian, Tehnologii fundamentale Java pentru aplicatii web, Editura: Albastra, 2004.
J. Ioan, Programarea orientata pe obiecte. Limbajul Java, Editura: Editura de Vest, 2005.
K. Jim, JavaScript fara mistere – ghid pentru autodictati, Editura: Rosetti Educational, 2005.
R. Stuart and S. Marty, Building Java Programs: A Back to Basics Aproach, 2nd edition, 2010.
S. Cosmin, V. Mircea – Florin, Elemente practice de baza pentru programarea in limbajele C# si Java, Editura: Casa Cartii de Stiinta, 2012.
S. Kathy and B. Bert, Head First Java, 2nd Edition, 2005.
T. Stefan, O. Cristian, A. Stefan, Java de la 0 la expert, editia a-II-a, Editura: Polirom, 2007
Vilain, P., D. Schwabe, C. Sieckenius de Souza, A Diagrammatic Tool for Representing User Interaction, 2000.
Articole și jurnale de specialitate:
Biffl, S., Aurum, A., Boehm, B. W., Erdogmus, H., Grunbacher, P., Value-based Software Engineering, Springer-Verlag, September 2005
Deshpande, Y., Murugesan, S., Ginige, A., Hansen, S., Schwabe, D., Gaedke, M., White, B., Web Engineering, Journal of Web Engineering, 2002.
Escalona, M. J., N. Koch: Requirements Engineering for Web Applications: A Comparative Study. Journal on Web Engineering, 2004.
Jos de Burgin, P. Axel, The Semantic Web: Research and Applications, June 2006
K. Nora , A Comparative Study of Methods for Hypermedia Development, 2003.
Mendes, E., Mosley, N., Web Engineering, Springer, 2006.
Olsina, L., Building a Web-based Information System, 2004.
Surse on-line:
http://www.wsmo.org/TR/d16/d16.1/v0.3/20070209/d16.1v0.3_20070209 [Accesat la data de 29/11/2012]
http://www.sciencedirect.com/science/article/pii/S0378720699000117 [Accesat la data de 10/11/2012]
http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=651682&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D651682 [Accesat la data de 12/11/2012 ]
http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=323335&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D323335 [Accesat la data de 05/10/2012]
http://www.sciencedirect.com/science/article/pii/S1389128600000402 [Accesat la data de 07/112012]
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: Metodologii de Proiectare Folosind Platforma Java (ID: 162808)
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.
