Ad Hoc Networking
Three Tier Patterns
The Jini Pattern Language
Workshop at OOPSLA 2000 on Sunday, 15 October 2000
Agenda with downloadable presentations
This workshop will attempt to identify the patterns and pattern language
embodied by Jini Technology . This pattern
language will then be used to propose an architecture that can be used to
implement Jini-like frameworks using technologies other than Java. This workshop
is valuable to OOPSLA participants since it will document and improve
architectural concepts in the form of patterns and their resulting pattern
languages in the context of Jini. Such patterns and pattern languages are
useful to describe key technologies, such as ad hoc networking, as
well as key concepts, such as fault tolerance, load balancing, and component
Jini, a technology developed by Sun Microsystems, offers a platform-independent ``plug & play'' technology. It supports ad hoc networking by allowing a device offering services to be added to a network without requiring any pre-planning, installation, or human intervention. Once a service has been registered in a network, Jini allows other services and users to discover this new service. The ability to do all this in a transparent manner without manual intervention supports the basic prinicple of plug and play technology.
While the plug and play technology offered by Jini may appear revolutionary, it is important to note that this is not just a Java-centric technology. In fact, what Jini really offers is a "pattern language" for plug and play component-centric development. Based on our efforts thus far, we have identified the following patterns in the Jini pattern language:
- Lookup: This pattern describes the manner in which services are located in a network. In addition to its use in the Jini discovery protocol, this pattern is also used, for example, by CORBA ORBs to locate service, such as Naming or Trading, via the Naming Service .
- On-demand Loading: This pattern describes how to defer loading of services until the time when they are actually needed. This is a key principle of ad hoc networking.
- Activator: This pattern describes a generic procedure by which services can be activated dynamically once they have been loaded on-demand.
- Evictor: This pattern describes a generic procedure by which services can be deactivated, when they are no longer needed.
- Leasing: This pattern describes the availability of a service in terms of time-based resource reservation with a service provider. This allows the service to cope with partial failure and to avoid accumulation of outdated and unwanted information.
The focus of this workshop is to complete and refine the Jini pattern language. The idea is to tackle the design issues at all levels of the Jini System, ranging from the networking layer to the higher level services and technologies. This would help us to discover the common patterns to achieve such an integrated system. We will then use the results to create a pattern language based design. The design need not be constrained by the functionality offered by Jini and can include additional features that will make the design more complete.
Concepts like Quality of Service, Load Balancing, Fault Tolerance, Security and Component Architectures, Wireless middleware concepts could be used to further extend the framework. For example, an enhancement to the existing Jini model could be to provide different levels of access and usage of the services registered. This could be defined by a Quality of Protection parameter decided for every service. Consider a hotel powered by Jini technology where all the devices are connected on a common network. A guest in the presendential suite would be able to utilize the video conferencing service while another guest would not be authorized to do so since he/she did not pay for it.
The goal of the workshop will be to identify and describe these additional concepts using patterns and integrate them into the Jini pattern language. Consequently, using the pattern language based design model, it should be possible to implement Jini-like ad hoc networks using other languages and technologies, such as XML, CORBA, C++, C, COM+, etc.
 Sun Microsystems, Jini Technology 1.0 Documentation.
 Michi Henning and Steve Vinoski 1999, "Advanced CORBA Programming with C++", Reading, Addison-Wesley.
 Michael Kircher and Prashant Jain,
Pattern-Oriented Software Architecture, Volume 3:
Patterns for Resource Management , John Wiley and Sons, 2004
Michael Kircher is currently working as a researcher in the Corporate Research of Siemens AG in Munich, Germany. His main fields of interest are distributed object computing, design patterns as well as architectural consulting. He is also an active member of the Centre for Distributed Object Computing at Washington University in Saint Louis, which was formerly lead by Dr. Douglas Schmidt and now by Dr. David Levine. He holds a Masters degree in Computer Science from University of Stuttgart.
Corporate Department Technology
D-81730 Munich, Germany
Prashant Jain is currently working as a researcher in the Corporate Research division of Siemens AG in Munich, Germany. He holds a Masters degree in Computer Science from Washington University in St. Louis, U.S.A. His professional experience includes working as a software engineer for companies like Fujitsu Network Communications, Inc., and Kodak Health Imaging Systems, Inc. He has also been actively involved in the Centre for Distributed Object Computing formerly headed by Dr. Douglas Schmidt at Washington University.
Corporate Department Technology
D-81730 Munich, Germany
Kirthika Parameswaran is currently working at Telcordia (formerly Bellcore) Applied Research Labs in New Jersey, USA. She is actively involved with the Distributed Object Computing at Washington University in St. Louis, U.S.A. and has been a Research Assistant under Dr. Douglas Schmidt and Dr. David Levine. She also holds a Master's degree in Computer Science from Washington University. Her areas of interest include distributed object computing, security, wireless middleware, design patterns and application frameworks. Telcordia Applied Research Labs,
Telcordia Applied Research Labs,
MCC 1J211R, 445 South Street,
Morristown, NJ 07960