On 2/12/2011 7:10 AM, Niclas Hedhman wrote:
On Sat, Feb 12, 2011 at 8:41 PM, Mike McGrady
<mmcgr...@topiatechnology.com>  wrote:
Isn't OSGi now distributed?  See Fuse 4.0.

OSGi has a specification for remote services and how to express
capabilities vs requirements, but the actual transport as such is left
out, and it hooks into new APIs that the framework has to expose to
intercept lookup and registration of services.
Do, yes, what I mention is part of the OSGi scope, but since the River
community has decided to not work together with OSGi (I think I
brought that up first time in 2006 or so), similar functionality
should be part of Jini. Java is no longer a "single platform", as it
was in 1999 when Jini came about.
Byte codes is another example of 'service proxy selection' constraints
that come to mind. Native code could be another. Security permissions
should probably also be 'advertised' in advanced. I think all this
need to be speced out, for River to become interoperable, as Jini once
promised.

So, I think the actual problem is not that it can't be done, or that
people are not doing it, but Jini's failure initially (IMHO) was the
lack of interoperbility enablers,  that there were no standards on
top.

The only difference between Jini and existing technologies such as DNS for lookup, and SOAP/CORBA/Whatever for interchanging information is ... Mobile Code. In order for there to be "mobile code", there has to be a "platform standard." For Jini, that platform is the JVM. You can't send code around between machines without some kind of "standard runtime environment."

If you don't understand/need mobile code as a solution to "correct, continuous integration", then yes, you'll look at Jini and say "It does exactly what I already can do, why would I use it?"

The reason why HTML and then Javascript and other browser processed, "language based technologies" are successful today, is because people accepted them as practical solutions.

What happened is that people considered Java more of an "OS choice" or "OS Vendor Choice" instead of as a "network application platform." The whole MS vs Sun and the silly Sun anti MS banter (in an open world, why do we need Gates etc) just fueled the fire and made people have to draw a line in the sand and choose one vs the other it seems to me.

> People spoke of "there could be a Printer interface" but no one
said "This is the base Printer interface, and extensions to it is made
in this way...".

What happened was that a bunch of printer vendors did in fact try and create a printing standard. It was going strong for quite some time. But, eventually, it all came down to the disaster of JDK 1.2 that made using Java on a printer not an option. JDK1.2 was so unusable as to make nearly all essential applications feel like windows.

Sun and its top level people apologized profusely at the onset of JDK1.3 for the mistakes of the 1.2 "releases".

And one starting point is the "environment", the first stepping stone
of requirements vs capabilities matching...

That environment, which specifies all requirements and capabilites is "the JVM" as a starting point. After that, it is necessary, from a deployment perspective for all JVM based software, to manage the JMM, JVM and JLS requirements for your needs.

What is happening now with the movement away from 1.4, is no different from what happened when 1.1 and 1.2 and 1.3 disappeared from availability with the release of Jini 2.0 which required JDK/JLS 1.4 features.

Jini together with Java can provide an excellent distributed networking application platform. But, you have to understand when the "excellence" comes from in order to appreciate it, and as hard nosed as it sounds, there's nothing that Jini needs to do to work with other technologies. Instead, there are interface points now which exist because of JERI to do things very close to the client and server instead of having to add a tier into your application environment. The invocation layer allows you to send an endpoint implementation to a Jini client that can talk directly to other technologies which can be downloaded and ran in such a JVM.

From the other perspective, a DNS-SD or SOAP or other interface point can be built into any application, and a Jini service can "lookup" those implementations with the appropriate technology discoveries, and then provide proxies that are register in the ServiceRegistrar implementation available to provide a gateway "service" between other Jini services and these non-jini-technology based services.

The larger issue is that this hasn't been done, yet. The practical reason, is that a vast majority of people using any one of the other technologies feel no reason for Jini, because they are perhaps ignorant of the convincing facts, or they have "other ways" to deal with the problems, and are content to just "do that".

I'm pretty much able to go on and on about how all the interactions are all pretty much already possible, you just have to want to do it. There are bugs, and there are some "missing features" for some cases I'm sure. But, the basic design of what is already in River provides a huge amount of capability for "integration" and "inter-working".

Niclas, I'd really like to here about very specific issues and cases which you feel you "can't do today" from a "technology" perspective so that I can understand where the gap is between what exists today and what you want Jini to do in your environment/for your needs.

Gregg Wonderly

Reply via email to