IPRO - PC Magazine Romania, Septembrie 2003
SOLUȚII PENTRU PROGRAMATORII ȘI DESIGNERII WEB
Implementarea aplicațiilor web profesionale
Tehnologia Java Servlets
Mircea Scărlătescu
Spațiul Word Wide web a trecut prin diverse etape de dezvoltare, începând de la primele pagini web care aveau funcționalități ce erau de cele mai multe ori limitate la reclamă și câteva date de contact, până la portalurile complexe din ziua de azi. De la moda de a avea un site personal sau al firmei, s-a ajuns la necesitatea de a fi prezent pe internet pentru a supraviețui într-un mediu de afaceri concurențial, și din ce în ce mai axat pe tehnologia informației.
De la un serviciu de interes redus, sau pentru un segment restrâns de public (specialiști), web-ul a ajuns la fel de obijnuit în casele moderene ca și televizorul sau radioul, și tendința actuală este de intergrare totală a sistemelor electronice în rețeaua mondială, începând de la sistemele de calcul și până la frigidere care să comande singure produsele care nu se mai gasesc în el. Scenarii science-fiction din urmă cu 10 ani devin acum realitate, cel putin experimental.
Poate că cele mai importante avantaje pe care le oferă web-ul pentru mediul de afaceri este accesibilitatea (o pagină web este vizibilă din orice colț al lumii, de pe un device conectat la internet) si portabilitatea pe orice sistem de calcul, dotat cu orice sistem de operare.
HTML este limbajul interpretat de orice browser web, fiind astfel un mediu de prezentare ideal pentru aplicații ce rulează pe rețele eterogene (așa cum este internet-ul) unde nu există garanții asupra sistemelor de operare sau a protocoalelor de comunicație utilizate de cei ce se conectează în rețea (clienții). HTML prezintă însă un mare dezavantaj: este un limbaj care definește modul în care informația este prezentată, și nu are posibilități de căutare a informației, de prelucrare sau actualizare. Astfel, limitările acestui limbaj au devenit clare odată ce conținutul paginilor web se schimbă de foarte multe ori (conținutul unei pagini web se actualizează chiar și la interval de câteva secunde, vezi portalurile de știri). Aplicațiile web din ziua de azi accesează informații confidențiale ale companiilor, ajută la stocarea informațiilor introduse de către clienți, prelucrează date care parvin în mod automat de la alte aplicații (servicii web), de aici rezultând necesitatea unor tehnologii care să fie fiabile și stabile, să asigure securitatea necesară unor tranzacții de genul celor descrise mai sus.
Însuși termenul de pagină Web este considerat de mulți specialiști ca fiind
depășit din punctul de vedere al aplicabilității și al modului în care descrie
utilizarea Web-ului ca "platformă" de comunicații în lumea de azi.
Termenul de aplicație Web (sau aplicație cu interfață Web) definește azi programe
de o complexitate începând de la mediu până la foarte mare, care oferă suite
de servicii complexe și variate către clienții companiilor sau către alți utilizatori
de internet. Un exemplu care în țările ceva mai dezvoltate a devenit banal,
dar care în Romania este înca privit cu multă teamă, este magazinul virtual,
comerțul electronic. Un astfel de site, trebuie să asigure o prezentare dinamică
și cât mai reușită a produselor comercializate, trebuie să asigure o posibilitate
cât mai convenabilă de achiziționare și bineînteles trebuie să fie pus la punct
cât mai bine din punctul de vedere al securitații și confidențialității datelor
pe care clienții le oferă la cumpărare. Nu în ultimul rând, un astfel de produs
trebuie să fie ușor de administrat, ușor de actualizat atunci când va fi cazul,
inclusiv de către persoane care nu sunt specialiști IT.
Odată cu dezvoltarea tehnologiei informației, nevoile de comunicare prin intermediul web-ului au adus în discuție dezvoltarea unor soluții software destinate implementării soluțiilor web dinamice, care să aducă programarea online la nivelul programării clasice, și chiar undeva mai sus, din toate punctele de vedere. Astăzi, nu se mai concep soluții ERP și CRM (și nu numai) care să nu conțină și interfețe web pe deplin functionale, care pot fără probleme să înlocuiască aplicația clasică. Și având în vedere că web-ul s-a extins practic în toate domeniile de activitate, putem afirma fără teama de a greși că domeniul aplicațiilor web este la ora actuală într-o continuă dezvoltare, iar viitorul îi rezervă doar surprize plăcute.
Marile companii s-au întrecut în a oferi soluții din ce în ce mai performante și ușor de utilizat pentru acest domeniu. PHP s-a impus ca o solutie open-source care împreună cu server-ul Apache și MySQL pentru baze de date a adus la o adevarată revoluție în domeniul programării Web. Apropierea de sintaxa C/C++, usurința programării și rapiditatea dezvoltării surselor au dus la un succes imediat al acestui limbaj de scripting
La rândul lui, gigantul din Redmond - Microsoft - a lansat ASP, un limbaj de scripting care a cucerit un segment important de piață în domeniul productiei Web. Sun, promotorii Java au lansat apoi tehnologia JavaServerPages și Java Servlets, care au adus Java și mai puternic în domeniul internetului, iar implicarea IBM în promovarea soluțiilor de business bazate pe Linux și Java, au facut ca JSP și Servlets să devină una dintre cele mai bune soluții de dezvoltare a aplicațiilor B2B și B2C existente.
.NETFramework de la Microsoft a adus tehnologia ASP.NET, care însă cel puțin pentru moment suferă la capitolul portabilitate (servere ASP.NET - enabled nu există pe moment decât pentru platforme Windows), acest subiect reprezentând deocamdată un punct mai slab pentru produsele Microsoft.
Vom discuta în cele ce urmează tehnologiile de dezvoltare web implementate
și promovate de Sun (www.sun.com)
denumite Java Servlets și Java Server Pages. Încă de la început trebuie precizat,
pentru începatori, că pentru a putea lucra cu pachetele Java destinate construirii
aplicațiilor web, sunt necesare cunoștințe de programare pe obiecte, și de sintaxă
Java. Desigur internetul este plin de astfel de documentații și tutoriale pe
tema Java și OOP (Object Oriented Programming), deci nu va fi o problemă pentru
doritori să deprindă secretele acestui limbaj extrem de apreciat.
Dar pentru că o introducere în universul web al zilei de azi și al viitorului, nu este completă fără o scurtă referire la XML, trebuie să spunem că toate facilitățile de lucru Java cu formatul XML sunt disponibile și în tehnologiile de dezvoltare web ale acestei platforme. XML s-a impus ca standard în tipizarea și transmiterea informațiilor între sisteme, și este pe scară largă folosit în tehnologia denumită servicii web, anunțată ca marea cucerire a programării web din ultima vreme. Recomandăm studiul acestui standard, care stă acum la baza comunicării atât între calculatoare, dar și în general între orice device-uri ce se pot conecta la internet. www.w3.org este adresa care se recomandă pentru documentații și specificații complete pentru XML.
Ce sunt de fapt servleții Java?
În esență, un servlet este un modul Java care rulează în interiorul unui server web, si îi extinde funcționalitățile. Putem să spunem, făcând o comparație cu programele Java obijnuite că un servlet este pentru un server web ceea ce este un applet Java pentru browserele web. Diferența este însa că un servlet nu va avea o interfață grafică, funcționarea lui fiind transparentă pentru client. De asemenea servleții sunt o soluție bună pentru înlocuirea programării CGI clasice.
Domeniile în care tehnologia Java Servlets se poate integra încep de la aplicații de management al afacerii, administrarea bazelor de date până la domeniul deoesebit de la modă și în plină dezvoltare al video-conferințelor sau chat-ului. Servlet-urile pot să facă față cererilor simultane făcute de către mai mulți clienți, le poate sincroniza, pot restricționa accesul acestora la resurse funcție de necesități sau de politicile de securitate, și chiar pot comunica unul cu altul, sau cu alte resurse online, ceea ce-i fac o soluție bună pentru load-balancing între mai multe locații cu același conținut. Desigur nu întâmplător am amintit mai devreme de magazine virtuale, Java fiind una din cele mai apreciate tehnologii de implementare a sistemelor de plata online, și tot ce înseamnă comerț electronic (autentificare, certificate electronice, criptare, etc).
Un alt mare avantaj care apare la utilizarea tehnologiei JavaServlets, este reprezentat de existența facilităților de multi-threading, concept înrudit cu multi-tasking, și care reprezintă efectuarea mai multor task-uri de către o singură masină (aparent) simultan. Această facilitate este deosebit de bine utilizată de sisteme multi-procesor, dar nu numai, iar limbajul Java include pachete foarte performante pentru lucrul cu thread-uri.
Trebuie precizat că servleturile sunt independente de protocolul folosit pentru comunicare de către servere, cele mai folosite fiind servleturile care lucrează cu protocolul HTTP (și deci pe servere web). Acest aspect merită precizat și pentru a întări ideea independenței de platformă pe care rulează o aplicație ce folosește servleți.
Un servlet, ca orice program Java, se poate scrie în orice editor de text, deși, dacă se dorește exsită și unelte dedicate, unele open-source, și unele care sunt disponibile contra cost. Pentru a scrie un servlet, este necesară importarea pachetului javax.servlet, pachet ce conține interfețele și clasele ce sunt necesare la proiectarea și rularea lui. Nucleul acestui pachet este reprezentat de interfața servlet. Orice servlet implemetează direct sau indirect această interfață. O metodă relativ mai ușoară este de a deriva clasa Http Servlet (clasa ce implementează interfața Servlet). Întreaga arhitectură a pachetului javax.servlet se invârte în jurul acestor două clase prezentate mai sus.
Poate cea mai importantă componentă a unui servlet, fără de care funcționalitatea acestuia s-ar pierde, este reprezentată de interacțiunea cu clientul. La primirea unei cereri de la un client, programul primește două obiecte: ServletRequest si Servlet Response. Primul obiect este cel care realizează "încapsularea" comunicației dinspre client către server, iar al doilea este responsabil de comunicația în sens invers de la server, înapoi către client. Cele două interfețe (ServletRequest, ServletResponse) sunt incluse în pachetul javax.servlet.Vom discuta în continuare despre ele.
ServletRequest
Permite accesul servletului la informații cum ar fi numele parametrilor trimiși de client, numele host-ului care face cererea către servlet, etc dar și la fluxul de intrare (stream) de la client, prin care sunt transmise variabile prin metodele POST și GET. Interfețele care extind ServletRequest permit structurarea datelor de intrare în funcție de protocolul folosit. Un exemplu de interfață de acest gen: HttpServletRequest conține metode care prelucrează date ce vin prin intermediul protocolului HTTP.
ServletResponse
Permite setarea unor informații cum ar fi lungimea sau tipul răspunsului ce pleacă spre client, dar și un flux (stream) de ieșire.
Un servlet Java folosit în ziua de azi la aplicațiile web implementează desigur mult mai multe operații (și mai complexe) odată ce este apelat de un client. Există posibilitatea setării de cookie-uri, iar funcționalitățile limbajului Java (lucrul cu baze de date, prelucrare de text, etc) pot fi folosite pentru scrierea de servleturi complexe.
Dar cum întodeauna un exemplu face cât 1000 de cuvinte J iată în continuare un scurt servlet care ilustreaza informațiile prezentate mai sus
public class PCMagazineServlet extends
HttpServlet
{
public void doGet (HttpServletRequest
request,
HttpServletResponse response)
throws ServletException, IOException
{
PrintWriter outStream;
String titlul = "Primul Servlet
prezentat de tutorialul PCMagazine!";
// setam tipul raspunsului
response.setContentType("text/html");
// se scrie raspunsul (prin intermediului
fluxul de iesire out)
outStream = response.getWriter();
outStream.println("<HTML><HEAD><TITLE>");
outStream.println(titlul);
outStream.println("</TITLE></HEAD><BODY
BGCOLOR=#336699>");
outStream.println("<P ALIGN=center
>" + titlul + "</P>");
outStream.println("<HR>");
outStream.println("<P ALIGN=center>PCMagazine:
Tutorial JavaTehnology.");
outStream.println("</BODY></HTML>");
outStream.close();
}
}
Exemplul de mai sus va întoarce la client o pagină HTML (fără pretentii grafice deosebite J) care reprezintă răspunsul server-ului web la cererea clientului. Despre modul de comunicare între client și server-ul web, tipul raspunsului (și ce opțiuni există pentru el), specificațiile HTTP 1.1 pot fi găsite la adresa www.w3.org. De asemenea, este recomandată și studierea documentației aferente pachetului javax.servlet, pentru o înțelegere temeinică a posibilităților și facilităților pe care le oferă.
Pentru a putea rula exemplul de mai sus, dar și orice alt servlet, trebuie
să avem configurat un server care "știe" să ruleze servleturi Java.
Un excelent server care rulează servleturi este server-ul Tomcat (proiectul
Apache Foundation - www.apache.org).
Tomcat este disponibil atât pentru platforme Windows, cat și Linux, alegerea
din acest punct de vedere aparținând exclusiv dumneavoastră. E bine de precizat
că soluții Java-Linux sunt la ora actuală foarte căutate și apreciate. Există
o mulțime de servere Java-enabled, dar pentru început, atât ca dimensiune, cât
și ca resurse utilizate, configurare, etc Tomcat reprezintă o alegere buna pentru
începători și nu numai. Tomcat poate fi instalat odată cu pachetul Java Web
Services Developers Pack, disponibil de la Sun (gratuit).
După descărcarea pachetului și instalarea acestuia, server-ul web este gata de lucru. Pornirea și oprirea server-ului Tomcat se fac astfel:
pornire server:
pe un sistem Unix (Linux): % startup.sh
pe un sistem Windows: C:\TOMCAT_HOME\bin> startup
oprire server:
pe un sistem Unix (Linux): % shutdown.sh
pe un sistem Windows: C:\TOMCAT_HOME\bin> shutdown
Odată ce server-ul Tomcat este pornit, pentru rularea unei aplicații care conține servleturi, primul pas este reprezentat de specificarea unor parametrii care definesc "comportamentul" aplicației, prin intermediul unui descriptor de deployment, descriptor care este reprezentat printr-un fisier xml.
Despre cum instalăm și configurăm o aplicație în Tomcat, precum și un prim exemplu elaborat pentru servleturi vom prezenta în numărul viitor.
Până atunci, recomandăm pentru cei interesați de acest domeniu, site-urile
www.apache.org www.java.sun.com
www.sun.com atât pentru resursele
necesare, dar și pentru o serie de documentații deosebit de interesante din
domeniu, unele dintre ele gratuite, și insoțite de exemple de cod. Desigur și
o căutare pe www.google.com
poate da rezultate satisfăcătoare. Dar și pentru cei care nu sunt pasionați
încă de programarea Web realizată în tehnologie Java, trebuie să spunem că extinderea
mare a platformei în cele mai variate domenii, (chiar și până la televiziunea
interactiva !) fac din aceasta o soluție de viitor atât pentru companiile care
caută soluții de dezvoltare IT, dar și pentru producătorii de astfel de soluții,
deci documentarea pe această temă nu poate să fie decât benefică, pentru că
experiența în domeniul tehnologiei informației și comunicațiilor arată că primii
veniți în domenii cu mare viitor, și cei care folosesc tehnologii de ultimă
oră, sunt cei care vor avea și cel mai mare succes. Așadar, bine ați venit în
Comunitatea dezvoltatorilor Java ☺!
|