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 ☺!
|