<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Just another tech blog ... &#187; Equinox</title>
	<atom:link href="http://hexor2k.wordpress.com/tag/equinox/feed/" rel="self" type="application/rss+xml" />
	<link>http://hexor2k.wordpress.com</link>
	<description>... about (mobile) Linux and Java</description>
	<lastBuildDate>Thu, 31 Dec 2009 11:15:03 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='hexor2k.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/3350773e6f25e0db7b7f27bdf342b466?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Just another tech blog ... &#187; Equinox</title>
		<link>http://hexor2k.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://hexor2k.wordpress.com/osd.xml" title="Just another tech blog &#8230;" />
		<item>
		<title>Java on Openmoko: Remote Tools</title>
		<link>http://hexor2k.wordpress.com/2009/01/18/java-on-openmoko-remote-tools/</link>
		<comments>http://hexor2k.wordpress.com/2009/01/18/java-on-openmoko-remote-tools/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 17:21:08 +0000</pubDate>
		<dc:creator>hexor2k</dc:creator>
				<category><![CDATA[Java on Openmoko]]></category>
		<category><![CDATA[ANT]]></category>
		<category><![CDATA[Cacao]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Equinox]]></category>
		<category><![CDATA[JamVM]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Neo Freerunner]]></category>
		<category><![CDATA[Openmoko]]></category>

		<guid isPermaLink="false">http://hexor2k.wordpress.com/?p=382</guid>
		<description><![CDATA[Hallo, jetzt habe ich schon einige Zeit nichts mehr hören lassen. Während ich nun den Klängen von Apocalyptica lausche gibts jetzt wieder eine feine Prise Java gemischt mit einem Hauch von Eclipse und das alles serviert auf einem frischen Neo Freerunner    


Yoxos: Hier wollte ich noch etwas spielen, jedoch scheint der Dienst [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hexor2k.wordpress.com&blog=4544707&post=382&subd=hexor2k&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hallo, jetzt habe ich schon einige Zeit nichts mehr hören lassen. Während ich nun den Klängen von Apocalyptica lausche gibts jetzt wieder eine feine Prise Java gemischt mit einem Hauch von Eclipse und das alles serviert auf einem frischen Neo Freerunner <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-382"></span></p>
<ol>
<li><strong>Yoxos:</strong> Hier wollte ich noch etwas spielen, jedoch scheint der Dienst schon wieder Probleme mit der Verfügbarkeit zu haben <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </li>
<li><strong>Java 1.5:</strong> Hier habe ich die JamVM ausprobiert, eine alternative VM zu Cacao. Allerdings hat JamVM die gleiche Schwäche wie Cacao, nämlich keinen Debug-Modus. Sollte mal ein Problem nur auf dem Zielgerät auftreten, guckt man als Entwickler in die Röhre, weil man nicht debuggen kann. Hier werde ich versuchen, mal die IBM J9 für ARM-Linux auszuprobieren. Mal schauen, wie diese VM sich unter Linux schlägt. Unter Windows Mobile hatte ich schon das Vergnügen. Hier sind es allerdings die vielen WinCE-Bugs, die einem den Spaß vermiesen können, aber das ist eine andere Geschichte <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
Es ist außerdem ein bisschen Aufwand, die JamVM in Eclipse zu integrieren. Bei mir ging das zuerst dank der Erfahrungen mit Cacao ganz einfach, jedoch startet die JamVM bei mir grad aus unerfindlichen Gründen nicht mehr.</li>
<li><strong>Equinox:</strong> Hier habe ich gemerkt, dass Equinox mit der JamVM ein bisschen schneller startet. Grob eine Sekunde eher als mit Cacao.</li>
<li><strong>SWT:</strong> Hier gibts nix neues. Eclipse erlaubt mir nach wie vor nicht, eine zweite Java-GUI-Anwendung laufen zu lassen, die auf SWT zugreift. Der Fehler ist aber bekannt und ich muss das wohl hinnehmen <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </li>
<li><strong>eRCP:</strong> Unverändert</li>
<li><strong>ANT-Skripte, Deployment:</strong> Hier habe ich schon etwas herumexperimentiert. Zum Einen bietet das Freerunner die Möglichkeit, lokale Verzeichnisse mittels SFTP zu mounten. Die funktioniert ohne Probleme. Eine gute Lösung wäre, ein ANT-Skript zu erstellen, dass zuerst lokal ein Deployment-Verzeichnis erstellt und dieses dann mit dem Freerunner synchronisiert. Hier habei ich rsync als Sync-Tool ausgewählt. Probleme gibt es noch damit, dass auf dem Freerunner alle Dateien mit Root-Rechten versehen werden und der Client da manchmal nicht mitspielt.<br />
Zudem habe ich mir das Eclipse-Plugin <strong>Remote System Explorer (RSE)</strong> angeschaut, eine Sammlung von Tools zur Kommunikation mit anderen Rechnern. Zu diesen Tools gehören unter anderem ein SSH-Client für die Eclipse-Konsole, sowie die Möglichkeit, Filter für entfernte Verzeichnisse anzulegen. Eine Mount-Option habe ich noch nicht gefunden, es gibt allerdings die Funktion, ein entferntes Verzeichnis als Eclipse-Projekt einzubinden, was so ähnlich funktioniert.</li>
<li><strong>Accelerometer:</strong> Hier versuche ich gerade die Datenstruktur zu verstehen. Das Auslesen der event-Dateien funktioniert ohne Probleme. Als nächstes werde ich das Tool netcat ausprobieren, mit dem ich die event-Dateien auf meinen Entwicklungsrechner holen könnte.</li>
<li><strong>Anwendungs-Architektur:</strong> Ich habe mir schon einige Punkte überlegt, so soll es auf jeden Fall ein Plugin für die Accelerometer-Interpretation geben, sowie eines für die GUI. Logging der Daten wird noch optional mit eingebaut.</li>
<li><strong>Anwendung:</strong> Ein bisschen Code existiert schon, ich bastle aber noch sehr viel dran rum.</li>
</ol>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hexor2k.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hexor2k.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hexor2k.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hexor2k.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hexor2k.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hexor2k.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hexor2k.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hexor2k.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hexor2k.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hexor2k.wordpress.com/382/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hexor2k.wordpress.com&blog=4544707&post=382&subd=hexor2k&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hexor2k.wordpress.com/2009/01/18/java-on-openmoko-remote-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da83901c46990b57efdd2759b9ec859f?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=X" medium="image">
			<media:title type="html">hexor2k</media:title>
		</media:content>
	</item>
		<item>
		<title>Java on Openmoko: Erste Erkenntnisse</title>
		<link>http://hexor2k.wordpress.com/2008/12/27/erster-status/</link>
		<comments>http://hexor2k.wordpress.com/2008/12/27/erster-status/#comments</comments>
		<pubDate>Sat, 27 Dec 2008 21:40:39 +0000</pubDate>
		<dc:creator>hexor2k</dc:creator>
				<category><![CDATA[Java on Openmoko]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Equinox]]></category>
		<category><![CDATA[eRCP]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Openmoko]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[RCP]]></category>

		<guid isPermaLink="false">http://hexor2k.wordpress.com/?p=364</guid>
		<description><![CDATA[Hier der aktuelle Status meiner Meilensteine für Java auf Openmoko:


Yoxos: Die Yoxos on Demand Homepage ist gerade down, alle Admins sind wahrscheinlich im Urlaub   Ich habe mir glücklicherweise schon vor einigen Tagen eine eigene Eclipse per Yoxos erstellt und die nutze ich jetzt. Hier ist natürlich noch etwas Finetuning der Plugins notwendig.
Java 1.5: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hexor2k.wordpress.com&blog=4544707&post=364&subd=hexor2k&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hier der aktuelle Status meiner Meilensteine für Java auf Openmoko:</p>
<p><span id="more-364"></span></p>
<ol>
<li><strong>Yoxos:</strong> Die <a href="http://www.yoxos.com/ondemand"><strong>Yoxos on Demand</strong> Homepage</a> ist gerade down, alle Admins sind wahrscheinlich im Urlaub <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Ich habe mir glücklicherweise schon vor einigen Tagen eine eigene Eclipse per Yoxos erstellt und die nutze ich jetzt. Hier ist natürlich noch etwas Finetuning der Plugins notwendig.</li>
<li><strong>Java 1.5:</strong> Das <strong>Hello-World-Programm</strong> läuft mit der <strong>Cacao VM</strong> und <strong>Java 1.5 Bytecode</strong>. Für Cacao habe ich ein Package in Debian Sid gefunden und installiert. In Eclipse kann man Cacao als Execution Environment einbinden, indem man eine neue Standard VM mit dem JRE-Home-Verzeichnis <strong>/usr/lib/jvm/cacao/jre/</strong> erstellt. Das JRE des Java-Projekts muss auf Cacao geändert werden, ebenso die zugehörige Runconfiguration. Zusätzlich muss man bei der Runconfiguration noch die Umgebungsvariable <strong>java.library.path</strong> auf <strong>/usr/lib/jvm/cacao/jre/lib</strong> und die den darunterstehenden Radiobutton auf <strong>&#8222;Replace native environment with specified environment&#8220;</strong> setzen, da ansonsten Eclipse den SUN-JRE-Classpath verwenden will, was zu der Fehlermeldung <em>&#8222;main: lt_dlsym failed: /usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/i386/client/libjvm.so: undefined symbol: vm_createjvm&#8220;</em> führt. Außerdem sollte man sich die JRE-Binaries genau ansehen, <strong>javah</strong> von Cacao wird in Debian auf das javah vom SUN-JRE gelinkt. Man sollte hier also nur <strong>java</strong> verwenden.</li>
<li><strong>Equinox: </strong>Der Start von <strong>Equinox</strong> funktioniert ebenfalls, allerdings dauert es ziemlich lange, bis sich etwas tut. Ich habe darauf hin die OSGI-Implementierung von <strong>eRCP</strong> ausprobiert und voilá, in 10 Sekunden startet das Framework und der Logger. Ich werde deshalb für das weitere Vorgehen die eRCP-Bundles verwenden.</li>
<li><strong><em>SWT: </em></strong>TODO. Die SWT-Anwendung von der <a href="https://wiki.evolvis.org/jalimo/index.php/OpenMoko">Jalimo-Homepage</a> funktioniert leider nicht. Ich glaube, ich steh hier grad aber auf dem Schlauch. Der Aufruf, wie er auf der Homepage beschrieben wird, sollte nach meinem Verständnis nicht funktionieren.</li>
<li><strong>eRCP<em>T</em>:<em> </em></strong>TODO. Native Java Bundles sollten funktioneren. Bundles mit eingebetteten DLLs oder SWT werden aber wahrscheinlich zu Fehlern führen.</li>
<li><strong>ANT-Skripte, Deployment:</strong> TODO. Schon jetzt nervt das ewige Herumkopieren mit SCP. Wenn die Tests abgeschlossen sind, werde ich zuerst hier weiterarbeiten.</li>
<li><strong>Accelerometer: </strong>TODO<strong><em><br />
</em></strong></li>
<li><strong>Anwendungs-Architektur: </strong>TODO</li>
<li><strong>Anwendung: </strong>TODO</li>
</ol>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hexor2k.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hexor2k.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hexor2k.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hexor2k.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hexor2k.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hexor2k.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hexor2k.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hexor2k.wordpress.com/364/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hexor2k.wordpress.com/364/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hexor2k.wordpress.com/364/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hexor2k.wordpress.com&blog=4544707&post=364&subd=hexor2k&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hexor2k.wordpress.com/2008/12/27/erster-status/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da83901c46990b57efdd2759b9ec859f?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=X" medium="image">
			<media:title type="html">hexor2k</media:title>
		</media:content>
	</item>
		<item>
		<title>Java on Openmoko</title>
		<link>http://hexor2k.wordpress.com/2008/12/26/java-on-openmoko/</link>
		<comments>http://hexor2k.wordpress.com/2008/12/26/java-on-openmoko/#comments</comments>
		<pubDate>Fri, 26 Dec 2008 18:39:49 +0000</pubDate>
		<dc:creator>hexor2k</dc:creator>
				<category><![CDATA[Java on Openmoko]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Equinox]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Openmoko]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[RCP]]></category>
		<category><![CDATA[SWT]]></category>
		<category><![CDATA[Yoxos]]></category>

		<guid isPermaLink="false">http://hexor2k.wordpress.com/?p=354</guid>
		<description><![CDATA[Nachdem 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.
Von der technischen Seite möchte ich nach folgenden Punkten forschen.

Java als Programmiersprache, hier gilt es die [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hexor2k.wordpress.com&blog=4544707&post=354&subd=hexor2k&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Nachdem 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 <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Ich überlege gerade, welche Art von Funktion ich wohl auf dem Handy implementieren könnte.</p>
<p style="text-align:justify;"><span id="more-354"></span>Von der technischen Seite möchte ich nach folgenden Punkten forschen.</p>
<ul style="text-align:justify;">
<li><strong>Java</strong> als Programmiersprache, hier gilt es die Möglichkeiten der Cacao VM zu erforschen.</li>
<li><strong>OSGI</strong> als Komponentensystem. Eclipse Equinox ist ja 100% native Java, also sollte es auch laufen.</li>
<li><strong>SWT</strong> als GUI-Schnittstelle, hier gibt es bereits eine Implementierung namens Jalimo, die auf Cacao aufsetzt.</li>
<li><strong>eRCP</strong> als Plattform, wobei dies wahrscheinlich nicht möglich ist, da es eRCP anscheinend nur für Windoof Mobile gibt. Vielleicht funktioniert hier auch die normale <strong>RCP</strong>.</li>
<li><strong>DBus</strong> in Kombination mit Java auf dem Freerunner. Da es schon viele Applikationen mit  DBus-Interface auf dem Freerunner gibt, wäre interessant zu wissen, wie man mit Java darauf zugreifen kann.</li>
<li><strong>Eclipse</strong> als Entwicklungsumgebung. Die Zusammenstellung der benötigten Plugins erfolgt mittels <a href="http://www.yoxos.com/ondemand/"><strong>Yoxos On Demand</strong></a>.</li>
<li><strong>ANT</strong> zum Bauen und Deployen auf dem Gerät, evtl. noch Start und Remote Debugging.</li>
</ul>
<p style="text-align:justify;">Als Programmidee schwebt mir vor, die Accelerometer des Freerunners auszulesen und die aktuelle Beschleunigung anhand von Balken anzuzeigen. Hier könnten dann gleich Echtzeitaspekte mit getestet werden.</p>
<p style="text-align:justify;">Folgende Punkte möchte ich grob als Meilensteine festlegen:</p>
<ol>
<li><strong>Yoxos:</strong> Eine eigene Eclipse-Entwicklungsumgebung mittels Yoxos mit allen von mir benötigten Plugins zusammenstellen.</li>
<li><strong>Java 1.5:</strong> Eine einfache Hello-World-Java-Applikation auf dem Freerunner laufen lassen.</li>
<li><strong>Equinox:</strong> Eine einfache OSGi-Applikation erstellen und auf dem Freerunner laufen lassen.</li>
<li><strong>SWT:</strong> Eine einfache SWT-GUI erstellen und auf dem Freerunner laufen lassen.</li>
<li><strong>eRCP:</strong> Evtl. eine eRCP oder RCP basierte Anwendung erstellen und laufen lassen.</li>
<li><strong>ANT-Skripte, Deployment:</strong> ANT-Skripte für Build und Deployment.</li>
<li><strong>Accelerometer:</strong> Die Accelerometer unter Java auslesen, entweder File-basiert oder mittels Dbus.</li>
<li><strong>Anwendungs-Architektur:</strong> Eine Architektur für die Anwendung festlegen.</li>
<li><strong>Anwendung:</strong> Die Anwendung erstellen.</li>
</ol>
<p>Zeitlich möchte ich mir keine Rahmenbedingungen setzen, da ich diese schon beim Service-Component-Tracker nicht einhalten konnte. <strong>It&#8217;s done when it is done</strong> <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hexor2k.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hexor2k.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hexor2k.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hexor2k.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hexor2k.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hexor2k.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hexor2k.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hexor2k.wordpress.com/354/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hexor2k.wordpress.com/354/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hexor2k.wordpress.com/354/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hexor2k.wordpress.com&blog=4544707&post=354&subd=hexor2k&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hexor2k.wordpress.com/2008/12/26/java-on-openmoko/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da83901c46990b57efdd2759b9ec859f?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=X" medium="image">
			<media:title type="html">hexor2k</media:title>
		</media:content>
	</item>
		<item>
		<title>Service-Component Tracker: Erste Hürden und Erkenntnisse</title>
		<link>http://hexor2k.wordpress.com/2008/10/04/service-component-tracker-erste-hurden-und-erkenntnisse/</link>
		<comments>http://hexor2k.wordpress.com/2008/10/04/service-component-tracker-erste-hurden-und-erkenntnisse/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 20:17:41 +0000</pubDate>
		<dc:creator>hexor2k</dc:creator>
				<category><![CDATA[Service-Component Tracker]]></category>
		<category><![CDATA[Declarative Services]]></category>
		<category><![CDATA[Equinox]]></category>
		<category><![CDATA[Felix]]></category>
		<category><![CDATA[OSGi]]></category>

		<guid isPermaLink="false">http://hexor2k.wordpress.com/?p=250</guid>
		<description><![CDATA[Nach 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 &#8222;services&#8220; Kommando der Equinox hab ich deshalb auch als erstes angeschaut, da [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hexor2k.wordpress.com&blog=4544707&post=250&subd=hexor2k&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Nach dem Aufsetzen der Entwicklungsumgebung habe ich als Zweites den Source-Code von Equinox via CVS ausgecheckt, um bei meinen ersten Schritten etwas zu spicken.</p>
<p style="text-align:justify;">Der erste Versuch war, ein eigenes Bundle zu schreiben, welches alle Funktionalitäten ohne Kenntnis der Interna des DS-Bundles implementiert. Das &#8222;services&#8220; 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.</p>
<p style="text-align:justify;">Aufbauend darauf habe ich schon einmal ein Bundle geschrieben, dass anhand dieser Properties die vorhandenen Service-Components mit Name und ID auflistet.</p>
<p style="text-align:justify;">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 &#8222;scr&#8220;, welches Service-Components auflisten, anzeigen, starten und beenden kann. Dieser <a href="http://felix.apache.org/site/apache-felix-service-component-runtime.html">Link</a> führt zu einer Beschreibung.</p>
<p style="text-align:justify;">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 <code>org.eclipse.equinox.ds</code> noch anpassen muss.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hexor2k.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hexor2k.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hexor2k.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hexor2k.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hexor2k.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hexor2k.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hexor2k.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hexor2k.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hexor2k.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hexor2k.wordpress.com/250/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hexor2k.wordpress.com&blog=4544707&post=250&subd=hexor2k&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hexor2k.wordpress.com/2008/10/04/service-component-tracker-erste-hurden-und-erkenntnisse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da83901c46990b57efdd2759b9ec859f?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=X" medium="image">
			<media:title type="html">hexor2k</media:title>
		</media:content>
	</item>
		<item>
		<title>Projekt: Service-Component Tracker</title>
		<link>http://hexor2k.wordpress.com/2008/10/01/projekt-service-component-tracker/</link>
		<comments>http://hexor2k.wordpress.com/2008/10/01/projekt-service-component-tracker/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 18:50:24 +0000</pubDate>
		<dc:creator>hexor2k</dc:creator>
				<category><![CDATA[Service-Component Tracker]]></category>
		<category><![CDATA[Declarative Services]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Equinox]]></category>
		<category><![CDATA[OSGi]]></category>

		<guid isPermaLink="false">http://hexor2k.wordpress.com/?p=244</guid>
		<description><![CDATA[Wie 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:


Service-Components anzeigen: dies soll ähnlich zu dem services-Kommando geschehen. Auch soll es möglich sein, Service-Components mittels Wildcards [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hexor2k.wordpress.com&blog=4544707&post=244&subd=hexor2k&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Wie 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:</p>
<p style="text-align:justify;"><span id="more-244"></span></p>
<ul style="text-align:justify;">
<li><strong>Service-Components anzeigen:</strong> dies soll ähnlich zu dem <code>services</code>-Kommando geschehen. Auch soll es möglich sein, Service-Components mittels Wildcards zu suchen.</li>
<li><strong>Service-Components starten und beenden:</strong> Mittels der Komponenten-ID oder dem -Namen soll der Status von Service-Components auf <code>enabled</code> oder <code>disabled</code> verändert werden können.</li>
<li><strong>Neue Instanzen von Service-Component-Factories erzeugen und beenden:</strong> Bei den Service-Component-Factories soll es möglich sein, mittels eines Kommandozeilenbefehls neue Instanzen zu erzeugen und vorhandene Instanzen wieder zu löschen.</li>
</ul>
<p style="text-align:justify;">Bei der Implementierung sollte im ersten Schritt eine Service-Component erstellt werden, welche den Zugriff auf die Service-Components herstellt. Zusätzlich ist eine Service-Component für die oben genannten Funktionen notwendig, falls jede Funktion vom Umfang zu groß wird, ist auch eine Aufteilung auf 3 einzelne Service-Components möglich.</p>
<p style="text-align:justify;">Es werden folgende Technologien benötigt:</p>
<ul style="text-align:justify;">
<li><strong>OSGi:</strong> Die eigentliche Runtime, bereitgestellt durch <strong>Eclipse Equinox</strong></li>
<li><strong>org.osgi.service.components: </strong>Die Implementierung der Service-Components, bereitgestellt durch das Bundle <strong>org.eclipse.equinox.ds</strong></li>
<li><strong>org.eclipse.equinox.log</strong> zur Nutzung von Logging während der Entwicklung</li>
</ul>
<p style="text-align:justify;">Da die Service-Components ein reines OSGi Feature sind, kann auf die Nutzung von <strong>RCP</strong> verzichtet werden, zumindest solange das Projekt sich auf die Kommandozeile beschränkt.</p>
<p style="text-align:justify;">Als Zeitrahmen würde ich maximal 5 Wochen veranschlagen, je nach freier Zeit und nach Schwierigkeiten bei der Implementierung.</p>
<p style="text-align:justify;">So, und jetzt gehts als Erstes ans Einrichten von Eclipse und einem neuen SVN-Repository.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hexor2k.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hexor2k.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hexor2k.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hexor2k.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hexor2k.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hexor2k.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hexor2k.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hexor2k.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hexor2k.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hexor2k.wordpress.com/244/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hexor2k.wordpress.com&blog=4544707&post=244&subd=hexor2k&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hexor2k.wordpress.com/2008/10/01/projekt-service-component-tracker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da83901c46990b57efdd2759b9ec859f?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=X" medium="image">
			<media:title type="html">hexor2k</media:title>
		</media:content>
	</item>
		<item>
		<title>Projekt-Ideen</title>
		<link>http://hexor2k.wordpress.com/2008/09/30/projekt-ideen/</link>
		<comments>http://hexor2k.wordpress.com/2008/09/30/projekt-ideen/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 18:43:16 +0000</pubDate>
		<dc:creator>hexor2k</dc:creator>
				<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Equinox]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[RCP]]></category>

		<guid isPermaLink="false">http://hexor2k.wordpress.com/?p=237</guid>
		<description><![CDATA[Da 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


Ich schwanke mittlerweile zwischen 3 Projekt-Zielen:

DS-Tracker: Declarative Services sind leider [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hexor2k.wordpress.com&blog=4544707&post=237&subd=hexor2k&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Da mir zwischen Arbeit, Fußball, Feuerwehr, Blogschreiben <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  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:</p>
<ul style="text-align:justify;">
<li>Java</li>
<li>OSGi und Equinox</li>
<li>Eclipse und RCP</li>
<li>evtl. OpenGL (und wenns noch geht, Shader)</li>
<li>evtl. EMF</li>
</ul>
<p style="text-align:justify;"><span id="more-237"></span></p>
<p style="text-align:justify;">Ich schwanke mittlerweile zwischen 3 Projekt-Zielen:</p>
<ul style="text-align:justify;">
<li><strong>DS-Tracker:</strong> Declarative Services sind leider im Equinox-Umfeld noch nicht so besonders integriert. Besonders mühsam ist die Fehlersuche, da oft nur das Log zur Verfügung steht. Ziel des Projekts sollte die Erstellung eines OSGi-Bundles sein, welches Kommandozeilenbefehle ähnlich zu den schon vorhandenen Befehlen zu Bundles, Services etc. bereitstellt, nur Ebene der Service-Komponenten. Damit sollen Service-Komponenten komfortabel abgefragt sowie gestartet und beendet werden können. Als Nebenschauplatz könnten noch Fehlermeldungen von der DS-Implementierung abgefangen und angezeigt werden können, da in manchen Fällen der Logger erst nach dem DS-Bundle startet. Das Projekt sollte eigentlich in kurzer Zeit zu schaffen sein und bietet nochmals einen guten Einstieg in DS und Equinox.</li>
<li><strong>3D-Engine: </strong>Schon etwas ehrgeiziger, hier sollte die Entwicklung einer kleinen Rendering-Engine mittels RCP das Ziel sein. Wesentliche Bestandteile sollten sein, dass das Plug-in ohne Probleme in Eclipse integrierbar ist und dass sich neue Funktionalitäten mühelos einfügen lassen können (mittels Neuimplementierung vorgegebener Interfaces). Meine Idee wäre noch, 3D-Objekte durch ein EMF-Modell darzustellen und von der Engine interpretieren zu lassen. Ein 3D-Modell-Editor mit grafischer Anzeige könnte ebenfalls herausfallen.</li>
<li><strong>RCP-Desktop:</strong> Beim philosophieren über OSGI und RCP auf der Arbeit <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  kam uns der Gedanke, dass ja OSGI und RCP quasi eine Art Betriebssystem für die JVM darstellen. In der Tat übernimmt RCP schon eine große Menge an Aufgaben wie z.B. File-Handling, Threading, GUI-Elemente &#8230; Unsere Idee war, aufbauend auf den vorhandenen Diensten eine Desktop-Shell zu erstellen welche komplett in RCP implementiert ist. Dies ist in ähnlicher Form nur durch das &#8222;Java Desktop System&#8220; von Sun erhältlich, dieses baut jedoch meines Wissens nicht auf OSGI und RCP auf.<br />
Eine Idee war noch das Organisieren des Desktops nach Aufgaben, welche natürlich den Perspektiven aus RCP entsprechen. Beispiele wären eine File-System-Perspektive mit Views speziell für Dateisysteme, eine Development-Perspektive mit Entwicklungstools (Editor, Konsole, SVN &#8230;) oder eine Multimedia-Perspektive mit Media-Player, Meta-Daten-Browser &#8230;<br />
Das Projekt an sich ist natürlich <strong>sehr</strong> ehrgeizig und selbst mit einer kleinen Gruppe nur schwer vor dem 22. Jahrhundert zu schaffen sein, aber irgendwie geht mir die Idee nicht mehr aus dem Kopf.</li>
</ul>
<p>So, nun sind die Ideen niedergeschrieben, wahrscheinlich werde ich mir erst mal über den DS-Tracker näher Gedanken machen, da ich eine solche Lösung auch akut auf der Arbeit brauchen könnte und sie sich auch in den Folgeprojekten gut bewähren könnte.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hexor2k.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hexor2k.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hexor2k.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hexor2k.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hexor2k.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hexor2k.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hexor2k.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hexor2k.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hexor2k.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hexor2k.wordpress.com/237/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hexor2k.wordpress.com&blog=4544707&post=237&subd=hexor2k&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hexor2k.wordpress.com/2008/09/30/projekt-ideen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da83901c46990b57efdd2759b9ec859f?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=X" medium="image">
			<media:title type="html">hexor2k</media:title>
		</media:content>
	</item>
		<item>
		<title>Declarative Services in Fragment Bundles</title>
		<link>http://hexor2k.wordpress.com/2008/09/30/declarative-services-in-fragment-bundles/</link>
		<comments>http://hexor2k.wordpress.com/2008/09/30/declarative-services-in-fragment-bundles/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 17:52:46 +0000</pubDate>
		<dc:creator>hexor2k</dc:creator>
				<category><![CDATA[Howtos]]></category>
		<category><![CDATA[Declarative Services]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Equinox]]></category>
		<category><![CDATA[Fragment Bundle]]></category>
		<category><![CDATA[Howto]]></category>

		<guid isPermaLink="false">http://hexor2k.wordpress.com/?p=196</guid>
		<description><![CDATA[Hier noch eine kleine Info-Sammlung über Declarative Services (DS) in Fragment Bundles (FB). Alle folgenden Infos beziehen sich auf Eclipse Equinox.


Grundsätzlich gilt: es funktioniert. Allerdings unterliegen DS in FB einigen Besonderheiten:

XML-Files: Die Service-Komponenten-Beschreibungen können beliebig im Host- oder Fragment-Bundle abgelegt werden. Sie können beliebige Klassen aus beiden Bundles reservieren, da ja beide zur Laufzeit zu [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hexor2k.wordpress.com&blog=4544707&post=196&subd=hexor2k&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Hier noch eine kleine Info-Sammlung über Declarative Services (DS) in Fragment Bundles (FB). Alle folgenden Infos beziehen sich auf Eclipse Equinox.</p>
<p style="text-align:justify;">
<p style="text-align:justify;"><span id="more-196"></span></p>
<p style="text-align:justify;">Grundsätzlich gilt: es funktioniert. Allerdings unterliegen DS in FB einigen Besonderheiten:</p>
<ul style="text-align:justify;">
<li><strong>XML-Files: </strong>Die Service-Komponenten-Beschreibungen können beliebig im Host- oder Fragment-Bundle abgelegt werden. Sie können beliebige Klassen aus beiden Bundles reservieren, da ja beide zur Laufzeit zu einem Bundle verschmolzen werden und sich den Classpath teilen.</li>
<li><strong>Manifest-Files: </strong>Jetzt die schlechte Nachricht, das Element <code>Service-Component<br />
</code> darf nur in der Manifest-File des Host-Bundles eingetragen sein, im Manifest des Fragments wird es ignoriert. Es können jedoch mehrere <code>Service-Component</code>-Elemente im Host-Manifest &#8222;auf Vorrat&#8220; eingetragen werden, wenn man sich dann an den Fehlermeldungen im Log nicht stört.</li>
<li><strong>Konflikte</strong>: Was passiert, wenn man mehrere gleichnamige XML-Files in Host- und Fragmenten liegen, diese aber unterschiedliche Service-Komponenten deklarieren?? Es steht wahrscheinlich in keiner Spezifkation, was dann geschieht, bei Eclipse Equinox passiert folgendes: Es werden zwei eigenständige Service-Komponenten erstellt und gestartet. Es findet keine Überschreibung oder Überlagerung statt. Man kann sich das so vorstellen, als lägen beide in unterschiedlichen Files im gleichen Bundle. Falls es vorkommt, dass die Service-Komponenten einen identischen Namen haben (too much copy-paste <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ),  so kollidieren sie so wie im Normalfall.</li>
</ul>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hexor2k.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hexor2k.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hexor2k.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hexor2k.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hexor2k.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hexor2k.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hexor2k.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hexor2k.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hexor2k.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hexor2k.wordpress.com/196/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hexor2k.wordpress.com&blog=4544707&post=196&subd=hexor2k&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hexor2k.wordpress.com/2008/09/30/declarative-services-in-fragment-bundles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da83901c46990b57efdd2759b9ec859f?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=X" medium="image">
			<media:title type="html">hexor2k</media:title>
		</media:content>
	</item>
		<item>
		<title>Howto OSGI Declarative Services</title>
		<link>http://hexor2k.wordpress.com/2008/08/27/osgi-declarative-services/</link>
		<comments>http://hexor2k.wordpress.com/2008/08/27/osgi-declarative-services/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 19:29:57 +0000</pubDate>
		<dc:creator>hexor2k</dc:creator>
				<category><![CDATA[Howtos]]></category>
		<category><![CDATA[Declarative Services]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Equinox]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[OSGi]]></category>

		<guid isPermaLink="false">http://hexor2k.wordpress.com/?p=140</guid>
		<description><![CDATA[Nachdem 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 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hexor2k.wordpress.com&blog=4544707&post=140&subd=hexor2k&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Nachdem ich auf der Arbeit ständig damit hantiere, gibts jetzt ne kleine Anleitung bzw. Checkliste für <em>Declarative Services (DS) </em> unter <em>OSGI</em>. 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.</p>
<p style="text-align:justify;">
<p style="text-align:justify;"><span id="more-140"></span></p>
<p>Die folgende Checkliste wurde unter der Verwendung von Eclipse Equinox erstellt.</p>
<h3>Checkliste: Was wird für Declarative Services benötigt?</h3>
<ul>
<li>Die Implementierung der Deklarative Services erfolgt durch das Bundle <strong>org.eclipse.equinox.ds</strong>. Dieses Bundle muss immer mit geladen werden, bevor die DS verwendet werden können.</li>
<li>Zusätzlich wird die Klasse <strong>ComponentContext</strong> aus dem Bundle <strong>org.osgi.service.component</strong> benötigt.</li>
<li>Die eigentliche Implementierung des DS erfolgt als sog. <strong>Service Component, </strong>also einer Klasse, welche den Service (besser gesagt: das Service Interface) implementiert. Im Gegensatz zu einem Activator wird diese nicht abgeleitet oder implementiert eine Interface. Sie muss trotzdem folgende zwei Funktionen enthalten, damit die ServiceComponent funktioniert. Diese Funktionieren ähnlich wie die <em>start </em>und<em> stop </em>Methoden des Bundle-Activators.
<ul>
<li><strong>protected void activate(Component context){&#8230;}</strong></li>
<li><strong>protected void deactivate(Component context){&#8230;}<br />
</strong></li>
</ul>
</li>
<li>Eine <strong>Konfigurationsdatei</strong> in XML: Diese Datei wird üblicherweise in einem Verzeichnis namens <strong>OSGI-INF</strong> abgelegt, der Dateiname ist beliebig. Die XML-Datei selbst folgt dem <a href="http://www.osgi.org/xmlns/scr/v1.0.0/scr.xsd">hier</a> zu findenden Schema. Wichtig ist hier, dass alle Inhalte der XML-Datei, also Tags, Attribute aber Paket- und Klassennamen <strong>richtig </strong>geschrieben sind, ansonsten kann die Service Component nicht aktiviert werden.</li>
</ul>
<ul>
<li>Änderung im Manifest-File des Bundles: Füge eine neue Zeile hinzu, der Inhalt ist <strong>Service-Component: OSGI-INF/service.xml</strong> (wenn die XML-Datei service.xml heißt)</li>
</ul>
<h3>Beispiel:</h3>
<p style="text-align:justify;">Hierzu ein kleines Beispiel: Eine ServiceComponent soll erstellt werden, die einen Service mit dem Interface <strong>MyServiceInterface</strong> bereitstellt. Sie soll außerdem eine Liste von Services des Interface <strong>OtherService</strong> beinhalten. Dazu bindet sie diesen Service (der auch über eine Service Component realisiert werden muss) mit der <strong>cardinality=&#8220;1..n&#8220;</strong>, so dass mindestens ein <strong>OtherService</strong> vorhanden sein muss, um die Service Component zu aktivieren. Die einzige Funktion in <strong>MyServiceInterface</strong> gibt die Anzahl der angebundenen <strong>OtherService</strong> zurück.</p>
<h4>Service Interface:</h4>
<pre><code>package org.example.ds
import ...
public interface MyServiceInterface {
    int getCount();
}</code></pre>
<h4>Implementierungs-Klasse:</h4>
<pre><code>package org.example.ds.internal
import ...
public class MyServiceImplementation implements MyServiceInterface {

    private ComponentContext context;
    private List&lt;OtherService&gt; servicelist = new Vector&lt;OtherService&gt;(0);

    protected void activate(ComponentContext context){
        this.context = context;
    }

    protected void deactivate(ComponentContext context){
        this.context = null;
    }

    protected void bindOtherService(OtherService otherservice){
        this.servicelist.add(otherservice)
    }

    protected void unbindOtherService(OtherService otherservice){
</code><code>        this.servicelist.remove(otherservice)</code>
<code>    }

    </code><code>public int getCount(){
        return this.servicelist.size();
</code><code>    }
}
</code></pre>
<h4>Die XML-Datei im OSGI-INF Ordner:</h4>
<pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;component name="myServiceComponent"&gt;
    &lt;implementation class="org.example.ds.MyServiceImplementation"/&gt;
    &lt;service&gt;
        &lt;provide interface="org.example.ds.MyServiceInterface"/&gt;
    &lt;/service&gt;
    &lt;reference
        name="otherservice"
        interface="org.example.ds.OtherService"
        bind="bindOtherService"
        unbind="unbindOtherService"
        cardinality="1..n"
        policy="static"
    /&gt;
&lt;/component&gt;
</code></pre>
<h3>Fehlersuche:</h3>
<ul>
<li>Das Bundle startet, aber die Service Component nicht. Dies kann viele Ursachen haben:
<ul>
<li>Schreibfehler in der Manifest- oder XML-File. Am besten nochmal nachschauen, ob alle Paket- und Klassennamen stimmen.</li>
<li>Eine geforderte Referenz ist nicht verfügbar. Untersuche alle Referenzen, ob deren Service Components vollständig gestartet wurden.</li>
<li>Eintrag in der <strong>Manifest-File</strong> fehlt oder ist ungültig. Mein absoluter Lieblings-Fehler <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li>Funktionen wie <strong>activate/deactivate</strong> bzw. <strong>bind/unbind</strong> fehlen oder sind ungültig.</li>
</ul>
</li>
<li><strong>NullPointerException</strong> oder andere krude Exceptions werden geworfen: Dies kann auftreten, wenn Klassenmember in der <strong>activate</strong>-Funtion belegt werden. Diese wird nämlich erst dann aufgerufen, wenn alle Referenzen erfüllt sind, also erst nach den <strong>bind</strong>-Funktionen. Wenn in <strong>bind</strong> schon auf das Member zugegriffen wird, ist es dann noch <strong>null</strong> und die NullPointerException wird geworfen.</li>
<li>Hilfe, ich sehe nicht ob sich irgendwas tut!!!
<ul>
<li>Der Status einer Service Component kann leider nicht einfach über den <strong>status</strong>-Befehl abgefragt werden, da Service Components ein relativ neues Konzept sind.</li>
<li>Eine Service Component meldet ihre Services sofort an der Service Registry an, der Befehl <strong>services</strong> gibt also keinerlei Aufschluss über den Status ser Service Component.</li>
<li>Am besten kann der Lebenszyklus über den Log-Service verfolgt werden, den Equinox mitliefert. Er kann über das Bundle <strong>org.eclipse.equinox.log</strong> angebunden werden</li>
</ul>
</li>
</ul>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hexor2k.wordpress.com/140/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hexor2k.wordpress.com/140/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hexor2k.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hexor2k.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hexor2k.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hexor2k.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hexor2k.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hexor2k.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hexor2k.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hexor2k.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hexor2k.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hexor2k.wordpress.com/140/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hexor2k.wordpress.com&blog=4544707&post=140&subd=hexor2k&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://hexor2k.wordpress.com/2008/08/27/osgi-declarative-services/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/da83901c46990b57efdd2759b9ec859f?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=X" medium="image">
			<media:title type="html">hexor2k</media:title>
		</media:content>
	</item>
	</channel>
</rss>