2007-09-19

JUM III. Shownotes

Mivel lettem okosabb a JUM III-on?

  • A Webservice-ek írásához többféle lehetőség létezik. Az egyik ilyen az Axis 1.x, aminek a használatához kicsit sokat kell java-t és xml-t gépelni, néha sztochasztikusan működik a meglepetésekre nem vágyó fejlesztő szemszögéből, viszont gyors. Az Axis 2 sokat változott az 1.x-hez képest. Kulcsszavak még: WSDL, SOAP. Webservice-ek nemcsak java-ban írhatóak. Elvileg van szabvány, gyakorlatilag vannak súrlódások.
  • Az XFire egy webszervice-es SOAP provider. Állítólag gyors és sokkal egyszerűbb mint az Axis 1.
  • A JMaki az N-edik webes framework, aminek a lényege, hogy mindenféle másik keretrendszerből (pl. Dojo) adoptálták a komponenseket és egy saját XHTML-ben, (JSF?) kell összedobálni a GUI-t mérsékelt Javascript, HTML és JSON tudást felhasználva. Netbeans plugin van hozzá. Ahogy sejthető, érhet meglepetés fejlesztés közben. Nem túl takarékosan bánik a kliensoldali erőforrásokkal sem. Pl. egy táblázat JSON-ban kapja meg az adatokat amiből még DOM-ot kell csinálni és ez párszáz soros táblázatoknál súlyos 10 másodpercekig eltarthat.
  • A Flash immáron valós konkurenciája vagy alternatívája a Javascript+HTML-nek bizonyos esetekben. Flex Openlaszlo . Kocka fel is teszi a kérdést, hogy mi az előnye a HTML-Javascript-nek a flash-sel szemben.
  • A MINA egy apache-os, NIO-val kapcsolatos framework, ami valamiféle vékony logikát tesz még a meglévő java szolgáltatások fölé. Ha NIO-val kell dolgoznom, mindenképpen meg kell nézni a MINA-t.
  • A NIO "egy nagyságrenddel" gyorsabb az IO-nál (InputStream) ha sok kliens folyamatosan nyomja az adatokat, mert a hagyományos IO-nál sok erőforrást igényelnek a szálak közti váltások.
  • Van egy JCRPG (?) nevű blog vagy ember, akinek érdemes lenne megnézni az írásait. Java 3D-ben munkálkodik. Azt hiszem ez lesz az.
  • Mostanság úgy is szoktak webes grafikákat, pl. táblázatokat rajzolni, hogy pixeles nagyságú színes div-eket tesznek ki pontosan pixelre pozícionálva. Pl. a G. grafikonjai is így működnek. Ez aztán a hányás nem mondom.
  • JUM-ot nem érdemes péntekre szervezni, viszont érdemes jobban, többször, több helyen meghirdetni, mert könnyen elkallódik az információ és az emberek.
  • Létezik egy Budapest New Technology Meetup Group ami szintén egy jópofa dolog lehet. Érdemes lenne benézni majd egyszer-kétszer-többször. A honlapon elvileg vannak régebbi videók, itt pedig egy előadó beszámolója van. A következő alkalom Október 3. Meglátjuk.
  • A Belga sörözőben a Vígszinház mögött sokféle egzotikus sör és étel kapható. Az árak nem túl diszkontjellegűek, de a hely hangulatos.

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.

2007-09-03

Javagrund

Múltkor kaptam egy comment-et a Javagrund-dal kapcsolatban. Valóban, a Javagrund az egykor Javasite egyenes ági leszármazottja olyannyira, hogy a Javasite egy az egyben megvan az oldalon a listaarchívummal együtt.

A javagrund első látásra továbbra sem pörög túlzottan annak ellenére hogy a Sun szponzorálja vagy szponzorálta. Felkerült egy-két pdf a nyári konfról, kéthetente egy-egy hír felbukkan. A fórumon továbbra is hullaszag, az anyagokban a Javasite-ről ismerős írások lelhetők fel, amikkel az a baj, hogy kb. az 1.2-es Java idejéből valók. Az RMI-s írás például határozottan elavult. Na jó, akad azért 5-ös jáváról is írás.

A Wiki üres és a Linkek menüpont is.

Itt leírják hogy miért Liferay portált használnak és miért zárták be a regisztrációt. Azért, mert a "A magyarországi Java közösség hagyományosan a levelezési listához kötődik". Ez való igaz: 1997 vagy 96 óta létezik a Javalista, de azért egy fórum jóval több szolgáltatással bír manapság, főleg a topikozhatóság miatt. Jól lehet böngészgetni, láthatóak a pörgősebb témák, tematizáltabb, az érdekesebb témákról lehet emailes értesítést kérni.

Viszont, ahogy az archívumot nézegetem viszonylag sokan írogatnak a listára (havonta 10, 20 ember) és egész jól pörög. Végülis keresni is lehet benne. Azért el tudnék képzelni több funkciót.

Tehát a Javagrund-nak nagyjából a levlista a közepe per pillanat. Ez kívülről egyáltalán nem látszik, ráadásul abszolút nem triviális odatalálni a levlistához. (Főoldalon a segítség menüpont, aztán onnan már megtalálható. A Közösség menüpont alá is igazán betehetnék.)

Kíváncsi lennék, hogy a Javalist és a Javafórum közönsége mennyire diszjunkt. Esetleg lehet kommentezni, hogy ki melyiket követi figyelemmel.

Közben létrehozódott egy Google Group Java témában egyelőre kevés aktivitással.

Boldogabb lennék ha a magyar Java közösség inkább összetartana az elaprózódás helyett, persze megértem hogy mindenkinek a saját kezdeményezése a legkedvesebb. Nekem azok a kezdeményezések szimpatikusak, amik nem állnak le az oldal felhúzásával, hanem a tartalommal való megtöltéssel is folyamatosan foglalkoznak.