miercuri, august 10, 2005

AJAX --> Asynchronous JavaScript + XML

Nu pot sa descriu in cuvinte repulsia pe care o simt relativ la JavaScript (mai bine spus JScript). Este o adunatura de comenzi, puse claie peste gramada, fara nicio ordine clara. Daca te uiti pe o carte de JavaScript ai impresia ca e un dictionar de comenzi. Parca cei ce l-au conceput sau mai ales dezvoltat (nu au avut oricum o ideie pre buna) au adunat de-a lungul timpului tot ce e mai urat in acest pseudo limbaj. Am aaut probleme cu vizibilitatea variabilelor, imposibilitatea de a depana. Da, da, depanarea e un adevarat chin. Sincer, numai cunoscutul alert. Am impresia ca in Modzila e un depanator, sau cei de la Microsoft au asa ceva. Prea costisitor. Eu fac doar Java.

Este foarte clar ca este nevoie de dinamica pe partea de client. Spun asta ca om care a lucrat la aplicatii web de intranet. Ar fi un nonsens sa nu folosesti avantajele unui scripting pe client in astfel de aplicatii.

In firma unde lucrez am stabilit o regula. Aceea de a nu tine starea aplicatiei pe partea de client ci o o lasa a fi gestionata de server. Astfel purtam datele spre server ca prametri via request. Regula suna asa: ceea ce se vede in interfata este si in baza de date. Altfel lucrurile degenerau in haos, prin incercarea de a tine starea aplicatiei pe client folosind JavaScript. Lucrurile deveneau intotdeauna prea complicate. Java Script se foloseste pentru a arunca ferestre de diaolog, a ascunde elemente, etc... Mici tertipuri... Dar, este vorba dupa cum am spus de aplicatii de intranet.

In cazul aplicatiilor Web (pure - situri Web sa le spunem asa) lucrurile sunt clare. Java script la minimum. Incompatibilitatile browsereleor sunt binestiute.

Totusi am remarcat doua tehnologii care folosesc Java Script si care sunt revolutionare in felul lor. Una ar fi Laszlo Systems, un sistem de componente pentru construirea de aplicatii bogate. Si AJAX, folosit la urma urmei in acelasi scop.

Despre AJAX mai multe in continuare...

Am ramas surprins. Posibilitatea de a face refresh pe o singura zona a paginii este un mare avantaj. E ca si cum s-ar actualiza doar un tile si nu toata pagina. Avantajul se pare ca este adus de specularea unui mic amanunt (a se vedea asemanarea cu AOP care arela baza simpla incterceptie a apelului de metoda). Totul sta in obiectul XMLHttpRequest din Java Script introdus pentru prima oara de Microsoft. Acesta permite actualizarea unei componete din arborele DOM care descrie pagina curenta in mod asincron. AJAX reprezinta un mod abstract de a privi aceasta problema.

Doua exemple de folosire a cestei tehnologii: google sugest si google maps.

In Java exista o implementare care se numeste SWF (Simple Web Framework). Semana cu Struts ca arhitectura, dar este bazata pe XMLHttpRequest. Sunt acolo cateva exemple tulburatoare. Nu cred ca se pot realiza altfel. Fara refresh numai pe un element al paginii nu se pot face astfel de lucruri miraculoase. Ei sustin ca e o alternativa al JSF. Nu cred ca e asa. E mai mult o ncercare de a face lucruri frumoase folosind tot tehnologiile ante-JSF cuma r fi ligrarii de taguri. Intr-un fel se ramane tot la nivel de request-response, http. Nu e vorba de un nivel mai ridicat de abstractizare cum ar fi componente si evenimente. Deci nu se poate pune intradevar problema RAD.

Mai multe altadata. Am de gand sa ma aplec asupra problemei. Pare foarte palpitant - am studiat documentatia standard. Cred ca o sa scimbe fata web-ului. Apropos. Google Mail e realizat cu aceasta tehnologie. Priviti atent. Se actualizeaza numai cate o zona si nu intreaga pagina (jos puteti comuta spre HML standard). Mare lucru...