2007-09-17

Echo2 ismét

A JUM III.-on követtem el egy előadást az Echo2-ről. A szó elszáll, az írás marad:

Az Echo2 egy java webalkalmazások fejlesztéséhez használható prezentációs rétegbeli keretrendszer, amiről régebben már írtam egy-két keresetlen szót. Érdekessége, hogy Javascript és HTML ismerete nélkül lehet felépíteni igényes Web-es GUI-kat. A komponenseket Java-ban kell összerakni a Swing-hez nagyon hasonlóan. A Nextapp nevű amerikai cég fejlesztette ki LGPL / Mozilla Public License alatt. Az Echo2 továbbviszi az Echo (1) koncepcióit, de a 2-es verzióban bevezetett Ajax-ozás miatt a felhasználói élményben és a sebességben lényeges javulás tapasztalható. Szervlet alapú, bármilyen szervlet motorral használható a megfelelő verziószámot szem előtt tartva.

A kiindulóoldalról lényegében minden elérhető.
Demók: egy email-kliens és egy tarka-barka, minden komponenst bemutató demó tekinthető meg online.
Doksik: Van egy jól felépített -a lényeget leíró- lineáris Tutorial, a technikai részleteket bemutató doksi, Java API doc és egy Wiki, amibe első látásra máris sokmindent belebillentyűztek.
Közösség: Van egy pezsgő fórum pár száz topikkal. Régebben volt egy blog, amibe bekerült egy-két bejegyzés pár hónap alatt egy tűzközeli ember kezéből, de úgy látszik hamvába halt, mert nincs már kinn a link.

Mellesleg találtam a prog.hu-n egy topikkezdeményt a témában: http://www.prog.hu/tudastar/66971/Ajax-Echo2.html
Nem értem miért nem találtak doksit. Vagy lehet hogy magyar nyelvű doksira gondoltak?

Kiegészítések:

Echo2 alkalmazások fejlesztéséhez elég egy Java IDE, de a Nextapp biztosít egy Eclipse-hez kapcsolható grafikus szerkesztőt, ami viszont már pénzes: Egy egyfejlesztős disztribúció 100 ropiba kerül, több fejlesztőre ez az érték közel lineárisan növekszik. Ezért a pénzért support is jár, a szoftver pedig letölthető kipróbálásra 30 napra.

Az Echo1-hez egy független (vagy nem független) fejlesztőcsoport még készített különféle izgalmas kiterjesztéseket Echopoint néven. Echo2-höz is folytatódott ez a jó szokás EchopointNG néven, de nem látom hogy igazán messzire jutottak volna. Régebben már megemlítettem ezt.

Disztribúció letöltés, tartalma

A 2.0-ás stabil verzió már jó régi, még 2005 decemberéből való.
A 2.1.0-ás Release Candidate 2007 márciusi és egyébként ezt ajánlják letöltésre.
A disztribúció 5.2 megás zip, amiben vannak példaalkalmazások forrással együtt (sima war-ok, amik egy webszerverbe bepottyantva elvileg azonnal működőképesek - gyakorlatilag nem minden esetben), a keretrendszer bináris fájljai és forrásai, valamint API dokumentáció. A csili-vili online demó sajnos nincs benne a letölthető disztróban.

Aki a kíváncsiságból vezérelve belenéz valamelyik példaalkalmazás war-jába, tulajdonképpen semmi meghökkentőt nem fog látni:
index.html ami egy más sok helyről ismerős redirect oldal.
A META-INF csak egy szokásos manifest-et tartalmaz.
A WEB-INF tartalma:
web.xml: Egyszerűbb webalkalmazásnál egy egyszerű servlet definíciót tartalmaz.

Bonyolultabb alkalmazásoknál a szervletnek paraméterei is lehetnek, több szervlet illetve biztonsági beállítások is fellelhetőek.
lib könyvtár: 3 darab Echo2 jar-t tartalmaz. Nem túl nagyok, a legnagyobb 198kbyte.
classes: Az alkalmazás osztályait tartalmazza, amik tulajdonképpen maguk az oldalak. Az alkalmazásban normál esetben nincsenek JSP, JSF, HTML, XHTML fájlok. (Természetesen megvan a lehetőség HTML content beágyazására.)
Lehet még egyéb könyvtár ami a publikusan elérhető erőforrásokat tartalmazza, pl. images.

A példaalkalmazások projekt szerkezete

A példaalkalmazások forráskódja a SourceCode könyvtárban található. Az alkalmazások Ant-tal buildelhetőek. Minket leginkább a java könyvtárban lévő források érdekelnek. Ami a htdocs könyvtárban van az egy az egyben átkerül a webalkalmazás gyökerébe publikusan látható erőforrásként (index.html , images). A deploy könyvtárban pedig a web.xml kapott helyet, tehát ott kell keresni ha valaki bele akar matatni.

A forráskönyvtár nem követi semmilyen IDE projektszerkezetét és nem tartalmazza a fordításhoz szükséges Echo specifikus jar-okat, de ezeket könnyen el tudjuk érni a BinaryLibraries könyvtárból. Szükség van még egy servlet.jar -ra, ami viszont nincs a disztribúcióban.

Az Ant-tal való buildeléshez az ant.properties-nek megfelelően be kell állítgatni néhány környezeti változót. Én inkább az ant.properties-t írtam át a servlet.lib.jar és az echo2* változókat direkt hivaktozásokra. Nem tudom miféle verzióprobléma miatt, de az ant.properties-ben a dir.src.app, htdocs és deploy sorokat is át kellett írnom a ${ dir.src} hivatkozásról direkt hivatkozásra, különben elbukott a war target. A war könyvtárban keletkezik a becsomagolt alkalmazás.

Az alkalmazás szerkezete

Az ApplicationInstance egy felhasználó session-jét reprezentálja a szerveroldalon. Akkor inaktiválódik amikor a user kilép vagy timeout-ol a session. A felhasználóhoz tartozó tulajdonságokat nyugodtan lehet ebbe az osztályba pakolni.
Az ApplicationInstance init metódusa egy Window objektumot ad vissza. A Window objektumra lehet felpakolni különféle komponenseket (add metódus). Nehézzé teszi a dolgokat, hogy nem minden komponenst lehet hozzáadni bármelyik másik komponenshez és ez sokszor csak futási időben derül ki egy üres képernyő, egy javascript alert és egy loggolt exception formájában.

Az elhelyezkedési struktúrákat a LayoutData beállításával lehet kialakítani. Az Echo 1-es megoldások nekem jobban tetszettek, de ez is megszokható. Valószínűleg erre jobban lehet vizuális szerkesztőt készíteni.

Az eseménykezelés a Swing-hez nagyon hasonló: listenereket lehet hozzápakolgatni a komponensekhez. (Anonymous inner class és társai.) Az események és a válaszok így Ajax segítségével pattognak a kliens és a szerver között anélkül hogy különösebben sportolni kellene a szép működés kiharcolásáért.

A komponensekben megjelenítendő adatok szintén a Swing filozófia szerint Model-ekben kerülnek átadásra.

A komponensek látható tulajdonságait (színek, háttérképek) kódból és XML-ben leírt stylesheet-ekkel is meg lehet határozni.

A lokalizáció ugyanúgy történhet mint egy standalone java alkalmazásnál. A böngésző támogatott locale-ját ki lehet nyerni az alkalmazáson belül. Támogatott a jobbról balra való írásmód is.

Semmiképp sem használj Echo2-t ha:

  • Sok felhasználós internet alkalmazást kell csinálnod.
  • Profi vagy valami másik webes keretrendszerből.
Jó ötlet lehet az Echo2 használata, ha:
  • Nem értesz HTML-Javascript-JSP-JSF -hez és nincs is szándékodban megtanulni.
  • Gyorsan össze kell dobálni egy intranetes webes alkalmazást.
  • Nagyon dinamikus felületre van szükséged.
  • Swing-es vagy SWT-s alkalmazást kell portolnod web-re.

Nincsenek megjegyzések: