Hier der aktuelle Status meiner Meilensteine für Java auf Openmoko:
Java on Openmoko
26. Dezember 2008Nachdem ich jetzt endgültig keine Lust mehr habe, weiter nach einem Service-Component Tracker zu forschen, hat das Neo Freerunner nun wieder meine Kreativität beflügelt
Ich überlege gerade, welche Art von Funktion ich wohl auf dem Handy implementieren könnte.
Service-Component Tracker: Was gibts Neues?
28. Oktober 2008Nachdem jetzt längere Zeit nix mehr lief, hab ich heute Abend wieder etwas Zeit, mich um das Projekt zu kümmern:
Im letzten Lebenszeichen hatte ich noch die Absicht geäußert, den Code der DS-Implementierung genauer zu untersuchen. Das ist mir aber für den Anfang noch zu mühsam. Stattdessen habe ich zufällig gemerkt, dass das Bundle org.eclipse.equinox.ds den einen Service unter dem Interface org.osgi.service.cm.ConfigurationListener registriert. Ich werde mir daher zuerst das CM etwas genauer ansehen um evtl. noch Informationen zu den Service Komponenten darüber abzufragen.
CM steht für Configuration Managment Admin, dies ist ein besonderer Framework Service, der es erlaubt, Services mit ihren Parametern zu konfigurieren. Das Interface ConfigurationListener kann als Service im System angemeldet werden. Der Services wird dann automatisch bei allen Events des Admins benachrichtigt. Leider lassen sich darüber keine Informationen abfragen
Mal sehen, ob DS noch weitere Schnittstellen nach außen hat.
Service-Component Tracker: Erste Hürden und Erkenntnisse
4. Oktober 2008Nach dem Aufsetzen der Entwicklungsumgebung habe ich als Zweites den Source-Code von Equinox via CVS ausgecheckt, um bei meinen ersten Schritten etwas zu spicken.
Der erste Versuch war, ein eigenes Bundle zu schreiben, welches alle Funktionalitäten ohne Kenntnis der Interna des DS-Bundles implementiert. Das “services” Kommando der Equinox hab ich deshalb auch als erstes angeschaut, da hier schon Name und ID der Service-Component angezeigt werden. Allerdings geschieht dies nicht, weil es Zugriff auf die Component hat, sondern weil Name und ID als Service-Properties dem Service hinzugefügt werden. Das Kommando zeigt einfach nur diese Properties an.
Aufbauend darauf habe ich schon einmal ein Bundle geschrieben, dass anhand dieser Properties die vorhandenen Service-Components mit Name und ID auflistet.
Auf der Suche im Internet bin ich dann noch auf die DS-Implementierung von Apache Felix gestoßen. Diese scheint schon etwas weiter entwickelt zu sein, hier gibt es das Kommando “scr”, welches Service-Components auflisten, anzeigen, starten und beenden kann. Dieser Link führt zu einer Beschreibung.
Für eine weitere Betrachtung der DS unter Equinox werde ich nicht umhin kommen, auch tiefer in den Sourcecode zu schauen. Auch wird es wohl darauf hinaus laufen, dass ich das Bundle org.eclipse.equinox.ds noch anpassen muss.
Projekt: Service-Component Tracker
1. Oktober 2008Wie schon angedroht, werde ich jetzt mit einem kleinen Projekt zu Hause beginnen. Erstes Ziel soll die Erstellung eines Service-Component Trackers sein, einer Anwendung, welche die Service-Components einer OSGi-Umgebung suchen, anzeigen sowie verändern kann. Folgende Funktionen sollen bereitgestellt werden:
Projekt-Ideen
30. September 2008Da mir zwischen Arbeit, Fußball, Feuerwehr, Blogschreiben
etc. immer noch genug Zeit bleibt, bin ich jetzt am Überlegen, ein kleines Open-Source-Projekt zu starten. Folgende Themen sollten darin vorkommen bzw. Technologien sollten genutzt werden:
- Java
- OSGi und Equinox
- Eclipse und RCP
- evtl. OpenGL (und wenns noch geht, Shader)
- evtl. EMF
Howto OSGI Declarative Services
27. August 2008Nachdem ich auf der Arbeit ständig damit hantiere, gibts jetzt ne kleine Anleitung bzw. Checkliste für Declarative Services (DS) unter OSGI. Was sind DS? Ganz einfach: Normalerweise müsste man per Hand codieren, welche Services ein OSGI-Bundle anbietet und welche es verwendet. Dadurch entstehen einige Probleme, vor allem muss man sich selbst darum kümmern, was passieren soll, wenn ein Service mal nicht zur Verfügung steht oder sich im Betrieb verabschiedet. Außerdem ist es für einen Außenstehenden oft schwer einzusehen, welche Services das Bundle verwendet bzw. anbietet. Die Ressourcenbelegung ist auch ein Punkt, da die Services sich sofort bei Bundle-Start registrieren und nicht erst, wenn sie benötigt werden. Hier kommen die Declarativen Services ins Spiel. Mit ihnen kann man Services per XML-Datei konfigurieren.
Verfasst von hexor2k