Sun's magic lamp

Why innovative Java developers should learn and use Jini -- now

Introduced by Sun Microsystems in January 1999, Jini is already being embraced by a wide variety of industry leaders and computer hardware and consumer device vendors. Nowhere has this been more evident than at the recent JavaOne Developer Conference in San Francisco.

What is Jini?

Jini is an entirely Java-based architecture that enables services and clients -- computer hardware, peripherals, software, consumer devices, and communication channels -- to be easily added, removed, employed, and modified over a network. Jini, in fact, spontaneously constructs an abstract network, called a federation, of these services and organizes them with a dynamic lookup service, which is itself stored on the network.

You can find an excellent and detailed introduction to Jini in the first installment of Bill Venners's new column, Jiniology, in the June issue of JavaWorld.

Joy's brief history of computing

Prior to JavaOne, Sun sponsored two days of "Java 101 University" classes and sessions. Bill Joy, Sun's cofounder, chief scientist, and CEO, spoke extensively -- in presentations to the course attendees as well as to a small group of media representatives -- about why Jini is so important to Java developers and Java users.

Joy first explained his view of the progression of the computer revolution. According to Joy, the first major step in bringing computing technology to the world occurred when small computing devices -- chips -- were first enabled to fit onto circuit boards in personal computers (circa 1978). He pointed out that programming languages from that time on specialized in instructing personal computers and, subsequently, networks of personal computers. Programmers developed and used a series of increasingly robust and object-oriented programming languages until, according to Joy, they hit a wall with C and C++. These languages were inadequate for programming to and from different devices in a simple and easy manner. Then, as we all know, Java was developed, bringing with it the potential to solve a wide variety of programming and systematic problems.

If you think of programming instructions as a series of light switches, Joy explained, Java is able to fully describe these switches through its own language semantics. Java also provides better security within applications and services. Even Java, however, is limited when it comes to networked systems. A client can connect to the network through Java, but objects, services, and clients are "always in a state of flux," said Joy. Jini addresses this problem with its inherent design: an architecture of distributed system technology.

Joy on Jini

Boiling down the concept of Jini and distributed technology to its simplest form, Joy used the following analogy: "Jini is like having money. Jini lets me exchange descriptions of services in an active way." Put another way, Joy said, "Jini is a horizontal layer [interfacing with all of the services]. We designed it to be as thin as possible. Most of the value will be in vertical stripes above it.

Jini versus plug-and-play

So far, Jini sounds impressive, but why not just continue down the universal plug-and-play route? Joy explained why Jini is a far better alternative.

"Universal plug-and-play is not a robust system. It crashes," he said. "There's a whole department at Microsoft of programmers designing embedded devices. Universal plug-and-play is just a piece of Windows. It doesn't really work for me. Java and Jini, on the other hand, run on layers underneath the application layer."

Why is this important? Joy pointed out the fundamental design problem in the plug-and-play approach. "Drivers come neither on a hardware system nor on an operating system [OS], so you can have two of the same boxes, the same OSs, the same everything, but plug it all together and it doesn't work. It's not designed in a way that's modular."

Explaining the advantage of Jini over plug-and-play, Joy said, "Jini and Java are designed with well-understood properties so that when you put them together, they do what you expect them to." When constructing a building, Joy added, the construction crew looks to the architectural plans for the edifice's layout and materials. Whether in the design of a building or the design of a network, what needs to be accomplished is clear in the specifications.

The birth of Jini

Jini didn't happen overnight. "Jini reflects almost five years of work from Sun," said Joy, "standing on top of twenty years of research." Joy described five distinct areas of research and development that led to Jini:

  1. The development and implementation of Remote Method Invocation (RMI) and related remote objects: RMI alone can fail, but it works very well within the Jini architecture.
  2. Object and information storage: In a distributed world, information and objects aren't stored forever -- they inherently require a limited amount of time in any service. Figuring out how to store information and objects, without the danger of corruption, for a limited time in a service is key to a good distributed architecture because it saves massive amounts of resources.
  3. Transactions: While transactions themselves change all the time, the methods of transaction are inflexible. A good dynamic transaction system must allow for immediate changes to its own methods.
  4. Distributed events: What is considered a logical order of events for one client, service, or person isn't necessarily a logical order for another.
  5. Distributed security: This is obviously a vital piece of Java technology. Good security enables trust, and the trust of developers is a big part of Java's success.

Joy pointed out that Jini resolved and brought together all these areas of Java.

The Jini community

Sun's approach to developing and refining Jini is a lot like Jini's own architecture. The company heavily promotes the Jini community, whose Web presence lives at (see Resources). Sun considers itself a facilitator of the community, promoting cooperation among vendors who usually compete with each other. Going back to his money example, Joy used Jini itself as an analogy for the Jini community: "Instead of exchanging money," he said, "exchange objects." In an atmosphere of cooperation, developers and vendors could "agree on an object-exchange mechanism."

The difference between the Jini development community and the original Java development community reflects the difference between Jini and Java.

Joy continued, "The model [of the Jini community] is a self-organizing, community-based model -- instead of [the development model of] Java, which was more based on contracts." To the audience's delight, Joy added, "And some people don't believe that contracts apply to them."

Joy, and others in the Jini community, are hopeful about the democratic nature of Jini development. After all, this approach worked extremely well for other open development communities, such as Linux, Apache, Perl, XML, and even the popular Palm organizer.

Jini developers outside of Sun

At JavaOne, I attended the Jini Community Roundtable, moderated by Dick Gabriel, Jini lead engineer and distinguished engineer at Sun's computer science lab.

The panel reflected the diverse potential of Jini. Warren Stringer, founder of Muse (see Resources), believes in using Jini to promote interactivity among creative people. Nick Burke, design engineer at Quantum Corp., is mostly interested in using Jini on storage devices and tape drives, because he sees smaller chips containing more information and "networks infiltrating everything" as the future of this market. David Kuntz, alliances manager in the Network Peripheral Solutions Division of Hewlett-Packard (HP), talked about a similar objective: using Jini's "simple-to-connect-to-device" technology in HP JetDirect print services.

Perhaps the objectives of Stephen Drye, staff engineer at Ericsson New Concepts, represent the most talked-about potential of Jini: developing smart, limited-memory consumer devices that use Jini to effectively identify and manage hardware -- say, to print directly from a personal digital assistant to a fax machine without going through an intermediate computer.

Sylvia Scheuring, president and CEO of Sylent, sees Jini as a way to better deliver customized content to individuals through personalized filters. This content can be fully integrated with other types of services, such as financial transactions for e-commerce. Best of all, Scheuring said, good Java developers can build Jini services at home, because there's no longer a need to manage a development team around the immediate vicinity of a local area network.

It's a snap to learn Jini

Java developers need not sigh heavily and throw up their hands at the thought of learning yet another type of technology. Apparently, Jini's design is so elegant that it can be learned -- and implemented -- very quickly. Joy claimed that a Java programmer could learn Jini in a day.

Of course, Joy is a smart guy; no doubt he has the capacity to comprehend stuff more quickly than the rest of us. But according to everyone at the Jini Community Roundtable, a midlevel or even a junior Java programmer could learn Jini in a week or less. Scheuring went on to say that the only obstacle to fully learning Jini is "self-limiting"; that is, learning what is even possible to do with it. The panelists agreed that learning what's possible with Jini after a basic understanding takes four to five months.

An 11-year veteran of the Internet and former Internet technology consultant, Mariva H. Aviram is an independent writer covering the high-tech industry. Mariva's published works include articles in c|net, JavaWorld, NetscapeWorld (including developing and writing the "Webmaster Q&A" column), and InfoWorld. Mariva is also the author of XML For Dummies Quick Reference and Palm Computing for Dummies Quick Reference (publication pending). For more information, visit

Learn more about this topic