Note: is in rebuild. Please accept my apologies for broken links, missing stuff, etcetera - more

Jini Revisited

Last week's newsletter brought me quite a bit of feedback from people who are monitoring what is happening around Jini, but aren't using it (yet). The picture I got is that Sun's marketing did succeed in creating a lot of hype, but not in creating a lot of clarity. Similar systems like Universal Plug-and-Play or Salutation aren't exactly going through great lengths to bring you a clearer picture, so I will try to position Jini this week.

The questions most frequently asked by people who are interested in Jini is probably: "what's the difference between Jini and system X?". Fortunately, the answer is simple: Java. Jini assumes that a Java virtual machine is present at every node in the network, and therefore can do extremely powerful things simply by bringing code to the place where it is needed. Most other systems assume a more heterogeneous environment, and therefore necessarily forego the luxury of a universal computing platform.

This difference takes the benefits of spontaneous networking one level higher. Not only can you stop worrying about whether system A knows about system B, but you can even stop worrying about whether system A has all the code to talk to system B - all the pieces will cooperate to make sure that when A needs to talk to B, it receives the code to do so. And in order to find B, you don't need to obtain an arbitrary string from an administrator, because Jini registers services under their interfaces these are Java types, and just as you expect in an object-oriented environment, you can search for a type and get a subtype back.

Here is the whole power of Jini: the package deal with Java. Java was designed to make mobile code possible, in a secure way. RMI, Java's native remote procedure calling protocol, has most of the building blocks in place to make code transportation over the network a reality. Jini "just" adds a minimal set of distribution tools, like leasing, lookup-by-type, transactions, an event mechanism, and the discovery of certain services without needing prior knowledge of their location. Some of these are also provided by the other systems, but having code flow over the network makes a big difference - more on that in the coming weeks.

Copyright (C)2000-2011 Cees de Groot -- All rights reserved.