The Definitive Guide to Jini Packages and Objectives

The first place to look for specific clarification, not a tutorial or guide, but critical for any potential Jini developer.


Few technologies are as likely to impact the world of Internet computing as much as Sun’s Jini solution. Based on a vision of spontaneous networking, Jini brings with it a supporting infrastructure for service lookup and discovery, resource leasing, an innovative object attribute database, transactions and more. While Jini offers a fresh look at distributed computing with an elegant, distilled programming model, it demands from the programmer an understanding that is not grounded in familiar notions. The Jini specification does a remarkable job of articulating the elements and principles behind these critical ideas, a must-read for any programmer contemplating the development of Jini services.

The book is divided into three parts. Part I provides an overview, with a quick look at what it means to write a client and a service in Jini, closing with an quick map to the rest of the book. These four chapters provide a nice preview of what it means to write Jini services, with a look at how you might use them. The client and service explored in this part of the book are a simple, but non-trivial chat program, with plenty of code and a solid walkthrough that points out the key points with respectable clarity.

Part II is the crux of the specification itself, exploring each of the Jini architecture, discovery and join protocol, discovery utilities, the Entry specification, distributed leasing and events, transactions, the lookup service, attribute schemas, JavaSpaces and device architecture. Jini depends on services that announce their existence by registering proxy objects in one or more discovered lookup services. These typed objects can then be found by any client, dynamically and spontaneously, as needed. These chapters elaborate on the exact nature of the various Java packages in the Jini architecture. They represent the definitive specification of what you can expect from the Jini classes and interfaces, with useful information on precisely what they are intended to do.

Part III closes the book with a pair of interesting appendices. Appendix A is a white paper about distributed computing that tries to put the new paradigm into perspective. Some of the things Jini’s designers have to say with strike many as controversial and this write-up is intended to clarify their position. The reasoning is sound and enlightening, serving the reader well by forcing us to think about ideas we’ve accepted, possibly too easily, in the past. Appendix B collects the example code from the specification into a single set of reference pages for convenience.

Without a doubt, Jini will impact the world of networked computing in ways we cannot anticipate. If you intend to be part of this revolution, you need to get the story from the originators. Nothing else can ground you in the fundamentals. Reading other Jini books may be important, but if you read only one, this is the one you need, to gain a true understanding of the elements in this architecture. This is not a book with a lot of examples. Nor is it very good at helping you sort out how to set up a Jini development environment. If you plan to do Jini development or you just need to understand how it works, buy this book, and make it the first read on your list.