78
July 1999/Vol. 42, No. 7
COMMUNICATIONSOF THE ACM
based network should be able to add or remove mem-ber components without having to update othermember components in the network community.Further, the way these components communicate with one another had to be able to change over time. A final goal for Jini’s designers was imposed by thesize of today’s networks and how rapidly they aregrowing. If we have all the embedded systems thatcould possibly be given access to a network as part of our system, Jini technology has to be able to scale tolevels previously unthought of. (The specifications forthe Jini system, along with the source code for the ref-erence implementation, are at www.sun.com/jini.)
A Simple Set of Conventions
Jini technology is not a distributed operating system (inthe traditional sense) or an application. It is, in a classicsense, a system defining a small, simple set of conven-tions that allows services and clients to form a flexibledistributed system that can change easily over time. We separated the system’s various components intothe infrastructure, the program-ming model, and the clients andservices themselves. While each of these components is logically independent, together they canuse one another to make an over-all system that is more flexible andreliable than the sum of its parts.Each component of the Jinisystem can be viewed as a logicalextension of the Java languagesystem to the fully distributedcase [1, 3] (see Figure 1). The Jiniinfrastructure is built on the JavaRemote Method Invocation sys-tem, which has been part of the Java platform since the release of Java 1.1 in January 1997 [12].On top of this base, Jini adds tothe infrastructure two compo-nents: the discovery protocol, which allows an entity wishing to join a Jini network to find a lookup ser-vice, and the lookup service, which acts as a place where services advertise themselves and clients go tofind a service.The Jini programming model consists of three setsof interfaces meant to extend the usual single virtualmachine programming model at the core Java pro-gramming libraries to allow the connection of dis-tributed objects in robust ways. One set of interfacesdefines a distributed event model that is an extensionof the standard Java event model in Java Beans [7]. A second set of interfaces enables a two-phase-commitprotocol—a simplified distributed version of thetransaction model in the Java transaction service [8].Finally, there is a set of interfaces and classes thatdefine the notion of leasing, developed specifically forproblems in resource allocation and reclamation indistributed systems.The Jini system’s services and the clients that usethem are open-ended; the services offered depend onthe Jini federation—the informal group of clients andservices that use the Jini-defined interaction pat-terns—in question and the time one happens to belooking at the federation. The other parts of the sys-tem aid in offering and finding these services. The vastrange of services that can live in the system includeshardware implementations of Jini interfaces, softwareservices that act as distributed components, and hard- ware/software combinations.
Jini and Java
The Jini system is Java-centric—because it builds onthe existing Java environment and because it requires
Figure 1. Jini system structure, including itsrelationship with the Java language.
ServicesInfrastructure Java Jini
Java virtual machine Java RemoteMethodInvocationDiscoveryLookup serviceLeasingTransactionsDistributed events JavaSpacesTransaction managerEnterprise Java Beans Java naming anddirectory services Java transaction serviceBeansSwing graphicstoolkit
ProgrammingModelLets objects findand communicate with one anotherEverything elseis a serviceAdds simple APIsfor remoteobjects andbasic distributedcomputing Jini serviceLookup service
Figure 2. Jini stores theproxy for a service in the Lookup serviceas part of registration
Discovery requestDiscovery responseService registration
Serviceproxyobject
Leave a Comment