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.