Will Jini grant Sun's wish?

Sun Microsystems has a vision for network computing in the next century, and the technology Sun hopes will make this dream a reality is called Jini. Sean Dugan investigates its possibilities of success.

Jini - Java code that automatically discovers computer devices on the network and then registers their services - a key part of a broader architecture to distribute operating system services across the network.

In more prosaic terms, Jini is a piece of Java software that runs on top of Java virtual machines (JVMs) and gives devices plug-and-play network functionality. Sun dreams of a future in which any device with a processor and a little RAM will interoperate with its peers to scale new heights of computing. It's a heady vision, but at the very least, we might be one step closer to a future free of device-driver disorder and network log-in hassles.

For example, in Sun's bold new world, a user will be able to plug a PalmPilot into a network socket and instantly be recognised, automatically becoming part of the network. With such a handheld device, the user will be able to access data easily on one computer and use the services of another computer to translate that data. The user will then be able to print out the data on the nearest printer, without pre-loading the printer drivers on the PalmPilot. This magic is accomplished when the Pilot automatically downloads a Java-based printer driver. And this automatic and easy integration with the network and its applications will apply to virtually any electronic device, from PCs to cellular phones.

This concept of a distributed computing architecture is hardly something new, or even that original. Competing ideas are being pursued by Lucent Technologies with its Inferno technology, IBM with its T Space project, and Oak Ridge National Laboratory with its Parallel Virtual Machine project. Microsoft also has ambitious plans for a distributed operating system, called Project Millennium.

Unique position

With its Java programming language and virtual platform, though, Sun is in a unique position to drive operating systems into the next century. However, the company has a considerable journey ahead if it is to turn a vibrant dream with a specification into a significant paradigm shift in computing. It's too early to determine its potential impact, but Jini holds great promise for reducing network-administration problems and possibly creating a whole new class of powerful applications.

How it works. Jini is a Java infrastructure for networks that allows devices and applications to automatically join a network and offer their services across that network. Jini does not resolve all of the details of how a particular application will function across the network, but rather it provides the crucial capability for those services to be aware of each other and make a connection.

At Jini's core is the Java Remote Method Invocation (RMI) from Sun's JDK 1.2, the networking services that let Java objects interact with each other across the wire. In this way, Jini is a conceptual and practical extension of Enterprise JavaBeans, the component software model of Java.

A Jini network is similar to a large bazaar where merchants hock their wares. The merchants, in a Jini network, might be end users, devices, or applications. A new merchant enters the bazaar, announces his arrival, and quickly sets up shop. He then writes down the services and goods he has to offer and posts them on a large bulletin board, along with dozens of similar cards from other merchants. Jini provides the mechanism by which merchants are granted space in the bazaar and can post their messages on the bulletin board.

Prospective customers look on the bulletin board for a card that lists services matching their needs, then copy the directions to the merchant from the card. Each customer then haggles over service particulars with the merchant, such as "how long" and "how much". The rules by which merchants actually perform their services is dictated by another Sun specification, JavaSpaces.

In this bazaar, the merchants are free to trade among themselves. The customer, who needs to have his horse shod, doesn't care that the farrier has conducted a transaction with the blacksmith for some iron horseshoes, or that the blacksmith conducted a transaction with the iron miner. It's all invisible to the customer who just wants to ride his horse.

Jini is, however, considerably more flexible than this metaphor implies. Messages can't be stolen off the bulletin board and physical space isn't a concern. However, certain problems are inherent to this virtual bazaar. These merchants have no judgement and need rules to establish who can use their services. Additional rules are needed to take into account that a merchant, might suddenly wink out of existence, thanks to a network failure.

The bazaar itself, the collection of merchants and consumers, is called a "federation" in Jini lingo. Jini assigns space in the federation via its Discovery and Join Service. The Lookup Service posts offers to the bulletin board and receives requests for transactions. The Leasing model spells out the guidelines for how "cards" are removed from the board and contracts are set up. Who may use a particular service is spelled out by that service's Access Control List. How services are offered and rendered is established by JavaSpaces, as well as by the actual application. The common language the merchants use to communicate with each other is provided by Java's RMI specification.

Together, Jini and JavaSpaces represent a shift away from current system services that work on a centralised model: system services are administered from a single point, usually the operating system. An operating system, though, is really a collection of smaller subfunctions. The OS performs multiple duties, such as cleaning up garbage, directing traffic, assigning tasks, and establishing who gets priority over others.

Jini, combined with JavaSpaces, breaks away from this monolithic model and distributes services across parts of the network, essentially breaking the OS into separate subsystems and then scattering them across the network, clients, and servers.

Jini is the crucial first step for the Java infrastructure that achieves this distributed cooperation. Due to Java's object-oriented nature and capability of executing portable code, Jini distributes a variety of software objects across the network. These discrete applications, or objects, can be moved across the network to interact with other objects, based on the needs of users.

The enterprise role. Both Jini and distributed systems in general hold a lot of promise for the enterprise by greatly reducing the complexity of network interactions. Many organisations find themselves supporting a wide variety of computing devices, including PCs, printers, handheld devices, cell phones, and servers, which creates huge headaches for IT. If a printer goes down, suddenly all network users need to change their workstations' printing settings. Jini gets to the heart of problems by automatically recognising changes to the network and letting users invisibly move code, such as a new printer driver, around the network.

The dream of Jini also creates the possibility for new kinds of business transactions, such as leasing hard-drive space from huge arrays. Sun hopes that in the future, new business models will grow up around the inherent flexibility of Jini-based networks. As companies continue to investigate new revenue streams, Jini might provide the necessary infrastructure to make all that computing hardware pay off in ways nobody has considered.

There's little doubt that distributed system technologies, such as Jini, will be a major force in the next decade. The massive proliferation of networks begs for decentralised services. This myriad of computers, in all of their various form factors, connected by reasonably fast networks, provides serious computing muscle for distributed systems.

Dream of Jini

However, Jini applications are still more fantasy than reality. You can't expect to run down to the store, buy a shrink-wrapped box, and toss Jini on the network. Currently, Jini is little more than a basic tool that lets developers write applications that better leverage the network and its resources. Therefore, developers will need to get up to speed on Jini and write applications that make use of the specification's capabilities.

The question remains: how difficult will it be for Jini to evolve out of the research and development stage into real working products that have an impact?

Jini's guts are, not surprisingly, Java. The goal of distributing services across a network and multiple computers is right up Java's alley. The basic infrastructure uses the Java RMI and object-oriented programming. So although some aspects of Jini implementation will be very straightforward for Java and object-oriented programmers, coding a distributed application is considerably more complicated than an equivalent monolithic application.

Although Jini and JavaSpaces provide distributed security models and object processing, it will take a big leap for today's developers to embrace distributed applications and services. Like so many computer problems, it will boil down to a training and education issue, because developers will need to learn how to build robust distributed applications.

There are some very encouraging signs, though. Sun has created partnerships with companies such as Quantum and Ericsson, both of which are said to be using the technology. Also, Novell is reportedly looking at creating directory services for Jini. Although the big players aren't making any promises right now, one lesser-known company has hit the ground running. A Malaysian company, Datek, is releasing a suite of Jini and Java enterprise resource planning tools called Madura.

Sun wants to make Jini ubiquitous as quickly as possible. Therefore, Sun is promising that Jini will be open-source software, similar to GNU Linux or Apache, to allow Java hackers to tweak and improve the code.

Jini, in many ways, could render most traditional operating systems obsolete. Not surprisingly, companies such as Microsoft are working on their own distributed computing systems. For the time being, Jini holds an advantageous position. For Java developers, they will already be familiar with many of Jini's particulars. And with the proliferation of JVMs, Jini should operate and integrate with a large variety of environments. Although there's no shortage of distributed systems in the works, it's a smart bet that either Sun or Microsoft will define the distributed operating environment standard. Jini builds on Java momentum and mind share, while Microsoft has control over the current standard for OSs.

Jini represents the early stirrings of a broad and significant shift in computing. Powerful applications and systems will better leverage network resources, using dispersed resources to process large problems. But it will be years before this dream starts creeping into reality. In the near term, though, Jini holds a lot of promise for resolving interoperability conflicts in today's networks and making device-driver problems a thing of the past.

Jini at a glance

Jini is a crucial step toward large-scale distributed computing. Although aimed at easing network compatibility problems, Jini is far more exciting for its promise to allow computing devices and applications to efficiently interact and cooperate with each other across a network.

Jini reduces network hassles by giving plug-and-play capabilities to a wide range of devices such as PCs, handhelds, or cell phones; small 48Kb footprint; leverages Java's strengths as an object-oriented language.

On the down side, Jini will require a lot of work by developers before Jini networks are realised; challenging for developers to write distributed applications.