Tuesday, April 29, 2008

OSGi példák

Sokat gondolkodtam azon, hogyan lehetne igazán jól bemutatni, az OSGi igazán hasznos tulajdonságait. Végül arra a megállapításra jutottam, hogy egy olyan "komplex" applikációt írok meg, amivel elég sok tudást ki lehet használni (services, eventadmin, declarative services, logging, http stb.
Maga a szoftver egy "Download Manager" lenne, első körben http és ftp (egy harmadik protokollon még gondolkodom) megvalósítással.
Mostani terveim szerint pont rá lehet húzni, egy "eclipse rcp"-t vagy épp egy webes felületet, talán még a jmx konzolt is megnézem közelebbről.

Update:
Neil OSGi könyve és a terveim közötti hasonlóság (most vettem észre :-) ) a véletlen műve.

Saturday, April 19, 2008

Annotation debuggolás

A héten szórakoztam picit ezzel az "új" java lehetőséggel, keresve a hasznosítási lehetőségeit, a belső projektekben. Tesztelés közben jött elő a probléma, hogy hogyan debuggoljuk az "annotation processor"-t. Kis kutakodás után ez lett a megoldás:

Ugyebár annotációk esetén, három feldolgozási típusról beszélünk.
  • RUNTIME: nincs vele feldolgozási problémánk, hiszen futási időben bármikor lekérdezhetők. Itt mindenképp megírjuk a Reflection API kódot.
  • CLASS: na ez már az érdekesebbik része, hiszen a generált kódban benne van, de nem lekérdezhető
  • SOURCE: csak forrás szinten, érhető el.
A kérdés az, hogy kényelmesen, hogyan lehet fordítási időben debuggolni?
Mivel eclipsszel dolgozunk bent és a blog is erről szól, ezért ilyen irányú megoldást kerestem, valósítottam meg.

(Nem csak eclipseből használható módszer)
Fogjuk a JDT Core Batch Compiler-t és csinálunk egy "run/debug configuration"-t, amiben amiben a main class a compiler mainje (org.eclipse.jdt.internal.compiler.batch.Main), hozzáadjuk a compilert a classpathhoz. Illetve pár alapvető beállítást használunk (lásd post végén levő zip fájl). Az fordító ilyen módon való futtatása, simán lehetővé teszi a hatásos debugolást.

Ami már kicsit bonyolultabb, az pedig az eclipse projekteken bekapcsolható "annotation proccessing" mód kihasználása. Mivel ezt egyszerűbb mutatni, mint leírni, ezért majd csinálok egy kis videót.
Mindenesetre a launch konfigurációk benne lesznek a zipben.

Példakód, konfigurációk.

Friday, April 18, 2008

OSGi könyv

Neil Bartlett egy 'OSGi in Practice' című ingyenes könyvön dolgozik (CC licenccel fog megjelenni). Az első fejezet már elérhető, ami a kezdő lépéseket mutatja be.
Külön érdekesnek találom, hogy nem Equinoxszal mutatja be az első köröket, hanem Apache Felixszel. Ráadásul még a Bnd-t is felhasználja, ami egy kevésbé ismert projekt, igen jó tudással.

Tuesday, April 1, 2008

RCP és XULRunner tapasztalatok

Mint, ahogy azt tavaly írtam a kényelmi szempontból a vastagkliensből elérhetővé kellett tenni a régebben fejlesztett webes felületet. Mindezt úgy, hogy lehetőleg kommunikálni is tudjanak egymással. Eclipse részről, már akkor egy igen jó fejlesztés (kis túlzással) volt az AFT projekt XULRunner alapú "Browser" komponense.
Pár olyan pont, amit én másképp valósítottam meg, illetve tapasztaltam.
  • Nincs módosított Mozilla.org-os eclipse plugin, maga a loader keresi meg a platformhoz tartozó verziót. Ez a könnyebb frissíthetőség miatt lett így megvalósítva. Az viszont tény, hogy az eredeti megvalósítás jobb, csak ezt a Mozilla.org verziókban kéne implementálni és nem az ATF projektben.
  • Az AFT saját js <-> java adat transzformációját lecseréltem JSon alapokra.
  • Illetve a kommunikációra használt "div+textarea" csodát kirámoltam egy "script" objektumba. Mindig az járt a fejemben, hogy egyszer tuti lesz egy olyan css ami megjeleníti.
  • A saját gyártású ssl cert.-k miatt, írni kellett egy preloadert. Mivel van egy olyan hiba, ami miatt rossz méretben nyílik a figyelmeztető dialógus.
  • Ha ráérez az ember, akár teljesen át tudja szabni a megjelenített weboldalt.
  • Használj FireBug Lite konzolt
  • JavaXPCom-t debuggolni egy rémálom. Lásd a képet lejjebb.


Tuti rengeteg kisebb dolgot nem soroltam fel, de ha valami bevillan, úgyis leírom.

Eclipse 3.4 M6

Letölteni innét lehet: "3.4 M6"

Ennek a verziónak a legnagyobb újítása, az Equinox Provisioning Platform (p2).
Ez által megújult / megváltozott:
  • plugin telepítés (dropins)
  • 'eclipse installer'
  • új 'update manager' (remélhetőleg jobban működik, mint a régi)
  • végre megoldható az, hogy ha több eclipse verziót tartunk fent (pl. egyikben van rcp delta + ecf a másikban meg webtools + database) nem kell duplán installálnunk, hanem csak a konfiguráció fog változni.
Ezen felül még sok újdonság van, amiről erre "M6 - New and Noteworthy" olvashatsz.