Monday, May 26, 2008

Declarative Services

Az előző bejegyzésben írtam, hogy vannak olyan szituációk, ahol jól ki lehet használni a DS "szolgáltatásait".
Ami a különlegességet adja egy ilyen szerviznek az az, hogy a konfigurációs fájlban (OSGI-INF/componentname.xml) meg lehet adni függőségeket (reference) a szervizünknek. Ezzel kiváltatjuk (ami természetesen, így erős túlzás, de attól még igaz) a ServiceListener + Tracker + Customizer játékot.
Gyors példa egy épp aktuális projektből:

Lényeges részek (jelen esetben):
  • interface: amitől "függ" a szolgáltatásunk
  • cardinality: min.-max. előfordulás (0..n, 1..1, 0..1, 1..n)
  • bind/unbind: azon metódusok, amik a számunkra "szükséges" szolgáltatásokat kezelik.
  • activate/deactivate: ezen két metódusnak egy ComponentContext szerepel0, ha implementálva vannak a szervizünkben.
Egy ilyen szerviznél, a keretrendszer kezeli azon részeket, amit eddig a ServiceListener, -Tracker, -TrackerCustomizer hármassal tudtunk megoldani.

Friday, May 23, 2008

OSGi: Services - ServiceTrackerCustomizer, ServiceListener

Hogyan gyűjtenénk be az már működő és a később regisztrált CommandProvider szervizeket? Alapvetően általában három ponton kell dolgoznunk.

Miért van ennyi mindenre szükség? Mivel adott sorrendben indulnak a modulok, ezért fent áll az a lehetőség, hogy ha a saját modulunk előtt vagy után jön létre egy szolgáltatás. Épp ezért, ha egy szerviz bejegyzése :

  • előbb történik, a ServiceListener és ServiceTrackerCustomizer nem fog értesítést kapni az eseményről.

  • utóbb történik, a ServiceTracker nem fog találatot adni.

Ha jól csináljuk, akkor ahogy az alábbi három ábra (forrás: Eclipse Live - Getting Started with OSGi) is mutatja, nem lesz ilyen jellegű problémánk.





Ha szeretnénk ezen kicsit könnyíteni, vagy valamelyest automatizálni, akkor kell csinálnunk egy saját szolgáltatást. Ezt viszont a DS modullal érdemes megoldani, mivel sok olyan lehetőséget nyújt, ami megkönnyíti a dolgunkat. A következő bejegyzés erről fog szólni. (Eredetileg ide akartam irni, de könyebben emészthető, ha külön van.)

Wednesday, May 21, 2008

Eclipse DemoCamp 2008 Budapest

Ismét DemoCamp.
Most az Eclipse 3.4 (tervezett) megjelenési idejéhez igazítva. Várhatóan érdekes előadásokkal, jó hangulattal s más finomságokkal ;).
Ami fontos, az eddigi helyszín (Miniatűr) nincs nyitva a rendezvény időpontjában. Ezért a szervezők új lehetőségeket keresnek.
Jelentkezni és a helyszínnel kapcsolatos ötleteket itt lehet megtenni.

Tuesday, May 13, 2008

Android, elérhető készülékben

Ami a legfontosabb, hogy módosítás nélkül fut a rendszer.
Forrás erre.

Monday, May 12, 2008

PDE Inclubator

Chris Aniszczyk blogjában futottam bele a Picasso nevű projektbe, ami egy "vizuális" debugger. A magamfajta embereknek egy igen hálás dolog. (de jó is amikor az ember állítgatja a háttérszíneket, kereteket, hogy lássa merre az annyi)


CVS-ben a picasso mellett találtam még egy igen hasznos (mint azóta kiderült GSOC szponzorált) projektet, ami az OSGi Declarative Services konfigurációs fájljait segíti szerkeszteni.

Thursday, May 8, 2008

No Comment

http://ralph-at-eclipse.blog.de/2008/05/08/bug-report-4148586
Tipikus esete annak, hogy nem néz utána a problémának az illető.

Wednesday, May 7, 2008

javaONE 2008 videók

Jópár előadás elérhető már az ustream.tv csatornáin. javaONE illetve a hivatalos Sun Microsystems.

Monday, May 5, 2008

Eclipse 3.4 M7

Eljött a napja ennek a verziónak is. Letölteni ITT lehet. Az az érzésem, ebből is lesz 'a' (vagy esetleg az RC0, ami eredetileg egyenlő az M7-tel) build, mivel az utolsó Integration verzióban vannak még hibák, márpedig az egyenlő az M7-tel elméletben.
Lássunk pár fontosabb újdonságot:
  • PDE - Target Platform Self hosting, ha jól sejtem azt takarja, hogy másik workspaceben található plugineket is lehet "használni"
  • Plugin Registry - OSGi szervizek is listázva
  • ECJ - sebesség növekedés több processzoros rendszereken
  • Stb....
Arra kíváncsi vagyok, hogy az M6-ban lévő "p2" (ez az új installáló/frissítő rendszer alapja) bugot javították, amitől néha az eclipse betöltési ideje "kicsit" megugrott a processzor használattal együtt (100%-on hajtotta 3-5 percig).

Update: a bugot javították, már több plugin telepítésen és újraindításon vagyok túl és eddig semmi probléma :). Ráadásul az új installer is elég jól használható az m6-hoz képest, bár még koránt sem tökéletes.

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.

Thursday, March 27, 2008

*AMP és társai

Ki ne futott volna bele abba a problémába, hogy hirtelen össze kell rakni egy kis teszt környezetet. Vagy épp nem volt kedve "szenvedni" svn szerver, trac stb. telepítésével és konfigurálásával.
Nekik készülnek a BitNami Stack-ek.
Mondhatni mesés a választék. Egy gyors lista azokból a csomagokból, amiből választhatunk és telepíthetünk:
WordPress, Joomla, Roller, Liferay, DokuWiki, MediaWiki, Drupal, phpBB, Mantis, Opina, KnowledgeTree, Redmine, Trac, Alfresco, Moodle, Subversion, Tracks, AMP (linux,mac,solaris,win), (J)Ruby, Djnago.
Kötelező jelleggel kap is direkt linket jobb szélen :)

Friday, March 21, 2008

EclipseCon 2008

Most ért véget a az idei EclipseCon. Rengeteg jó előadást hallhatott az akinek sikerült elmennie. Részemről kimaradt (a piszkos anyagiak ugyebár), de remélem jövőre sikerül nekem is kijutni. Ian statisztikája szerint két magyar ember is volt, ha jól sejtem ők az OHF projekt tagjai voltak a B2I-től.
Szemezgetek pár olyan előadásból ahol felkerült a prezentáció és szerintem igen hasznos vagy informatív (és még elég sok prezentációt én sem néztem meg):
  • Using Commands and Menu Contributions - ez egy elég nagy hiánypótló, eddig talán egy használható írást láttam (már) a 3.3-ban megjelent új menü, gomb kezelésről.
  • RCP Authorisation Managment - 3.4-ben debütáló projekt, aminek valószínűleg igen sok fejlesztő fog örülni.
  • MP3 Manager és az RSSOwl 2.0, az MP3 Managernel sokkal inkább használható az előadás anyaga. De az tény, hogy érdemes mindkét projekt forráskódját átnézni.
  • OSGi Complete ez is egy hiánypótló a négy friss Equinox / OSGi "modulról".
  • API Design Workshop - a cím magáért beszél.
Jó pár előadás anyaga nem került fel, pedig 100%, hogy érdekesek voltak (tudom, ezért kell elmenni).