OOPSLA 2000 Workshop The History of the Jini™ Pattern Language Michael Kircher, Prashant Jain, and Kirthika Parameswaran OOPSLA 2000 Workshop The Jini™ Pattern Language © Michael Kircher, Prashant Jain, and Kirthika Parameswaran, 2000 1 How everything started • First question: Can Jini™ be implemented in some other programming language, e.g. C++? • What exactly would that mean? We need: – Communication framework, e.g. CORBA – Lookup service, e.g. CORBA Name Service – Mechanism to dynamically load services, e.g. Service Configurator[JaSc97] OOPSLA 2000 Workshop The Jini™ Pattern Language © Michael Kircher, Prashant Jain, and Kirthika Parameswaran, 2000 2 Next Steps • But can it actually all work together? Still many open questions: – How to represent services? As DLLs? Shared objects? – What are the interfaces? What is THE common service interface? – What is the right granularity? How to split into proxy and service? – How to package them? – How to bootstrap a service from a downloaded software package? OOPSLA 2000 Workshop The Jini™ Pattern Language © Michael Kircher, Prashant Jain, and Kirthika Parameswaran, 2000 3 Getting Feedback • Talking to others … Doug Schmidt: “.. not just a Java-centric technology, but a "pattern language" for "plug & play" component-centric development.” • This gave a boost to our efforts and we started abstracting away from implementation details. OOPSLA 2000 Workshop The Jini™ Pattern Language © Michael Kircher, Prashant Jain, and Kirthika Parameswaran, 2000 4 Patterns to the Rescue • Started identifying key aspects of Jini™ using patterns. • Came up with an initial list of: – Lookup – Leasing – Activator – On-Demand-Loading (Lazy Evaluation) – Evictor OOPSLA 2000 Workshop The Jini™ Pattern Language © Michael Kircher, Prashant Jain, and Kirthika Parameswaran, 2000 5 Lookup Pattern • Abstract – The Lookup pattern describes how to find and retrieve initial references to distributed objects and services. • Structure: – Lookup Service: Allows clients to look up services based on properties. – Service: Offers a service; registers itself with the Lookup Service – Client: Uses a service; finds it via the Lookup service OOPSLA 2000 Workshop The Jini™ Pattern Language © Michael Kircher, Prashant Jain, and Kirthika Parameswaran, 2000 6 Leasing Pattern • Abstract – The Leasing pattern simplifies resource management by specifying how resource users can get access to a resource from a resource provider for a pre-defined period of time. • Structure: – Resource: Provides some kind of functionality or service. – Lease: Provides a notion of time that can be associated with the availability of the Resource. – Grantor: Grants a Lease on the Resource. – Holder: Obtains a Lease on the Resource and then uses the Resource. OOPSLA 2000 Workshop The Jini™ Pattern Language © Michael Kircher, Prashant Jain, and Kirthika Parameswaran, 2000 7 Activator Pattern • Abstract: – The Activator pattern describes how services can be activated in a generic way. • Structure: – Activator: Responsible for activating services. – Service: Offers a service; can be activated and de-activated. – Client: Accesses a service via the Activator. OOPSLA 2000 Workshop The Jini™ Pattern Language © Michael Kircher, Prashant Jain, and Kirthika Parameswaran, 2000 8 On-Demand-Loading Pattern (extension of Activator) • Abstract – The On-Demand-Loading pattern describes how services can be activated in a memory efficient way by putting the services into shared libraries and loading them only on demand. • Structure: – Service: Offers a service; is available as shared library – Activator: Activates the service by loading the shared library. OOPSLA 2000 Workshop The Jini™ Pattern Language © Michael Kircher, Prashant Jain, and Kirthika Parameswaran, 2000 9 Evictor Pattern • Abstract – The Evictor pattern describes a solution to free up unused resources based on policies. • Structure – Evictor: Manages a set of services based on available resources. If resources get scarce, it evicts services based on policies. – Service: Offers a service; can be activated and deactivated OOPSLA 2000 Workshop The Jini™ Pattern Language © Michael Kircher, Prashant Jain, and Kirthika Parameswaran, 2000 10 On demand Loading Activator The Jini™ Pattern Language Service Evictor Client Lookup Lookup Service OOPSLA 2000 Workshop The Jini™ Pattern Language © Michael Kircher, Prashant Jain, and Kirthika Parameswaran, 2000 Service Provider Leasing 11 Is that all? • How do we extend the Jini™ Pattern Language? • Which problems are not solved, yet? • How would the implementations in different environments, as the Java environment, look like? • Could we bring in patterns from other domains? • How can the Jini™ Pattern Language be applied to other domains? OOPSLA 2000 Workshop The Jini™ Pattern Language © Michael Kircher, Prashant Jain, and Kirthika Parameswaran, 2000 12 References • [KiJa00] Michael Kircher, and Prashant Jain, Lookup Pattern, EuroPLoP 2000 conference, Irsee, Germany, July 5-9, 2000 • [JaKi00] Prashant Jain, and Michael Kircher, Leasing Pattern, PLoP 2000 conference, Allerton Park, Illinois, USA, August 1316, 2000 • [JaSc97] Prashant Jain and Doug C. Schmidt, Service Configuratior - A Pattern for Dynamic Configuration of Services, C++ Report, SIGS, Vol. 9, No. 6, June, 1997 • [St00] Michael Stal, Activator Pattern, http://www.posa.uci.edu, 2000 • [HeVi99] Michi Henning and Steve Vinoski, Advanced CORBA Prgrogramming with C++, Chapter 12.6 – Evictor pattern, Addison-Wesley, 1999 OOPSLA 2000 Workshop The Jini™ Pattern Language © Michael Kircher, Prashant Jain, and Kirthika Parameswaran, 2000 13