A következő címkéjű bejegyzések mutatása: Echo2. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: Echo2. Összes bejegyzés megjelenítése

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.

2005-07-15

Echo #2

Az előző posthoz némi konkrétumok:

EchoPointNG (Echo2-höz mindenféle speckó komponensek) early access:
NextApp developer forums > General Topics > Announcements > EchoPoint NG - is now in CVS, Post #1

host: cvs.sourceforge.net
repository: /cvsroot/echopoint
username: anonymous
module: echopointng

Javában tart a tesztelés és a hibavadászat és még nem is biztos hogy a legújabb Echo2-vel kompatibilis ill. fordul, úgyhogy tényleg early access. A lefordíthatóságért is harcolni kell kicsit. Például nem árt ha van kéznél egy saját servlet.jar aminek az elérési útját be lehet applikálni a build.properties-be, de Te ügyes vagy. Menni fog. És egy újszülöttől nem várj kidolgozott cassiopeira-rúgásokat.

Egyébként meg -csak hogy gyakoroljam az angol/magyar fordítást- Tod Liebeck bejelentése alapján:

"Az Echo2 platform legjelentősebb előrelépése az Ajax kliens-szerver szinkronizációs motorral való együttműködésen alapul. Az Echo 1.x-ben egy komponens frissítése a szerveren az egész őt tartalmazó HTML frame frissítését vonta maga után. Az Echo 2.0 ezzel szemben egy finomabb felosztást használ a kliensoldali HTML DOM-ban. Egy kliens-szerver-update során csak az érintett elemek változnak a kliensoldalon. Az eredmény határozottan simább működésű felhasználói felület és alapos teljesítménynövekedés."

"Az Echo 1.x egy rejtett HTML frame segítségével bonyolította a kliens-szerver szinkronizációt. Ezt a módszert használta, hogy bármiféle HTML dokumentum kliensoldali újrarenderelésének igénye nélkül tudjon a szerver számára információt küldeni. Az Echo2 ezen képesség ellátására kihasználja a mára széles körben támogatott XMLHttpRequest feature-t, egyben fölöslegessé téve a rejtett HTML frame-t. Amikor a felhasználó elvégez egy műveletet ami szerver interakciót von maga után a kliens elküld egy XML dokumentumot ami leírja az állapotváltozást. A HTTP kérés teljes egészében Javascript-en keresztül továbbítódik egy XMLHttpRequest segítségével. A szerver parse-olja az XML kérést, értesítve az alkalmazást a felhasználói akcióról. A szerver ezt viszonozza egy XML válasszal, ami utasításokat tartalmaz a kliens számára a megváltozott szerveroldali állapottal való szinkronizációra. [...]"

A továbbiakban az írás megemlít egy nem létező URL-en található demóalkalmazást, ami időközben ide költözött. Éppen nézegetem ahogy futkorásznak az XML üzenetek a kliens és a szerver között, miközben lélekben Tokajban a Tisza parton a Kisgólyában tölgyfaasztalnál ülve fröccsözgetek a haverokkal a Hegyalja fesztiválon. :,(

2005-07-13

Echo

Az Echo egy Web GUI framework, amiben kiválóan lehet webes felületeket összerakni objektum orientált módon, a swing-hez hasonlóan (nem kell javascript-tel és html-lel molyolni). Explorer-rel, Firefox-szal működik, Operával szerintem nem.

Ehhez kapcsolódik az EchoStudio ami egy vizuális szerkesztő plugin Eclipse-hez Echo-s lapok összerakásához. Nagyjából használható, de magában hordozza a vizuális szerkesztők hátrányait, nevezetesen hogy buta kódot generál és gyengék az OO képességei. 1 hónapig lehet kipróbálni a szoftvert. Az Echopoint egy sourceforgés projekt ami további komponensekkel bővíti ki az Echo-t. Az oszloponként rendezhető, lapozható táblázatok a kedvenceim -ilyen még swingben sincs.
Eddig is jó tapasztalataink voltak az Echo-val és most Release Candidate-nél tart az Echo 2, amit mindjárt ki is próbálok. Már a CVS-ben van a 2-eshez való "EchopointNG" is.

-------

Éppen az Echo1-ről Echo2-re való átállást ízlelgetem: Egyes esetekben elég egy import csere, de elég sok minden változott. Nem is érdemes részletezni (talán majd egyszer). Az 1-es alkalmazás migrálásánál már éppen könyékig voltam az alkalmazás agyában, mígnem arra jutottam hogy inkább nulláról kezdem el újraírni. Ebben segíteni fog a letöltött csomagban lévő példaalkalmazás.

Update 2007.11.03: Időközben összekalapácsoltam egy részletekbe menőbb leírást is Echo 2 témában.