Summary
There is a raging debate about OSGi and Jini, yet again. Which isn't necessary or helpful. The two technologies are very different applications of similar design philosophies, and should not be seen as competitors.
Advertisement
I recently ran into a surprisingly
reasoned piece on a
controversy I had hoped had died down long ago, namely that between Jini and
OSGi. I had been ignoring the discussion within the Jini community, hoping it
might be simply local or just go away. But seeing someone be reasonable gave
me hope that it might be time to think about these things in a clear way for a change.
People would be amazed at how long this discussion has been going on. My
first encounter with it happened just before we announced Jini to the world,
and was an attempt to make sense of the two technologies with the group that
was working on OGSi within Sun. The manager of that group was a guy by the
name of Jonathan Schwartz (I
wonder what ever became of him?), but the questions were the same that we
are seeing now. Jini is a service architecture. OSGi is a service
architecture. Both have ways of dealing with services written in Java. So
why are their two?
This, of course, is a classic example of what I have called
the Highlander Fallacy, which briefly stated is the principle that
there can be only one. If any two technologies can be described using the
same set of words, then there is no need for both of them, and only one will
survive. I call this a fallacy because, to use a technical term, it is
total crap. Certainly, there are cases where there are two technologies that
are described using the same words where the two technologies actually do
the same thing in the same context with the same requirements and the same
restrictions. In such cases, having two may be one too many.
But far more often the two technologies are described using the same words
because the English language (or any other that I know about) allows very
different things to be described using the same terms. Descriptions, after
all, have to elide a lot of the detail, and it is often in the detail that
the distinctions are to be found. The shorter the description, the more
detail is elided. A description like X is a service architecture is so
short that almost all of the meaning is elided. There are going to be lots
of different technologies that fit this description but that are different
enough in the elided parts to make it worthwhile to know, and use, them all.
In fact, OSGi and Jini are service architectures built for completely
different contexts. OSGi is a service architecture for services that are
in the same address space. It allows you to build programs out of
cooperating services. And for that sort of thing, it is pretty good.
Jini is a service architecture for distributed systems that are built out of
services that are separated by a network. And the network is a very
different environment from the single virtual machine (my one real issue
with Peter Kriens' blog is that he identifies Bill Joy as the one who
first insisted that the distributed system is different from the local
system; in fact it was either Peter Deutsch as part of the Seven Fallacies
paper or it was Ann Wollrath, Geoff Wyant, Sam Kendall and me in our
paper A
Note on Distributed Computing). So in fact the two are not competitors,
but rather applications of many of the same design principles to fractally
similar but otherwise very different problems.
Even Jonathan Schwartz was able to understand this over a decade ago. You
would think that the engineers involved in this debate would be able to
figure it out by now...
The reason I mentioned Billy Joy wrt distributed computing problems was his insight in using an unreliable network and solving the problem at the end points. I agree that your links are probably better wrt to the implied claim.
Anyway, I assume this whole blog is a reference to my blog at <a href="http://www.aqute.biz/Blog/2007-04-05">blog</a>, I could not see a link?
What an excellent post, I was trying to make sense of OSGi's relation to other Java initiatives in the enterprise, and I actually encountered this post on OSGi and Jini. Both seem like a natural fit, with Jini serving as an extension for OGGi distributed scenarios(More on this at the end).
I also think a remarkable part of this entry was "OGSi within Sun. The manager of that group was a guy by the name of Jonathan Schwartz", Wow that must of being some time ago, but has OSGi's focus inside Sun died down ? OSGi and Jini seem like a natural fit, not to mention OSGi is getting a lot of attention from other Java vendors.
Since Peter Kriens is also posting in this thread, I'll link to his <a href="http://www.osgi.org/blog/2007/07/can-someone-tell-sun-about-osgi.html"> ; Can Someone Tell Sun About OSGi? </a>, which points to some other Java vendors focusing on OSGi.
And BTW, regarding the OSGi/Jini combination, I have only seen one attempt at leveraging the two, its an open source project named <a href="http://newton.codecauldron.org/"> Newton </a> which tosses in SCA(Service Component Architecture) for creating the composites, OSGi for wiring them up locally and Jini for distributed cases.