Echo2: swing programmeren voor de browser

Dit artikel is een inleiding in Echo2, een framework dat helpt bij het schrijven van een AJAX web applicatie.

Net iets meer dan een jaar geleden introduceerde Jesse James Garret de term AJAX (Asynchronous JavaScript and XML). Inmiddels weet iedereen wel welke technieken gebruikt worden en hoe ze zouden moeten samenwerken. Nog steeds is er redelijk wat verbeelding nodig om een goede applicatie te maken met het AJAX concept. Ajax schrijf niet veel voor. Er wordt bijvoorbeeld nergens vertelt waar de staat van de gebruiker wordt bewaard en hoe gesynchroniseerd moet worden tussen de client en server. Het communicatie protocol kan XML zijn, maar ook JSON (JavaScript Object Notation) of een eigengemaakt protocol is mogelijk.


Het Echo2 platform heeft een framework geïmplementeerd dat AJAX-gebaseerd is en alle verbeelding wegneemt. Het Echo2 platform gebruikt objecten en event om de gebruikers interface te veranderen en probeert daarbij HTML, HTTP en JavaScript zoveel mogelijk te verbergen. In veel gevallen hoeft de ontwikkelaar alleen maar Java te kennen en de manier hoe Swing werkt. Het Echo2 platform heeft zijn eigen grafische componenten, objecten, listeners en event, maar ze lijken erg veel op die van Swing. Echo2 gebruikt op sommige plaatsen dezelfde namen.

Door het framework lijkt het erop alsof je een standalone desktop applicatie aan het schrijven bent, omdat session management en client-server synchronisatie al geregeld worden.
De enige twee dingen die je moet doen om een Echo2 applicatie te laten weten dat het gebruikt wordt op het web is door een ApplicationInstance class en servlet te implementeren.
De Applicatie instance bewaart de staat van één gebruiker. De servlet maakt en retourneert een ApplicationInstance voor elke gebruiker. Echo2 kan op basis van de ApplicationInstance de hele gebruikers interface opnieuw opbouwen. De vernieuw knop levert dezelfde staat van de client terug zoals die was voor het vernieuwen.

De applicatie instance bevat een hiërarchie van componenten waarvan het window object het begin is. Elk component heeft properties en stylesheets om de weergave en gedrag te bepalen, Echo2 gebruikt geen layoutmanagers om de componenten te presenteren. In plaats daarvan wordt een LayoutData object gebruikt zodat het omringende componenten hoe het component gepresenteerd moet worden. Er zijn op het moment nog niet veel componenten die anderen componenten kunnen weergeven in een layout, maar het zijn er genoeg om een simpele applicatie te maken.

Echo2 is een event-driven applicatie. De volledige control flow gebeurt door event in een Echo2 applicatie. Elk component heeft methodes om event listeners te registeren. Een Echo2 ontwikkelaar maakt een button met een ActionListener zodat de gebruikers interface en staat veranderd worden wanneer erop geklikt wordt. Dit is hetzelfde zoals je het in Swing zou doen. Zelfs de naamgeving is hetzelfde.

Echo2 verstuurt een client event naar de server doormiddel van xml. De server gooit het event zodat de applicatie code de staat van de componenten hiërarchie kan veranderen. Aan het eind van de request stuurt de server in xml terug naar de client welke componenten zijn veranderd gedurende het request. De client JavaScript code verandert de inhoud van de browser zodat het weer in sync is met de server. Een ontwikkelaar moet alleen listeners registreren als hij ze nodig heeft ander reageert de gebruikers interface een stuk minder.

Op dit moment zijn de invoercomponenten compleet genoeg om een goede data-invoer applicatie te maken. Er zijn nog geen invoercomponenten met geavanceerde opties zoals validatie en formattering, maar dat is alleen een kwestie van tijd. Het developer forum heeft al een aantal aardige aanvullingen.

Echo2 is zeer zeker het bekijken waard bij het evalueren van web applicatie frameworks voor een intranet applicatie. Het reageert erg goed en het maakt het implementeren van AJAX gebaseerde applicatie erg makkelijk. Bekijk http://www.nextapp.com/platform/Echo2/echo/en beslis voor jezelf.


2 reacties »

  1. Erg indrukwekkende demo op Echo2.
    Enig idee hoe dit framework is te vergelijken met Springweb, dat ook erg op swing/awt is gebaseerd? Zie: http://swingweb.sourceforge.net/swingweb
    Overigens lijkt de link niet vanuit de blog te werken.

    Rudie Ekkelenkamp - augustus 7, 2006 20:04

  2. Echo 2 gebruikt geen standaard Swing-componenten, maar heeft een API ontwikkeld die sterk aan AWT/Swing doet denken. Dit betekent dat je custom componenten niet zonder meer gepoort kunnen worden.

    Swingweb gebruikt wel de standaard-API en hackt diep in de AWT-core om HTML te kunnen renderen. Dat dit ook zo zijn problemen met zich meebrengt blijkt uit het feit dat je precies de goede minor versie van de JDK moet draaien om het geheel aan de praat te krijgen.

    Levi Hoogenberg - augustus 8, 2006 20:01

Reageer

RSS feed for comments on this post · TrackBack URI