<?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/"
	>

<channel>
	<title>All the small things &#187; News</title>
	<atom:link href="http://osgi.mjahn.net/category/news/feed/" rel="self" type="application/rss+xml" />
	<link>http://osgi.mjahn.net</link>
	<description>A blog about OSGi, software architecture, componentization and everything else, I consider worth writing about.</description>
	<lastBuildDate>Tue, 11 May 2010 02:39:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Eclipse Target Platform &#8211; You should take a look</title>
		<link>http://osgi.mjahn.net/2010/05/11/eclipse-target-platform-you-should-take-a-look/</link>
		<comments>http://osgi.mjahn.net/2010/05/11/eclipse-target-platform-you-should-take-a-look/#comments</comments>
		<pubDate>Tue, 11 May 2010 02:39:48 +0000</pubDate>
		<dc:creator>Mirko Jahn</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://osgi.mjahn.net/?p=242</guid>
		<description><![CDATA[This time, I am trying something new. After all, we&#8217;re in the age of Web 2.0, so what about HTML 5 and the cool new video features? I used the opportunity to create little screen cast about a pretty cool Eclipse feature many people are not aware of. The use of Target Platforms. There are [...]]]></description>
			<content:encoded><![CDATA[<p>This time, I am trying something new. After all, we&#8217;re in the age of Web 2.0, so what about HTML 5 and the cool new video features? I used the opportunity to create little screen cast about a pretty cool Eclipse feature many people are not aware of. The use of Target Platforms. There are many ways of utilizing this feature and this short video will only show a glimpse of what it is capable of. So, in case you didn&#8217;t already know about it, lean back and let me show you what it is all about.</p>
<p><a id="opener" href="http://osgi.mjahn.net/wp-content/uploads/2010/05/eclipseTargetPlatforms.jpg"><img src="http://osgi.mjahn.net/wp-content/uploads/2010/05/eclipseTargetPlatforms.jpg" alt="" title="Eclipse Target Platforms ScreenCast" width="500" class="aligncenter size-full wp-image-287" /></a></p>
<div id="video_dialog">
<video controls="true"><br />
<source src="/videos/eclipse_target_def.m4v" type="video/mp4" /><br />
Your browser does not support the video tag of html5.<br />
Try the latest FireFox or Chrome versions!<br />
</video>
</div>
<p>
Disclaimer: This video is about a year old (still Eclipse 3.4) and didn&#8217;t go through post production, so do not expect too much from the video quality <img src='http://osgi.mjahn.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>
If you have problems viewing the video, you can download it from <a href="http://osgi.mjahn.net/videos/eclipse_target_def.m4v">here</a>
</p>
<p>Cheers,<br />
Mirko</p>
]]></content:encoded>
			<wfw:commentRss>http://osgi.mjahn.net/2010/05/11/eclipse-target-platform-you-should-take-a-look/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making myself obsolete &#8211; well maybe.</title>
		<link>http://osgi.mjahn.net/2010/03/03/making-myself-obsolete-well-maybe/</link>
		<comments>http://osgi.mjahn.net/2010/03/03/making-myself-obsolete-well-maybe/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 23:29:15 +0000</pubDate>
		<dc:creator>Mirko Jahn</dc:creator>
				<category><![CDATA[Inspector]]></category>
		<category><![CDATA[JSR 291]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Apache License]]></category>
		<category><![CDATA[ASL]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[solver]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://osgi.mjahn.net/?p=212</guid>
		<description><![CDATA[I admit it: &#8220;Using OSGi for the first time isn&#8217;t as fun as any of the hip new scripting languages.&#8221; Actually, it can be quite painful &#8211; especially in the beginning. You&#8217;re forced to think about things you actually don&#8217;t want to &#8211; or better put &#8211; you thought you don&#8217;t want to. The good [...]]]></description>
			<content:encoded><![CDATA[<p>I admit it: &#8220;Using OSGi for the first time isn&#8217;t as fun as any of the hip new scripting languages.&#8221; Actually, it can be quite painful &#8211; especially in the beginning. You&#8217;re forced to think about things you actually don&#8217;t want to &#8211; or better put &#8211; you thought you don&#8217;t want to. The good news is that there is tooling support (like: <a title="external: BND Home Page" href="http://www.aqute.biz/Code/Bnd" target="_blank">BND</a>, <a title="external: Apache Felix Maven Bundle Plugin" href="http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html" target="_blank">maven-bundle-plugin</a> or <a title="external: Eclipse PDE Website" href="http://www.eclipse.org/pde/" target="_blank">Eclipse PDE</a>) that can help you getting around most of the time. Unfortunately, there is still the remaining bit, that keeps nagging your brain with the &#8220;what could possible have gone wrong&#8221;. The one thing that bothered me most about it is that in many cases the steps you need to figure out what&#8217;s wrong are the same. It is simple, repetitive work you have to do, mostly only using basic OSGi know how. Also surprisingly simple, there is no tool at hand that can help you going through the necessary steps &#8211; well, till now. Lately I was so annoyed by the situation, that I started my own little open source project, aiming to fight this exact problem. Getting you up to speed and solving the simple problems you usually have when working with OSGi &#8211; especially when you start using OSGi, was my goal to achieve.</p>
<p>So, I am happy to introduce the (OSGi)&#8230;</p>
<p><a href="http://osgi.mjahn.net/wp-content/uploads/2010/02/inspector_mj_blog.png"><img class="size-full wp-image-213 alignnone" style="border: 0px;" title="Thanks Ina for the great image!" src="http://osgi.mjahn.net/wp-content/uploads/2010/02/inspector_mj_blog.png" alt="Thanks Ina for the great image!" width="515" height="268" /></a></p>
<p>Before going on explaining what it is about, what it can do and why you might wonna take a look at it, be warned! As of now, it is still a proof of concept project. It sure does offer help and is better than nothing, but I am not satisfied with some details of the API and implementation, so expect severe changes within the next couple of weeks (if not months). You&#8217;ve been warned <img src='http://osgi.mjahn.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Anyway, the goal behind the inspector is to offer a simple framework to detect common coding mistakes in OSGi. Very simple things manifesting in ClassNotFoundExceptions, missing services, unresolved bundles or not attached fragments. It certainly is not the &#8220;one to rule them all&#8221; solution, but it is a (hopefully) decent effort to help you move faster with your OSGi development.</p>
<p>So, what is the inspector really. Currently, the inspector consists of three major parts: the core, the reasoner and the web GUI. The core offers basic functionality to analyze the running OSGi environment in a convenient way. This includes, but is not limited to:</p>
<ul>
<li>imported, exported packages with their versions, properties and directives</li>
<li>provided services</li>
<li>pending, removed and failed service requests (partially depending on a R4.2 runtime)</li>
<li>framework events with special treatment of errors</li>
<li>dynamic imports</li>
<li>fragments</li>
<li>framework capabilities</li>
<li>class look-up within the runtime (which bundles provide a specific class?)</li>
<li>&#8230;</li>
</ul>
<p>This all is realized in one single bundle you have to deploy and start as the first bundle in your OSGi runtime (any runtime is fine, as long it is a R4.x one from any implementer).</p>
<p>The reasoner is the second bundle and provides the logic to solve your common problems it uses the core bundle for getting the required information to make reasonable guesses on what&#8217;s wrong and even more important, on how to fix it quickly. This part is the most experimental one. The idea is to have an extendable API that is not limited to standard OSGi problems but can be extended to solve your domain specific problems as well. The current implementation only includes one use case yet &#8211; ClassNotFoundExceptions propagated to the OSGi runtime. Other reasoners are already work in progress like failing service requests, missing services and not resolved bundles in general (bundles and fragments actually). If you can think of other common OSGi problems, please let me know!</p>
<p>The web gui is a convenient way to take a look at the discovered problems and the suggested solutions. It is very simple and straight forward in order to solve the problems at hand. You don&#8217;t need to use it, you could also create a simple command line tool doing exactly the same. I actually would have preferred a command line tool over a web gui, but because of the lack of a common API to provide command line extensions over OSGi implementation, I decided to not yet provide something right now. Maybe later if the the feedback suggests otherwise.</p>
<p>To get you started in no time, I also provide an assembly based on pax-runner that starts all bundles required correctly and allows for easy provisioning of your own domain specific bundles. There is even a very simple tutorial available at <a title="external: Inspector Tutorial" href="http://wiki.github.com/mirkojahn/OSGi-Inspector/tutorial" target="_blank">github</a>.</p>
<p>So, if you&#8217;re interested, take a look at it, give it a spin and let me know what you&#8217;re thinking! Any feedback is greatly appreciated!</p>
<p>Here the links for further details:</p>
<p>Binary download: <a title="external: Download site" href="http://github.com/mirkojahn/OSGi-Inspector/downloads" target="_blank">http://github.com/mirkojahn/OSGi-Inspector/downloads<br />
</a>Tutorial: <a title="external: Inspector Tutorial" href="http://wiki.github.com/mirkojahn/OSGi-Inspector/tutorial" target="_blank">http://wiki.github.com/mirkojahn/OSGi-Inspector/tutorial</a><br />
Source Code: <a title="external: Source Code (Apache Version 2 License)" href="http://github.com/mirkojahn/OSGi-Inspector" target="_blank">http://github.com/mirkojahn/OSGi-Inspector<br />
</a>Bug tracking: <a title="external: Bug tracking" href="http://github.com/mirkojahn/OSGi-Inspector/issues" target="_blank">http://github.com/mirkojahn/OSGi-Inspector/issues</a></p>
<p>I also have plans for additional features for the next version (maybe this summer) of the inspector, like making the Web GUI extendable, including more JVM information and debugging capabilities like heap dumps or per bundle memory usage, statistics about the application like running threads, used frameworks and their versions, runtime bundle dependencies, search over many of the aforementioned features and much more, but this will be mainly based on user feedback. So stay tuned and let me know what you&#8217;re missing.</p>
<p>Finally here are some screen shot to give you an idea how the proof of concept looks right now <img src='http://osgi.mjahn.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><a href="http://osgi.mjahn.net/wp-content/uploads/2010/03/welcome_screen.jpg"><img class="alignnone size-full wp-image-223" style="border: 0px initial initial;" title="Inspector Welcome Screen" src="http://osgi.mjahn.net/wp-content/uploads/2010/03/welcome_screen.jpg" alt="" width="515" /></a></p>
<p><a href="http://osgi.mjahn.net/wp-content/uploads/2010/03/runtimeProblems_screen.jpg"><img class="alignnone size-full wp-image-224" style="border: 0px initial initial;" title="Runtime Problems Screen" src="http://osgi.mjahn.net/wp-content/uploads/2010/03/runtimeProblems_screen.jpg" alt="" width="515" /></a></p>
<p>As a final note, one may ask if OSGi experts are becoming obsolete by tool support like this. I don&#8217;t think so! In my opinion, this is something that is crucial for a wider OSGi adoption and an important helper to silence the OSGi opponents by solving 90% of the beginner problems with regard to basic programming errors. It can serve as a teaching tool to tell people what not to do or how to do things better. OSGi experts now can focus on the important stuff like how to design and build truly modular applications &#8211; as they should have been for a while.</p>
<p>Yours,<br />
Mirko</p>
]]></content:encoded>
			<wfw:commentRss>http://osgi.mjahn.net/2010/03/03/making-myself-obsolete-well-maybe/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OSGi vs. Jigsaw &#8211; Why can&#8217;t we TALK?</title>
		<link>http://osgi.mjahn.net/2009/07/01/osgi-vs-jigsaw-why-cant-we-talk/</link>
		<comments>http://osgi.mjahn.net/2009/07/01/osgi-vs-jigsaw-why-cant-we-talk/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 02:01:48 +0000</pubDate>
		<dc:creator>Mirko Jahn</dc:creator>
				<category><![CDATA[Componentization]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://osgi.mjahn.net/?p=164</guid>
		<description><![CDATA[Before starting, I just want to make clear that I am not a member of the OSGi Alliance nor a participant of any EG. I just happen to use OSGi since Eclipse started to investigate OSGi as their componentization model in its core. Since then I got more and more attached to OSGi and I [...]]]></description>
			<content:encoded><![CDATA[<p>Before starting, I just want to make clear that I am not a member of the OSGi Alliance nor a participant of any EG. I just happen to use OSGi since Eclipse started to investigate OSGi as their componentization model in its core. Since then I got more and more attached to OSGi and I don&#8217;t want to give up any of its features, so I guess you can call me a fanboy if you like. Of course, I am following the dispute between OSGi and Jigsaw since project Jigsaw was announced and I have to admit, that I was and am not happy with the approach Sun was taking not using a JSR and hoping to establish a modularization standard beyond the JVM. I already expressed my feelings in an older blog post called [<a title="internal: Componentization Wars Part II" href="http://osgi.mjahn.net/2008/12/04/componentization-wars-part-ii-guerrilla-tactics/" target="_blank">Componentization Wars Part II</a>]. Anyway, I guess there are some things I can&#8217;t change, so I&#8217;ll try my best to at least help the Jigsaw community to benefit from my experiences with OSGi and hope the input will help to create a better system (we all can benefit from). At the end only the quality of the technology should count and we should all work together to progress. So please consider the rest of this post as  my humble contribution. Take it or leave it,  it&#8217;s just an offer.</p>
<p>I thought a lot about the resistance of parts of the Java community in reusing the OSGi standard and starting from what we already have and in my conclusion the problem is two fold. First, it has come from a source outside the JSR initially. Well, I know this is debatable, because OSGi was one of the first JSRs and now with JSR 291 it in fact is one, but it is not &#8220;developed&#8221; within the JSR process, so one can say this is a valid point. Second modularization is in fact a tough call. When looking around, there is no other language or standard (even beyond Java itself) that has entirely tackled the problem and boy since David Parna&#8217;s introduction of the concept of modularity in 1972 quite some time has passed. A &#8220;fan&#8221; or not one has to admit that OSGi has already has gained a name in terms of modularizing the JVM and looking at the time required, well it took over 10 years to get that far. So I think it is fair to say that modularization is not easy to accomplish and to get right. In fact I had my problems (and partially still have) with OSGi as well. Let me explain&#8230;</p>
<p><strong>My first contact with OSGi</strong></p>
<p>When I first encountered OSGi I was working at IBM Research trying to explore ways to improve the modularization approach of [<a title="external: Apache UIMA Website" href="http://incubator.apache.org/uima/" target="_blank">UIMA</a>]. UIMA itself already had the notion of components or modules if you prefer already, but in a way it left certain features to get improved. In particular the isolation of each module wasn&#8217;t enforced, so introducing 3rd party modules into the runtime was a risky business. Especially when giving the fact that these modules had access to basically all resources. You never know what they are using or how they behave in the system. That, for instance was a reason to separate the processing into an other Java process. If that one fails, not the entire system is affected. OSGi in this context wasn&#8217;t THE savior, but it helped to make it more robust. No Java based model can provide real isolation of modules on JVM level (without the need to create a separate JVM instance is still something entirely missing in Java &#8211; one can ALWAYS create an OutOfMemoryError if he or she intends to). The great benefit of OSGi was simple. Hiding internal APIs, making dependencies explicit and potentially create a repository of reusable artifacts being usable without pages of manuals describing on how to set-up a system suitable for these modules.</p>
<p><strong>How OSGi is received (on first encounter)</strong></p>
<p>As you may imagine, one of the most important goals was to hide OSGi as much as possible. No services, no Import-Package (but Require-Bundle on one aggregation bundle), basically reduce OSGi to its minimum. Well, the appreciation was&#8230; limited. All people I was working with were exceptional bright and determined researchers in MLP. They developed highly sophisticated algorithms on how to analyze unstructured data, but only a few were software engineers. So the code was&#8230; working, but not production ready. Enforcing them to apply rules that ultimately made it harder for them getting things done and as a result slowing them down wasn&#8217;t something they welcomed very much. This is something I can totally understand and relate to! What is a system worth, if you don&#8217;t gain anything! Well, the problem here is that they didn&#8217;t gain anything, because they just used their code and to a limited extend the code of others, so the overhead of integrating with others was rather limited. The real benefit is visible when you start reusing multiple artifacts and potentially in different versions. This is something we (as a community) are trying to achieve for decades but failed so far, if you ask me.</p>
<p><strong>Some reflections about our history</strong></p>
<p>Looking at the history of Java it feels like it is a common problem. One tends to address the immediate problems. In principle there is nothing wrong with that, but in often after introducing a new standard you realize that the actual problem is way more complicated or you haven&#8217;t anticipated all vital use cases and the trivial approach looking so attractive at the beginning won&#8217;t work in the long run. The problem then is only that you don&#8217;t want to brake backwards compatibility and eventually this will drive the design of your solution, ultimately removing many otherwise possible ways to go. Talking about history, when we look back, jars where introduced as a distribution format for applets. Surely solving the immediate problem. After a while, Java on the server emerges and yet another problem arose. Separation of different web applications. Well, we know how it ended, eventually we got different class loading solutions for each J2EE vendor, because this part of the specification was left out.</p>
<p><strong>My point is&#8230;</strong></p>
<p>Now we have Jigsaw addressing a subset of OSGi&#8217;s modularization capabilities, which by itself is perfectly fine (even if it is not OSGi what they are going to use). The problem I fear is only that soon there will be more requirements altering the current approach unfitting. In particular, the great benefit of modules should be to be able to reuse them, without the need to understand all their internals. It was stated that OSGi&#8217;s restrictive class loading approach is not suitable for many applications. I tend to agree. I experienced this pain and it wasn&#8217;t pleasant. I heard that not allowing split packages is not acceptable, because it is a necessity. Why? Is it, because it is a good design or just because current systems are using it? If you want to create modules, you want to make them robust, so except for the exposed (public) API, it shouldn&#8217;t matter how it is implemented. If modules are not enforced to have their own class loader, you can never be sure whether or not you&#8217;ll have collisions. Yes, this is a pain in the **** to rethink and rewrite existing code! And I also have better things to do, than to retrofit some working libraries &#8211; no doubt! The question we should ask ourselves however is what do we really want? A system seamlessly integrating with existing code or provide a new way of thinking which might not be as simple as hoped, but give us what we need in the long run? Do we want reusable entities or a better provisioning system as plain jars? Don&#8217;t get me wrong here, I am not saying OSGi is the solution or should be used at all! Just saying that the requirements are dictating what you should get and if you intend to create &#8220;real&#8221; modules, the lessons OSGi learned are most valuable, even if you are eventually taking a completely different approach. In fact it has its short comings and flaws as any other system has.</p>
<p><strong>OSGi is not perfect either<br />
</strong></p>
<p>Working with OSGi for a while, I came across several places, where I noticed the need for improvement. For instance, OSGi provides a pretty strict module system, which when running is well defined. Unfortunately, there is a problem with how to get to this state or even knowing when this state is achieved. The idea behind its model is that using services, there should not be any dependency on the start order, because everything can change at any time. This is a nice idea, but in real world it is impossible to achieve. For instance, I am currently working with embedded devices and due to the limited hardware the  start-up can take minutes. Based on the dynamics however, a user might already see a web interface popping up, which seems perfectly usable. However, when using OSGi&#8217;s ConfigAdmin service to gather all configured configurations, it can happen that not yet started bundles don&#8217;t provide the required information, so the resulting configuration is incomplete. Similar things apply to the start order (no start levels are not sufficient) when using security. It is just not standardized how to ensure that certain bundles have to be loaded before everything else in order to start a particular runtime with security on. OSGi limits itself to define the runtime behavior, leaving out configuration issues when moving from one container to another. Basically the configuration for the start levels of each bundle getting loaded is an implementation detail &#8211; doesn&#8217;t this look familiar to you when using JEE <img src='http://osgi.mjahn.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . Also providing tools to inspect the runtime behavior (how the container resolves dependencies is not sufficiently defined, so you have to jump through a lot of hoops or use implementation details of a particular implementation. Not really helpful/desirable from a tooling provider perspective. I could go one and on, like with every other technology. Work in progress is written over everyone of them. So, you see, there is so much that can still be done to improve our situation. No one is perfect and will ever be. We can just try to do our best to progress and learn from our faults.</p>
<p><strong>Properties of a true module system</strong></p>
<p>Well, after talking so much about what&#8217;s not right and what can be improved, I guess it is just fair to also draw a rough picture of a system providing the features of true &#8211; meaning reusable &#8211; modules. To help me out a little, I took the liberty in quoting one of the experts of componentization/modularization (which is not quite the same). Clemens Szyperski is currently working for Microsoft (I think) and so has no real relation to Java at all, but his observations and remarks hold true even in our space.</p>
<blockquote><p>„A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third parties.“ [Szyperski et. al. 2002, p.41]</p></blockquote>
<p>&#8230; and a more brief definition of required properties.</p>
<blockquote><p>„The characteristic properties of a component are that it:<br />
• is a unit of independent deployment;<br />
• is a unit of third-party composition;<br />
• has no (externally) observable state.“ [Szyperski et. al. 2002, p.36]</p></blockquote>
<p>I think this sets the floor for more further investigations. In particular, the citations above are nice, but pretty vague and open to interpretation. For instance, what is &#8220;independent&#8221; when we&#8217;re talking about deployment? What does composition mean in this context? Is it just a descriptor, is it a zip or rpm file containing everything? I don&#8217;t know and it doesn&#8217;t actually matter I think. What matters is that the resulting system is compelling, concise and valid within itself. Of course, some features seem better than others, but we also need freedom to explore new ways of thinking.</p>
<p>So while thinking about the core features of a (potentially) new module system, for me I identify the following as most important:</p>
<ul>
<li>Isolation:  When talking about isolation, I am basically talking about trust. Having a module system defining an isolation on module level (which currently can only achieved by having a custom class loader), gives me as the module designer the trust that I can create something without the fear of breaking something on the user side, just because of an implementation detail that is not part of the public API.I can trust that when I have the isolation on module level, I know what will have to deal with. As they say: Good fences make for good neighbors.</li>
<li>Information hiding: Yes this is as old as it can get in software engineering, but this is the most critical part in so many ways. First of all, I understand modules as a way of abstraction. Zoom out of the implementation details and just focus on the API. That&#8217;s what I want! Black Boxes, only with interfaces (or maybe factories visible). Of course, API contracts purely defined in Java Interfaces are not precise enough to provide all required information (like ranges, value lists, limits,&#8230;), but is a starting point. The right documentation should or for now has to do the rest.</li>
<li>Enabling reuse: Currently the silver bullet to decouple is dependency injection. Although a great way of doing so, it is not enforced. Anyone can just programmatically wire up classes. As a result you get bound to an implementation, which again makes reuse and updates way harder. If I know I have to use a certain API, I usually don&#8217;t care who is providing the implementation and that&#8217;s key for every robust system.</li>
<li>Predictability: Well, usually even in JEE we assume we know how an application will behave, once deployed, but in reality, it is just not true. Resolution is based on the class path which can contain, depending on where you deploy your application, basically any classes and libraries. Now you have many not easy to manage factors affecting what gets loaded when. For instance there can be multiple logging frameworks in different versions pressent interfeering with the one provided by your application. Depending when they are found in the class path, they might cause problems or not. A deterministic system, that declaratively defines its dependencies will only see the required ones. Everything else is just hidden and serve other applications if they need it &#8211; no interference with each other!</li>
<li>flexible binding, yet safe binding: This is something increasingly important and also not accomplished satisfyingly by any module system I know of &#8211; so far. Basically what one wants is to create an application based on the dependencies known and being able to fix later in time appearing problems without the need to redeploy and change the whole application. For instance if a security vulnerability in one module is detected. The latest version should be deployable and tell the runtime that it is a fixed version of some of the existing ones within the runtime, so those versions can be replaced.</li>
<li>robustness: Currently no in-JVM approach can guarantee any runtime behavior like the consumed memory or the allocated cpu cycles. If you get a malicious module, it can bring down the entire JVM. There are already research projects out there providing such features, so in theory it should be possible to achieve this on JVM level.</li>
</ul>
<p>Of course, there is more, but I think the list is contains the most important parts. You might have noticed, there is no mentioning of OSGi or the way OSGi is doing it. I believe there is always more than one way to accomplish your goals, so maybe the OSGi community overlooked a possibility &#8211; I honestly don&#8217;t know. So if you&#8217;re able to come up with any solution that fulfills these requirements, I would be more than happy. Maybe and only maybe you can consider looking at some of the approaches the OSGi was taking to tackle parts of these problems.</p>
<p>Yours,<br />
Mirko</p>
<p><strong>References:</strong></p>
<p>[UIMA]: <a title="external: Apache UIMA Website" href="http://incubator.apache.org/uima/" target="_blank">http://incubator.apache.org/uima/</a><br />
[Componentization Wars Part II]: <a title="internal: Componentization Wars Part II" href="http://osgi.mjahn.net/2008/12/04/componentization-wars-part-ii-guerrilla-tactics/" target="_blank">http://osgi.mjahn.net/2008/12/04/componentization-wars-part-ii-guerrilla-tactics/<br />
</a>[dmeuima]: <a title="external: DME-UIMA" href="http://www.alphaworks.ibm.com/tech/dmeuima/" target="_blank">http://www.alphaworks.ibm.com/tech/dmeuima/</a><br />
[Szyperski et. al. 2002]: Szyperski, Clemens ; Gruntz, Dominik ; Murer, Stephan: Component Software. Beyond Object-Oriented Programming. Addison-Wesley Professional, 2002 – ISBN 0201745720</p>
]]></content:encoded>
			<wfw:commentRss>http://osgi.mjahn.net/2009/07/01/osgi-vs-jigsaw-why-cant-we-talk/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Interview for the IDN at ICW</title>
		<link>http://osgi.mjahn.net/2008/12/12/interview-at/</link>
		<comments>http://osgi.mjahn.net/2008/12/12/interview-at/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 19:56:12 +0000</pubDate>
		<dc:creator>Mirko Jahn</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[icw]]></category>
		<category><![CDATA[idn]]></category>
		<category><![CDATA[interview]]></category>

		<guid isPermaLink="false">http://osgi.mjahn.net/?p=86</guid>
		<description><![CDATA[Last week I gave an interview for my companies developer network. Of course such thing isn&#8217;t much of a big deal. I mean it&#8217;s the company you are working for &#8211; they are always looking for content for their website, but for me however this was different. In my blog I usually tend to talk [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I gave an interview for my companies <a title="external: IDN - ICW Website" href="http://idn.icw-global.com" target="_blank">developer network</a>. Of course such thing isn&#8217;t much of a big deal. I mean it&#8217;s the company you are working for &#8211; they are always looking for content for their website, but for me however this was different. In my blog I usually tend to talk about technical things and not so much about the actual things I am working on. This has several reasons, for one I am kinda happy to be able to be involved in more than just one thing. Diversity is great, because it gives you the chance to think outside the box, so it became a hobby of mine to do some small side project to get to know different technologies just for fun. Another reason is that you never know what your allowed to say. Is this topic meant to be communicated to the outside or not, is it strategic,&#8230; you know what I am talking about.</p>
<p>In the interview, I had the chance to actually talk about our latest development and highlight some of the amazing things we are working on. Being involved in OSGi for years now, I got to see quiet some OSGi based projects and designs and believe me most of them seem like toy projects compared to the degree of OSGi utilization the team I am working in has achieved. Working with OSGi behind the curtains for about 4 years we have several products based on a core framework, which is currently driven towards the first product line that is actually worth being called so. Unfortunately I have to note that only very little of this credit belongs to me. Most of it was done before I joined the company. Although it was the reason, why I joined, I am still amazed by how much we are working on the cutting &#8211; sometimes more &#8220;bleeding&#8221; &#8211; edge, like OSGi security. I don&#8217;t want to sound like some marketing guy promoting something, but if you&#8217;re interested in the technology and are looking for real applications running in the field &#8211; have a look at my <a title="external: IDN Interview" href="http://idn.icw-global.com/solutions/icw-ehealth-framework/software-development-kit/article/2008/osgi.html" target="_blank">interview</a>. Enough said&#8230; Many thanks to my team for the great work and the inspiring and friendly environment one just have to love working in.</p>
<p>Cheers,<br />
Mirko</p>
]]></content:encoded>
			<wfw:commentRss>http://osgi.mjahn.net/2008/12/12/interview-at/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Componentization wars part II &#8211; Guerrilla tactics</title>
		<link>http://osgi.mjahn.net/2008/12/04/componentization-wars-part-ii-guerrilla-tactics/</link>
		<comments>http://osgi.mjahn.net/2008/12/04/componentization-wars-part-ii-guerrilla-tactics/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 21:36:33 +0000</pubDate>
		<dc:creator>Mirko Jahn</dc:creator>
				<category><![CDATA[Componentization]]></category>
		<category><![CDATA[JSR 277]]></category>
		<category><![CDATA[JSR 294]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[OSGi]]></category>

		<guid isPermaLink="false">http://osgi.mjahn.net/?p=79</guid>
		<description><![CDATA[Usually when I am blogging, I am talking about the latest technology, standards or general trends. This time however, I wonna talk about politics. No, not about the elections in US, but about politics in software development practiced by the big players to achieve their business goals. Don&#8217;t get me wrong from the start. I [...]]]></description>
			<content:encoded><![CDATA[<p>Usually when I am blogging, I am talking about the latest technology, standards or general trends. This time however, I wonna talk about politics. No, not about the elections in US, but about politics in software development practiced by the big players to achieve their business goals. Don&#8217;t get me wrong from the start. I think this is completely normal in general. We all are trying to achieve our goals the one way or the other, but something just doesn&#8217;t feel right&#8230;</p>
<p>Yesterday I read about the latest <a title="external link: Mark Reinhold's blog" href="http://blogs.sun.com/mr/entry/jigsaw" target="_blank">news</a> concerning Sun&#8217;s plans about the future of <a title="external link: JSR 277" href="http://jcp.org/en/jsr/detail?id=277" target="_blank">JSR 277</a>, <a title="external link: JSR 294" href="http://jcp.org/en/jsr/detail?id=294" target="_blank">JSR 294</a> and its new plans on inventing componentization for its JVM called <a title="external Link: Jigsaw" href="http://blogs.sun.com/mr/entry/jigsaw" target="_blank">Jigsaw</a>. I hate to say it, but for me, it seems like Sun behaves like a small child trying to insist to be the one driving all development and not letting someone else play with its toys. It&#8217;s anything but the behavior of a well establish and industry leading company or one who wants to become one. First they completely ignored the problem of componentization in Java while persuing enterprise development with J(2)EE and missed their chance to actually set the foundation for real software reuse what you would expect from and enterprise ready language specification. Later, when OSGi began to rise they started the JSR 277 and tried to create a competing standard in secret, which didn&#8217;t work out too well as we all know. Now, because of the pressure of the community and the lack of showing a better solution they are abandoning the JSR and start developing their own &#8220;internal&#8221; componentization approach with the Jigsaw project. Of course they are claiming it is not intended to be used outside their own use case for componentizing the JVM, but it is hard for me to believe this. Call me paranoid, but for me it sounds much more like an attempt to develop another system, which after completion is suddenly moved into an official standard. Sun&#8217;s statement that they are going to revive JSR 294 and are inviting even the OSGi Alliance to participate to work on it feels more like a distraction so that Sun is able to pursue its plans with Jigsaw in private that without public notice they suddenly can come up with a self made de-facto standard. Again, I might be to paranoid, but it just doesn&#8217;t feel right. Is all that just a coincident? I don&#8217;t think so. Why can&#8217;t they embrace the work done already and see it as a great chance to propel their Language and create a true reusable software stack, no other vendor can offer? Hal Hildebrand just blogged about Sun&#8217;s attempt to introduce this new project and the way they are trying to persuade big industry players about their great intents&#8230; Well, you should really read his <a title="external link: Hal Hildebrands blog post" href="http://www.tensegrity.hellblazer.com/2008/12/spice-is-not-a-recreational-drug.html" target="_blank">post</a> about it and please tell me, if they have such humble goals, why does everyone they consult have to sign a NDA? I strongly believe that if those ideas are so great, why not share them and let the community decide and participate?</p>
<p>To wrap things up, I ask all of you who feel like me, share you&#8217;re opinion! Comment on Hal&#8217;s post, blog about it, link to it, spread the word. I believe we &#8211; as a community &#8211; have to stand up and say what we think to show Sun, that those kind of guerrilla tactics, especially when so easily to look through are not working. Keep your eyes open and don&#8217;t fall for the dark side <img src='http://osgi.mjahn.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Cheers,<br />
Mirko</p>
]]></content:encoded>
			<wfw:commentRss>http://osgi.mjahn.net/2008/12/04/componentization-wars-part-ii-guerrilla-tactics/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>OSGi Community Event &#8211; my personal resume</title>
		<link>http://osgi.mjahn.net/2008/06/12/osgi-community-event-my-personal-resume/</link>
		<comments>http://osgi.mjahn.net/2008/06/12/osgi-community-event-my-personal-resume/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 20:02:20 +0000</pubDate>
		<dc:creator>Mirko Jahn</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[experiences]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://osgi.mjahn.net/?p=33</guid>
		<description><![CDATA[After being involved in OSGi for a couple of years now, I finally had the chance to attend one of the community events. I have to admit, I was kinda nervous. I talked to so many people in the community for so long through the mailing list or personal mails, but actually never really met [...]]]></description>
			<content:encoded><![CDATA[<p>After being involved in OSGi for a couple of years now, I finally had the chance to attend one of the community events. I have to admit, I was kinda nervous. I talked to so many people in the community for so long through the mailing list or personal mails, but actually never really met one of the folks there, so this was the moment to meet them in person. It was kind a weird, it felt a bit like finally meeting someone you got to know by one of the online flirt portals (not that I ever did something like that, but that&#8217;s how I would have imagined it <img src='http://osgi.mjahn.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ). You know the prejudice that Computer Scientists are all nerds and freaky to some extend, so this was really exciting. In short, I wasn&#8217;t disappointed &#8211; more the opposite! I haven&#8217;t met anyone I don&#8217;t like! Especially Richard Hall(Apache Felix lead),  Jan Rellermeyer(ETH Zuerich), Michael Keith(Oracle) and Jo Ritter(ProSyst) seam not only to be really nice guys, but are also very good speakers. So if you have the chance to attend one of their talks, it is worth attending!</p>
<p>Besides the talks of the already mentioned speakers, there were several other talks I like. Namely the talk of Hans Bossenbroek for Luminis, Jon Bostrom (MobiNoir Consulting) and of course the Key Note of Peter Kriens. To go deeper and talk about every single talk would just be too much for this post, but all the talks either gave me some good insights or were just fun to watch. Well done! I am more technical oriented, so unfortunately the first day wasn&#8217;t as interesting for me as the last one was, but I think this is the tradeoff of such an event.</p>
<p>Socializing wise speaking, this conference was pretty good as well. I talked to many interesting people and gained a lot of insight of the community. You can&#8217;t imagine how many companies are using OSGi for years now, but are just not talking about it. It is really impressive to see how far they have gone and what they have achieved with OSGi. I really think in the near future, we can expect to see many new areas, where OSGi will become the defacto standard.</p>
<p>Concerning the talk I gave on Wednesday, I just can say that I am more than happy with the feedback. The room was so packed that some people even had to stand, which didn&#8217;t really helped me with my nervousness <img src='http://osgi.mjahn.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  After my talk, I had the chance to talk to several people about security, their experiences and new ways how to tackle the problem I outlined during my presentation. I think, we are on a good way to come up with suitable solutions and I am looking forward to more interesting discussions. People are now starting to use the features OSGi is offering this will drive more, even better solutions, we will need for a broader adoption. Security is crucial and when we are finally starting to deploy multiple applications side by side in one OSGi container, we can&#8217;t longer assume that everyone is playing nice. We have to enforce security, that&#8217;s what we owe our customers/users. If you hadn&#8217;t time to talk to me during the conference or didn&#8217;t have the chance to attend the event and are also involved with similar problems I am more than happy to get in contact with you. Just drop me a mail. I think the more input we can get the better the solutions are, we can come up with. Of course, I&#8217;ll keep you posted how things develop along the way.</p>
<p>Till then &#8211; cheers,<br />
Mirko</p>
]]></content:encoded>
			<wfw:commentRss>http://osgi.mjahn.net/2008/06/12/osgi-community-event-my-personal-resume/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firefox dowload day</title>
		<link>http://osgi.mjahn.net/2008/06/07/firefox-dowload-day/</link>
		<comments>http://osgi.mjahn.net/2008/06/07/firefox-dowload-day/#comments</comments>
		<pubDate>Sat, 07 Jun 2008 15:09:04 +0000</pubDate>
		<dc:creator>Mirko Jahn</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[webbrowser]]></category>
		<category><![CDATA[world record]]></category>

		<guid isPermaLink="false">http://osgi.mjahn.net/?p=32</guid>
		<description><![CDATA[ This time it&#8217;ll be a very short post   I just want to support my favorite Webbrowser, which I use for years now and which has become my first program I usually install on a new computer. I hope this way I can give something back to the community.
The firefox team is currently [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.spreadfirefox.com/node&amp;id=0&amp;t=269" target="_blank"><img src="http://www.spreadfirefox.com/files/images/affiliates_banners/sns_badge1_en.png" border="0" alt="" /> </a>This time it&#8217;ll be a very short post <img src='http://osgi.mjahn.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  I just want to support my favorite Webbrowser, which I use for years now and which has become my first program I usually install on a new computer. I hope this way I can give something back to the community.</p>
<p>The firefox team is currently trying to get a Guinness World Record by the most downloads within one day. To accomplish this, they created a website collecting potential downloaders and coordinating the event. If you&#8217;re a supporter of firefox (or wanna to become on) and want to give something back (besides being part of a world record) you might consider registering. Of course giving away your e-mail-address credentials is always something that concerns me, but I actually trust these guys and just hope they are not doing anything stupid with my data.</p>
<p>Besides being part of the effort, I think the latest version of Firefox sports a lot of cool new features, which are just worth checking out. Even the latest beta of Firefox 3 is already great and you might wonna have a look at the <a title="external: Firefox 3 website" href="http://www.spreadfirefox.com/en-US/worldrecord/firefox3" target="_blank">features</a> it already provides. As far as I can tell, this version is already stable enough to give it a test drive. So give it a shoot and check it out!</p>
<p>Cheers,<br />
Mirko</p>
]]></content:encoded>
			<wfw:commentRss>http://osgi.mjahn.net/2008/06/07/firefox-dowload-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A little bit of talking at the OSGi Community Event</title>
		<link>http://osgi.mjahn.net/2008/06/03/a-little-bit-of-talking-at-the-osgi-community-event/</link>
		<comments>http://osgi.mjahn.net/2008/06/03/a-little-bit-of-talking-at-the-osgi-community-event/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 07:10:26 +0000</pubDate>
		<dc:creator>Mirko Jahn</dc:creator>
				<category><![CDATA[JSR 291]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Componentization]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://osgi.mjahn.net/?p=29</guid>
		<description><![CDATA[Two weeks ago I received great news. The proposal I committed with my fellow coworkers (Boris Terzic and Markus Gumbel) got accepted at the OSGi community event, so I hope I&#8217;ll see some of you I only met virtually till now. Concerning the topic &#8211; I think it&#8217;ll be interesting for all of you working [...]]]></description>
			<content:encoded><![CDATA[<p>Two weeks ago I received great news. The proposal I committed with my fellow coworkers (Boris Terzic and Markus Gumbel) got accepted at the OSGi community event, so I hope I&#8217;ll see some of you I only met virtually till now. Concerning the topic &#8211; I think it&#8217;ll be interesting for all of you working or at least intending to work with security and OSGi. Now, after I am allowed to talk about it, I will be able to share some of the experiences we gained.</p>
<p>In the talk titled &#8220;Do not disturb my circles! Secure Application Isolation with OSGi&#8221;<a href="#ref">[1]</a>, Markus Gumbel<a href="#ref">[2]</a>, and I are going to talk about how to isolate several application domains within one JVM &#8211; based on OSGi mechanisms. No big deal, some of you might say, but depending on your requirements, it actually might become a big deal or even serious issue. In our very case, we will face a Common Criteria(CC)<a href="#ref">[3]</a>, evaluation for our JVM based components (<a href="#ref">[4]</a>, gives a nice introduction on this topic &#8211; unfortunately only in German). But first things first&#8230;</p>
<p>InterComponentWare AG (ICW)<a href="#ref">[5]</a>,, the company I am working for right now, is one of the (if not the) leading eHealth provider in the business, with a wide ranging product portfolio. The core product is called LifeSensor<a href="#ref">[6]</a>,, which is an electronic health record like Google<a href="#ref">[7]</a>, and Microsoft<a href="#ref">[8]</a>, introduced recently in their first versions. If you, like me, are a little paranoid about privacy issues, I can recommend you &#8220;our&#8221; service for sure. We take security pretty serious and have a whole department dedicated to this. Medical data are always a big issue. Consider your CreditCard data is lost, you can get reimbursed from your CreditCard company, once the access to your medical data is compromised, it can&#8217;t be undone. Pretty serious from my point of view! Anyway, this is actually not where I am aiming at. We (and my group in particular) are involved in the implementation of the German Telematic  Infrastructure project specified by the Gematik<a href="#ref">[9]</a>, and commissioned by the German government.</p>
<p>In our talk, we will take the &#8220;Konnektor&#8221; we are developing as the sample application to illustrate the usage of the OSGi security features. The Konnektor (we use the Cisco AXP platform<a href="#ref">[10]</a>, underneath) is the key device deployed at every medical practice and pharmacy. It is responsible for creating secure connections to the telematic infrastructure back end, as well as other security relevant tasks like reading eHealthCards, signing prescriptions or uploading emergency data on the electronicHealthCards for instance. <a href="#ref">[11]</a>, gives a nice overview, how things are done in more detail. Additionally the specification allows to have third party applications to be deployed on the connector as well, to extend its functionality. A concrete example would be the integration of the LifeSenor mentioned above to directly upload your X-Ray images to your eHealthRecord.  You might understand, that security plays a very important role in such a scenario.</p>
<p>The key problem we are faced with is that the functionality of the Konnektor has to be certified according to the CC, which I mentioned at the beginning of this post. Well, certifying software in general is not easy, especially if you are talking about security and something as complex as we have. The real problem in our case however is not certifying that the software does exactly the stuff specified &#8211; no more, no less -, but also allowing third party &#8220;plug-ins&#8221; to extend its features without compromising its certified functionality or the security of the whole system. In a simple scenario, a doctor uploads a new &#8220;feature&#8221; from a malicious source to the Konnektor and we have to ensure beforehand that nothing serious can happen &#8211; tough one! Well, of course, we not only found a way, but also found a way using OSGi&#8217;s security features to do the trick even within the same JVM. The Konnektor and potentially dangerous third party extensions running side by side in the same JVM (of course, without restarting &#8211; there is a reason why we are using OSGi!).</p>
<p>Like every other cutting edge software project, we also found ourselves struggling with various problems no one has experience before and so I am pretty sure, we can contribute some important insights in the domain of secure OSGi application development.  I hope this will be as interesting for you as it is for me to work on this topic. It is really something you can&#8217;t find a lot published about, if someone has done something similar or knows about something, I would be happy to hear about it!</p>
<p>Although, the sample we chose is pretty unique domain wise, the basic techniques we will present are applicable in many different domains as well (banking, insurance, development, personal live style,&#8230;). Just think of your Eclipse installation. Right now, you install your plug-ins without a SecurityManager and hope that the plug-in only does what it is supposed to do&#8230; What if it doesn&#8217;t &#8211; or better doesn&#8217;t intend to play by the rules? I can see OSGi frameworks running as general platforms combining various different application in one JVM in the furture &#8211; a kind of a meta Operating System. As soon as this vision becomes reality, I don&#8217;t want applications being able to communicate without restrictions with each other. My health insurance provider together with my personal medical record manager in one container&#8230; you never know what an insurer might do, when they get a hold of your sensitive medical records. At least I certainly don&#8217;t want to try this out!</p>
<p>I realize that parts of this post might sound like a commercial. If so, this is certainly not intended, but I felt the need to explain in more detail than I will be able at the talk, why we did what we did and why this is so important. In the talk, we will stick to the technology only and avoid as much as possible any relation to a concrete product &#8211; I really hate talks pretending to point out new technologies or lessons learned, but actually trying to sell a product instead, so you&#8217;re safe here for sure!</p>
<p>For those of you attending the conference, don&#8217;t hesitate to talk to me, if you have any questions or just say hello. I was and certainly am a big fan of technical discussions. All of you who won&#8217;t be able to attend the event and interested in the topic, don&#8217;t worry, after the talk, I am certainly blogging more about this topic in the near future <img src='http://osgi.mjahn.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Till then, stay tuned!</p>
<p><a href="http://osgi.mjahn.net/wp-content/uploads/2008/05/ce08speakerlogo_finalsm.png"><img class="alignright size-full wp-image-30" title="ce08speakerlogo_finalsm" src="http://osgi.mjahn.net/wp-content/uploads/2008/05/ce08speakerlogo_finalsm.png" alt="" width="225" height="91" /></a></p>
<p>Cheers,<br />
Mirko</p>
<p><span style="color: #ff0000;">UPDATE:</span> the slides can be downloaded from the OSGi Website for everyone interested (<a title="external: pdf with the presentation slides" href="http://www.osgi.org/wiki/uploads/CommunityEvent2008/24_JahnGumbel.pdf" target="_blank">pdf</a>)</p>
<p>&#8211;</p>
<div id="ref">References:</div>
<p>[1] <a title="external: OSGi Community Event - Program" href="http://www.osgi.org/CommunityEvent/Program" target="_blank">http://www.osgi.org/CommunityEvent/Program</a><br />
[2] <a title="external: Speaker Dr. Markus Gumbel" href="http://www.osgi.org/CommunityEvent/Speakers#MG" target="_blank">http://www.osgi.org/CommunityEvent/Speakers#MG</a><br />
[3] <a title="external: Common Criteria Website" href="http://www.commoncriteriaportal.org" target="_blank">http://www.commoncriteriaportal.org<br />
</a>[4] <a title="external: BSI website about the Common Criteria (German)" href="http://www.bsi.bund.de/cc/" target="_blank">http://www.bsi.bund.de/cc/</a><br />
[5] <a title="external: InterComponentWare Website" href="http://www.icw-global.com" target="_blank">http://www.icw-global.com</a><br />
[6] <a title="external: LifeSensor Website" href="https://www.lifesensor.com" target="_blank">https://www.lifesensor.com</a><br />
[7] <a title="external: GoogleHealth" href="http://www.google.com/health" target="_blank">http://www.google.com/health</a><br />
[8] <a title="external: Microsofts HealthVault website" href="http://www.healthvault.com/" target="_blank">http://www.healthvault.com</a><br />
[9] <a title="external: Gematik website" href="http://www.gematik.de" target="_blank">http://www.gematik.de</a><br />
[10] <a title="external: Cisco AXP router" href="http://www.cisco.com/en/US/prod/routers/ps9701/axp_promo.html" target="_blank">http://www.cisco.com/en/US/prod/routers/ps9701/axp_promo.html</a><br />
[11] <a title="external: Cisco AXP with the ICW Box" href="http://www.cisco.com/en/US/prod/collateral/routers/ps9701/data_sheet_c02_459078.html" target="_blank">http://www.cisco.com/en/US/prod/collateral/routers/ps9701/data_sheet_c02_459078.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://osgi.mjahn.net/2008/06/03/a-little-bit-of-talking-at-the-osgi-community-event/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SpringSource Application Platform &#8211; the next step forward for OSGi?</title>
		<link>http://osgi.mjahn.net/2008/05/26/springsource-application-platform-the-next-step-forward-for-osgi/</link>
		<comments>http://osgi.mjahn.net/2008/05/26/springsource-application-platform-the-next-step-forward-for-osgi/#comments</comments>
		<pubDate>Mon, 26 May 2008 18:23:48 +0000</pubDate>
		<dc:creator>Mirko Jahn</dc:creator>
				<category><![CDATA[JSR 291]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[Componentization]]></category>
		<category><![CDATA[platform]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://osgi.mjahn.net/?p=27</guid>
		<description><![CDATA[At the beginning of this month[1], SpringSource published the first beta release of their so called SpringSource Application Platform[2], an (as I would call it) extension of the existing OSGi platform. The move came pretty surprising to me, I have to admit. No announcements prior to the release, no actual hints &#8211; nothing. Pretty impressive [...]]]></description>
			<content:encoded><![CDATA[<p>At the beginning of this month<a href="#ref">[1]</a>, SpringSource published the first beta release of their so called SpringSource Application Platform<a href="#ref">[2]</a>, an (as I would call it) extension of the existing OSGi platform. The move came pretty surprising to me, I have to admit. No announcements prior to the release, no actual hints &#8211; nothing. Pretty impressive I have to admit. A company grown that popular being able to work on something from this magnitude without even seeding the glimpse of a rumor. Good job.</p>
<p>Well, I guess eventually the guys behind Spring are trying to make money. A very natural thing for a company, of course. After having provided the community with a great framework for so many &#8220;supposed to be&#8221; JEE applications for free, it is time to gain some revenue. I think they deserve it after all they have done for the community. Actually I find it in particular interesting how the strategic move, choosing GPL<a href="#ref">[3]</a> as the license of choice, will work out. On the one hand, I can totally understand the point of view, choosing a license, which forces competitors to play with open cards and actually contribute to the community. On the other hand, I have to say, I am thinking twice before putting me in the hassle of dealing with a viral license. For instance, when I lately was involved in the decision between LOGBack<a href="#ref">[4]</a> and Log4j<a href="#ref">[5]</a> as a logging back end, the decision was not only based on features, but mostly licenses. In some scenarios, licenses are just a show stopper, so I honestly hope this will not be the case for my fellow colleagues from SpringSource.</p>
<p>Enough philosophizing&#8230; Spring released a very interesting extension to the existing OSGi specification. Summarizing all the new features they provide would certainly go beyond the scope of this blog, besides I am by far not as knowledgeable as the developers themselves, so I will just refer to their great introductions <a href="#ref">[6]</a>,<a href="#ref">[7]</a> and <a href="#ref">[8]</a>. Instead I want to point out some things I consider worth mentioning.</p>
<p>First of all, the repository<a href="#ref">[9]</a> is just great. With the experiences I&#8217;ve made by migrating existing applications into modular, OSGi based bundles, I can tell this can be pretty time consuming and frustrating, if done accurately (not just adding some headers to the <em>manifest.mf</em>, but also changing the existing code to work within OSGi where necessary).</p>
<p>The second thing I&#8217;d like to mention is two sided&#8230; On the one side, OSGi is missing another abstraction layer, I think. Defining full functional, domain modules to help people jump start in OSGi is needed &#8211; no getting lost in dozens of bundles, versions and services. I think all of you, working with OSGi for a while, have been faced with the problem, where you resolved and started every bundle appropriately, but your program will just not work, because you forgot to deploy the actual implementation of a service. Knowing your system, it won&#8217;t be a big thing finding the problem, but in a unfamiliar application with hundreds of bundles deployed and more potentially ready to be deployed from a repository, just waiting to be picked&#8230; which one is the one to choose? An abstraction &#8211; bundling those, as Spring has done it with its PAR &#8211; might help.</p>
<p>But, there is also another side to this story. Maybe all we need is some sort of indicator, a meta data to indicate, that a specific bundle provides/ consumes a distinct service? This will remove the provider lock-in problem caused by solutions like &#8220;Require-Bundle&#8221; for instance. All we actually need is a (in some way) abstract concept of a working entity (or application or domain module as you might prefer calling it), which is more abstract than usual bundles. This can just be the aggregation of certain packages and service consumers as well as providers. Only APIs, no actual implementation dependencies and for sure no Bundle-SymbolicName dependencies. An ideal application now would only consist of a couple of domain modules, which have to be deployed in the OSGi container. The container (with the help of the repository) now just picks the required bundles and assembles the application. No need to define a specific vendor, everything will be resolved by the framework. That would be my dream&#8230;</p>
<p>Anyway, I think this is something, which should be discussed in more detail in official sources. The approach Spring choose is certainly a way to go and test drive, but honestly, I doubt that it&#8217;ll turn out to be the right fit in the long run. All solutions I can think of, which were created to solve a certain pain are a serious burden and actual blocker in the long run, like Eclipse Buddy Class Loading, the OSGi Require-Bundle* header or the (unlimited) backwards compatibility required by the jar specification.</p>
<p>The last thing to mention is the introduction of the new headers. In general, I am all in favor of doing so and I am not surprised about the chosen names. Of course, they might clash with later headers, potentially introduced by the OSGi Consortium, but this is nothing new in Java. If you take a look around, developers as it seams, consider the reverse domain nomenclature as a burden and just ignore it. Even if it is now better established on a package level (although there are still rather well known exceptions like the IAIK<a href="#ref">[10]</a> or even Peter Kriens FileInstall<a href="#ref">[11]</a> bundle for instance). On a Manifest level however most of us (including myself) can pledge guilty of silently ignoring Java best practices. Unfortunately the magnitude of such a decision hunts you down later. The recent discussion about the name space issues of the OSGi headers, was the perfect reminder for me to give these small things more thorough thought, as we usually tend to liberately ignore them most of the time in favor of fast development. Well, at least I pledge betterment and hopefully so does every responsible developer, too <img src='http://osgi.mjahn.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Cheers,<br />
Mirko</p>
<p>*) Sorry, but I just can&#8217;t help it. In my opinion this header is not only a hurdle, but a real drawback from a componentization point of view. From a migration strategy approach, I guess the opposite applies, but what lasts longer &#8211; migration or maintenance?</p>
<p>&#8211;</p>
<div id="ref">References:</div>
<p>[1] <a title="external: Springsource News" href="http://www.springsource.com/web/guest/2008/applicationservermarket" target="_blank">http://www.springsource.com/web/guest/2008/applicationservermarket<br />
</a>[2] <a title="external: SpringSource Application Plattform" href="http://www.springsource.com/web/guest/products/suite/applicationplatform" target="_blank">http://www.springsource.com/web/guest/products/suite/applicationplatform</a><br />
[3] <a title="external: GPLv3" href="http://www.gnu.org/licenses/gpl.html" target="_blank">http://www.gnu.org/licenses/gpl.html</a><br />
[4] <a title="external: LOGBack" href="http://logback.qos.ch" target="_blank">http://logback.qos.ch</a><br />
[5] <a title="external: log4j Homepage" href="http://logging.apache.org/log4j" target="_blank">http://logging.apache.org/log4j</a><br />
[6] <a title="external: Glyn Normington's blog" href="http://underlap.blogspot.com/2008/04/springsource-application-platform-ships.html" target="_blank">http://underlap.blogspot.com/2008/04/springsource-application-platform-ships.html</a><br />
[7] <a title="external: Rob Harrop" href="http://blog.springsource.com/main/2008/04/30/introducing-the-springsource-application-platform/" target="_blank">http://blog.springsource.com/main/2008/04/30/introducing-the-springsource-<br />
application-platform</a><br />
[8] <a title="external: Adrian Colyers clarification" href="http://blog.springsource.com/main/2008/05/01/completing-the-picture-spring-osgi-and-the-springsource-application-platform/" target="_blank">http://blog.springsource.com/main/2008/05/01/completing-the-picture-spring-<br />
osgi-and-the-springsource-application-platform</a><br />
[9] <a title="external: SpringSource Component Repository" href="http://www.springsource.com/repository" target="_blank">http://www.springsource.com/repository</a><br />
[10] <a title="external: IAIK Website" href="http://jce.iaik.tugraz.at/" target="_blank">http://jce.iaik.tugraz.at</a><br />
[11] <a title="external: aQute Website" href="http://www.aqute.biz/Code/FileInstall" target="_blank">http://www.aqute.biz/Code/FileInstall</a></p>
]]></content:encoded>
			<wfw:commentRss>http://osgi.mjahn.net/2008/05/26/springsource-application-platform-the-next-step-forward-for-osgi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java on the iPhone</title>
		<link>http://osgi.mjahn.net/2008/03/10/java-on-the-iphone/</link>
		<comments>http://osgi.mjahn.net/2008/03/10/java-on-the-iphone/#comments</comments>
		<pubDate>Sun, 09 Mar 2008 23:38:03 +0000</pubDate>
		<dc:creator>Mirko Jahn</dc:creator>
				<category><![CDATA[JSR 291]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://osgi.mjahn.net/2008/03/10/java-on-the-iphone/</guid>
		<description><![CDATA[After revealing details of the new SDK for the iPhone last Thursday,  Sun  decided to develop a JVM for the iPhone after Apple showed no intention to do so. Well, for some of you, this is not much of a deal. Java is available on many mobile phones, why care about one more [...]]]></description>
			<content:encoded><![CDATA[<p>After revealing details of the new <a title="external: iPhone SDK" href="http://developer.apple.com/iphone/program/" target="_blank">SDK</a> for the iPhone last Thursday,  <a title="external: Suns decision to develop a JVM for the iPhone" href="http://www.infoworld.com/article/08/03/07/sun-iphone-java_1.html" target="_blank">Sun  decided</a> to develop a JVM for the iPhone after Apple showed no intention to do so. Well, for some of you, this is not much of a deal. Java is available on many mobile phones, why care about one more or less? From my point of view, this makes a huge difference. OSGi, actually developed to improve the mobile sector and fight the short comings of J2ME, never really succeeded due to the lack of computing resources like memory or CPU power on former cell phones. With the iPhone, things might change.</p>
<p><span id="more-17"></span>The iPhone is way more powerful than regular cell phones and provides a perfect platform for next generation mobile applications with its big display and the new intuitive user interface. Even better, with the <a title="external: embedded Rich Client Plattform Project Homepage" href="http://www.eclipse.org/ercp/" target="_blank">eRCP</a> project, Java already has a simple framework foundation for mobile applications and together with native GUI support thanks to eSWT, performance and usability should no longer be an issue. I haven&#8217;t heard about any plans to provide eSWT support for the iPhone yet though, but as soon as Sun provides a JVM at the end of June, I guess it is just a matter of time &#8211; at least I really hope for it!</p>
<p>Going back in time one can say that Sun missed the opportunity to conquer the mobile market. Java is deployed on millions of devices, but real business only a few companies managed to do with it. Now, with a powerful phone, technologies like OSGi, eRCP and native eSWT widgets, I am really curious how Java competes against <a title="external: Google's Android Homepage" href="http://code.google.com/android/" target="_blank">Google&#8217;s Android</a>. The newcomer against the old-timer, does a wealth of experience and a lively community stand against a giant with the wind of fortune and the hype of the brand in its sails? I guess, there is a good chance for Java and I really hope to see my Java applications running on an iPhone, but that&#8217;s a different story. Maybe in a few years my dream comes true and mobile phones no longer need a Java light aka J2ME any more, but will ship with a full blown JSE. So every jPhone ehm, I mean iPhone is sold with Java on board.</p>
]]></content:encoded>
			<wfw:commentRss>http://osgi.mjahn.net/2008/03/10/java-on-the-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
