Numărul acesta al revistei Today Software Magazine apare într-un moment în care lumea se întoarce din vacanţă, are energie, poftă de a cunoaşte şi de a se perfecţiona. Tocmai de aceea nu voi dezamagi cititorii revistei şi implicit ai recenziilor mele, alegând un subiect captivant.
Cartea Java SOA Cookbook de Eben Hewitt se adresează cu adevărat dezvoltatorilor şi arhitecţilor cu un grad de experienţă. Cei mai puţin experimentaţi pot găsi, totuşi, repere despre nivelul la care ar trebui să ajungă arhitecturile cu care lucrează. Cei experimentaţi găsesc soluţii pentru problemele lor. Cartea are un avantaj major, nu pune doar probleme ci oferă şi soluţii.
Arhitecturile orientate pe servicii (SOA) sunt probabil cele mai răspândite arhitecturi enterprise şi implicit în world of web. Trebuie spus încă de la început că SOA nu înseamnă un stil sau o metodologie de dezvoltare a aplicaţiilor web, ci este o arhitectură şi o strategie de organizare. Dezvoltatorii pot înţelege astfel contextul în care munca lor se desfăşoară, iar arhitecţii îşi vor îmbunătăţi munca pe baza bunelor practici, venite din anii de experienţă ai echipei autorului şi din studiul dedicat evoluţiei limbajului Java.
Personal, cred că orice dezvoltator sau arhitect al unei aplicaţii enterprise, care a ajuns la un anumit nivel de profesionalism, ar trebui să aibă în vedere şi soluţiile oferite de aceasta carte. Chiar dacă suportul tehnic al aplicaţiilor este JDK 6, versiunea enterprise a platformei este 5, iar serverul Glassfish are doar versiunea 2, nu văd nicio problemă. Sigur, evoluţiile sunt către a elimina unele dintre operaţiile ce fac parte din ceea ce numim "dirty job", dar cunoașterea a cât mai multor detalii este benefică.
Înainte de a intra în descrierea propriu zisă a cărţii doresc să precizez că pentru servicii de proces, autorul folosește BPEL (Business Process Execution Language) în ciuda disputelor existente de-a lungul timpului între BEA Systems şi BPEL . Alternativa pentru BPEL este oferită de BPM suite.
Cartea este structurată în patru părţi:
Partea de fundamente, în care sunt prezentate, mai degrabă, noţiuni folosite pentru SOA, dar şi multe detalii legate de limbajul XML. Până la apariţia adnotaţiilor, XML-ul a jucat un rol hotărâtor, atât pentru descrierile de date cât şi pentru validări sau conversii.
Partea de servicii web, care cuprinde o trecere în revistă, destul de detaliată, a serviciilor web şi API-urile Java ce le susţin. Capitolul de început al părţii se concentrează pe introducerea descriptorului WSDL, clienţilor de servicii şi instrumentelor de monitorizare şi debugging ale serviciilor, în timpul dezvoltării. Exemple simple completează partea teoretică. Capitolul următor se concentrează pe API-ul SAAJ (SOAP with Attachments API for Java). Este binevenită această trecere treptată spre API-urile actuale. Pe de o parte pentru că este un API low-level, ce comunică direct cu XML, dar şi pentru că API-urile ce urmează sunt mult mai abstracte, deci mai greu de înţeles fără SAAJ. În capitolul următor este prezentat JAX-WS (Java API for XML Web Services). Acest API se bazează pe JAX-RPC API, fiind însă mult modificat faţă de acesta. Clienţii serviciilor web sunt introduşi în capitolul următor, care este de fapt o continuare detaliată a discuţiilor despre clienţii serviciilor introduşi în capitolele anterioare. În sfârşit, ultimul capitol al acestei părţi este probabil şi cel mai actual. El se concentrează pe servicii REST (REpresentational State Transfer). Sunt, evident, mult mai uşor de utilizat şi în consecinţă mult mai populare. Lipsa aproape completă a XML-urilor este un atu demn de luat în seamă. Actualmente foarte mulţi clienţi, printre care şi cei de pe dispozitivele mobile, folosesc REST ca modalitate de comunicare cu backend-ul. La fiecare nouă versiune de Java Enterprise apar specificaţii noi pentru REST.
Partea despre Business Processes. Deşi puţin surprinzător pentru mine, autorul foloseşte BPEL pentru Service Orchestration. Surpriza este dată de faptul că Oracle susţine BPM suite şi de aceea majoritatea arhitecţilor Java folosesc acest standard pentru a crea business process. În mod cert, ambele au o largă răspândire. Prezentarea procesului de orchestrare a serviciilor este introdusă gradual (invocarea multiplelor servicii web sau XSL transformation - pentru transformarea documentelor din format XML în alte formate). Nu lipsesc elementele avansate printre care activităţile paralele, întârzierile sau corelările. În ultimul capitol al acestei părţi sunt introduse instrumente de urmărire a serviciilor web. Poate cel mai popular element introdus aici este serviciul UDDI (Universal Description, Discovery and Integration).
Ultima parte este despre interoperabilitate şi calitatea serviciilor. Principala temă despre interoperabilitate se referă la interoperarea serviciilor web cu servicii şi clienţi de pe alte platforme. Se face referire la specificaţiile WS-Addressing şi la implementarea clienţilor în Ruby sau .NET. Despre calitatea serviciilor se discută standardele ce conduc la creşterea încrederii în servicii web.
Cartea are un grad de dificultate înalt. Nu este chiar cartea de pe noptieră, de citit seara înainte de culcare. Exemplele numeroase şi comentariile pertinente, alături de stilul abordat: prezentarea problemei, soluţia şi comentarii cu multe exemple, creează o ordine în gândire capabilă să aducă performanţa. Luaţi-vă timp şi energie pentru a parcurge materialul, iar la sfârşit, dacă veţi fi înţeles toate problemele abordate, cu siguranţă veţi fi dobândit şi un bagaj de cunoştinţe care vă sporesc valoarea incontestabil.
Ca de obicei spun că sunt interesat de discuţii cu cititorii pe care îi invit să le iniţieze sau să ia parte la ele.