Jini Rashad Oreifej and Christopher Stricklan Introduction Pronounced

  • Slides: 44
Download presentation
Jini™ Rashad Oreifej and Christopher Stricklan

Jini™ Rashad Oreifej and Christopher Stricklan

Introduction ► Pronounced GEE-nee § § § Stands for (Java INference engine and networked

Introduction ► Pronounced GEE-nee § § § Stands for (Java INference engine and networked Interactor)? Loosely derived from the Arabic for magician? Some said it stands for Jini Is Not Initials Nobody really knows. . ► An open Java™ technology-based architecture enables organizations to build adaptive network-centric systems to allow services to be added, upgraded or removed dynamically, whilst the network remains up and running ► “Plug and Work” network

History ► Developed by Sun Micro. Systems ► The idea started by Sun cofounder

History ► Developed by Sun Micro. Systems ► The idea started by Sun cofounder Bill Joy at Sun Aspen Smallworks R&D lab in 1994 ► Under the leadership § Ann Wollrath § Ken Arnold § Bob Scheifler of Bill Joy and Jim Waldo:

History ► Based on the unique distributed computing characteristics of Java technology and the

History ► Based on the unique distributed computing characteristics of Java technology and the RMI ► Introduced in January, 1999 by providing the first Jini Technology Starter Kit ► Sun currently has agreement with a wide range of technology companies to develop Jini technology services, both hardware and software. § Includes Axis, Canon, Datek, Epson, Fed. Ex, Mitsubishi, Norwest Mortgage, Novell, ODI, Quantum, Seagate, Toshiba, Computer Associates, Oki, Salomon Brothers

Benefits ► Provides the infrastructure for creating dynamically networked components (SW/HW), applications, and services

Benefits ► Provides the infrastructure for creating dynamically networked components (SW/HW), applications, and services ► No configuration overhead and device drivers ► Extends the Java programming model to the network (moves data and executables via a Java object over a network) ► Consistent access to local and remote devices

Benefits ► Network self-healing and self-configuration (Leasing) ► Networks adapt to changes in the

Benefits ► Network self-healing and self-configuration (Leasing) ► Networks adapt to changes in the computing environment ► Allows fast, easy incorporation of legacy, current, and future network components ► Jini is available free of charge ► Enables computer networks to resemble phone networks in graceful connection/disconnection and scalability ► Enables all types of digital devices to work together in a community put together without extensive planning, installation, or human intervention

Limitations ► Sun Community Source License (SCSL) licensing model ► Lookup criteria that include

Limitations ► Sun Community Source License (SCSL) licensing model ► Lookup criteria that include ranges of values to match or sets of values to match, cannot be expressed with a single Service. Template ► Low-resource clients

Success Stories ► Orange API 2 incorporates Jini technology as one of the first

Success Stories ► Orange API 2 incorporates Jini technology as one of the first implementations of Jini in telephony network Web services environment ► RFID networks enable and support new business processes. Such a distributed network benefits from Jini’s robust self-managing and selfhealing capabilities ► U. S. Army developed a battlefield-ready solution based on Jini connection technology that allows computers and other devices to interoperate immediately after being connected. ► Other many success stories: http: //www. sun. com/software/jini/news/success. xml

Jini Logical Architecture

Jini Logical Architecture

Jini Technology Flow Diagram

Jini Technology Flow Diagram

Jini Flow Example

Jini Flow Example

Jini Architecture Diagrams

Jini Architecture Diagrams

Implementation Components ► jini-core ► jini-ext } Discovery, Lookup, Lease, … Implementations ► Reggie

Implementation Components ► jini-core ► jini-ext } Discovery, Lookup, Lease, … Implementations ► Reggie - LUS Implementation ► jsk-policy - Security Implementation ► Many others…

Lookup Discovery Service (LDS) ► Unicast Discovery Protocol (Locator) § For LUS outside the

Lookup Discovery Service (LDS) ► Unicast Discovery Protocol (Locator) § For LUS outside the LAN § Address is already known ► Multicast Discovery Protocol (Group) § LUS within the LAN § Address in not known.

Unicast Discovery Protocol ► Package: net. jini. core. discovery ► Client/service sends a unicast

Unicast Discovery Protocol ► Package: net. jini. core. discovery ► Client/service sends a unicast request (packet) using the TCP protocol Unicast TCP ► LUS unicast announcement reply Unicast TCP ► Client/Service downloads the LUS proxy ► Join (Send proxy class, Service ID, Attributes) Unicast TCP ► Lookup (Obtain RMI interface to service) Unicast TCP

Multicast Discovery Protocol ► Package: net. jini. discovery ► Client/service sends a multicast request

Multicast Discovery Protocol ► Package: net. jini. discovery ► Client/service sends a multicast request (packet) that contains the groups of interest Multicast UDP ► LUS multicast announcement reply Multicast UDP ► Client/Service downloads the LUS proxy ► Join (Send proxy class, Service ID, Attributes) Unicast TCP ► Lookup (Obtain RMI interface to service) Unicast TCP

Jini Lookup ► Lookup types “Templates” rather than names ► Lookup by a class

Jini Lookup ► Lookup types “Templates” rather than names ► Lookup by a class type “Super and Sub classes can be included” ► Lookup by multiple types (AND/OR operators) ► Lookup by specific attributes ► Lookup by Service ID

Lease Service ► Leasing concept is introduced to recover from the loss of services

Lease Service ► Leasing concept is introduced to recover from the loss of services ► Prevents resource starving at the LUS due to allocations for dead services ► Each service is registered in the LUS for a certain time “Lease” ► Upon expiry either renew, or be removed ► Lease requester cancel the lease any time

Distributed Events

Distributed Events

Distributed Events

Distributed Events

Distributed Events ► Discover an instance of a LUS ► Register with the LUS

Distributed Events ► Discover an instance of a LUS ► Register with the LUS in order to be notified when a specific service (template) joins and leaves the Jini network ► Catch the join and leave remote notifications from the LUS

Code Snippet Examples ► Unicast Lookup import net. jini. core. discovery. Lookup. Locator; public

Code Snippet Examples ► Unicast Lookup import net. jini. core. discovery. Lookup. Locator; public class Locator{ public Locator{ Lookup. Locator lookup; try{ lookup = new Lookup. Locator(“jini: //localhost”); }catch(java. net. Malformed. URLException e){ } } }

Code Snippet Examples ► Get Registrar … // Other imported packages import net. jini.

Code Snippet Examples ► Get Registrar … // Other imported packages import net. jini. core. lookup. Service. Registrar; public class Unicast. Register{ public Unicast. Register{ Lookup. Locator lookup = null; Service. Registrar registrar = null; … // Lookup Service code here try{ registrar = lookup. get. Registrar(); }catch(){} } }

Code Snippet Examples ► Register a Service … // Other imported packages import net.

Code Snippet Examples ► Register a Service … // Other imported packages import net. jini. core. lookup. Service. Item; import net. jini. core. lookup. Service. Registration; Public class Simple. Service implements Serializable{ public Simple. Service(){ … //Lookup Service Code … // Registrar Code Service. Item item = new Service. Item(null, this, null); Service. Registration reg = null; try{ reg = registrar. register(item, 10000); // Registers for 10 seconds }catch(jama. rmi. Remote. Exception e){} } }

Code Snippet Examples ► Consume a Service // First we need an Interface public

Code Snippet Examples ► Consume a Service // First we need an Interface public interface Toaster extends java. io. Serializable{ public void set. Darkness(int dark); public void start. Toasting(); } // The actual also needs to be implemented public class My. Super. Toaster implements Toaster{ public void set. Darkness(int dark){ … // do something here } public void start. Toasting(){ … // Lets make the toast yummy } }

Code Snippet Examples ► Consume a Service contd. // Set a security manager otherwise

Code Snippet Examples ► Consume a Service contd. // Set a security manager otherwise we can’t load the codebase System. set. Security. Manager(new RMISecurity. Manager()); Class[] toaster. Classes = new Class[1]; toaster. Classes[0] = Toaster. class; … // Do the usual Lookup and Registrar Creation // Prepare a seach template of service. ID, classes and entries Service. Template template = new Service. Template(null, toater. Classes, null); // Let us find the Toaster toaster = null; try{ toater = (Toaster) registrar. lookup(template); }catch(javam. rmi. Remote. Exception e){}

JINI Framework-based Services ► Java. Spaces § § § based on Tuple-Spaces Provides a

JINI Framework-based Services ► Java. Spaces § § § based on Tuple-Spaces Provides a reliable distributed storage system for objects Supports atomic access to objects Built-in transactional mechanism Object Leases Events

JINI Framework-based Services ► Rio § § Dynamically instantiate service component Monitor service component

JINI Framework-based Services ► Rio § § Dynamically instantiate service component Monitor service component Manage service component Pluggable load distribution and resource utilization analysis

JINI Framework-based Services ► Seven § Eases the development and deployment of Jini services

JINI Framework-based Services ► Seven § Eases the development and deployment of Jini services § Administration interfaces for life-cycle and join management § Role based access control for remote method invocations § Security is dynamically configurable/reconfigurable § Resource efficiency by reducing the number of threads that are used by the Jini classes

JINI Framework-based Services ► Harvester § § § Claims to simplify Jini application development

JINI Framework-based Services ► Harvester § § § Claims to simplify Jini application development Build services using a servlet-like API Help manages codebase Provides an HTTP server for codebase downloads Supports writing Jini services with Python through a wrapper class called Jython

JINI Framework-based Services ► Newton § § Moves code around the network installing on

JINI Framework-based Services ► Newton § § Moves code around the network installing on demand Removes the code when no longer in use Dynamically wires up runtime service dependencies Rewires dependencies as services come and go.

Applications ► Distributed File System ► Directory Service ► Mobile Networks ► Auto Printer

Applications ► Distributed File System ► Directory Service ► Mobile Networks ► Auto Printer Configuration ► RFID ► Agent Implementations ► Grid Computing

Apache River Moved Jini from SCSL to Apache License v 2. 0 (ALv 2)

Apache River Moved Jini from SCSL to Apache License v 2. 0 (ALv 2) Occurred March 2005 ► Why Apache? § It was a community decision § Extensive, open, and collaborative discussions § ALv 2 was determined to best meet the licensing requirements most important to Sun and the Jini Community.

Apache River ► Motivation § § § Allow Broader Adoption Technical Advancement Meet needs

Apache River ► Motivation § § § Allow Broader Adoption Technical Advancement Meet needs of expanding Jini community

Apache River ► Benefits § Develops a richer ecosystem for Jini technology users to

Apache River ► Benefits § Develops a richer ecosystem for Jini technology users to operate within § Freely license, use and distribute Jini technology § Simplify prospective users license review process § Simplify the introduction of Jini technology into many companies

Other SOAs ► Zero Configuration Networking (Zeroconf) Created by The Engineering Task Force IPv

Other SOAs ► Zero Configuration Networking (Zeroconf) Created by The Engineering Task Force IPv 4 Link-Local Addressing Based Allocate addresses without a DHCP server Translate between names and IP addresses without a DNS server § Find services, like printers, without a directory server § §

Other SOAs ► Bonjour § § § § Created by Apple Based off of

Other SOAs ► Bonjour § § § § Created by Apple Based off of Zero. Conf Open Source Creates dynamic network of computers JAVA library, MAC OS, and Windows Compatible IP Based through UDP Port 5353 Allows discovery of services through web browser

Other SOAs ► UPn. P Created by Microsoft Supports zero-cofiguration Media and Device Independent

Other SOAs ► UPn. P Created by Microsoft Supports zero-cofiguration Media and Device Independent Platform Independence Built on internet-based technologies (IP, TCP, UDP, HTTP, XML, etc. ) § Extendable § § §

Conclusions ► Jini § § Developed by SUN Dynamic Networking Architecture Zero Configuration Remote

Conclusions ► Jini § § Developed by SUN Dynamic Networking Architecture Zero Configuration Remote Method Invocation

Conclusions ► Pros § § § § Create a Dynamic Environment Open Source Cross-Platform

Conclusions ► Pros § § § § Create a Dynamic Environment Open Source Cross-Platform Support Mobility of Code Protocol Agnostic Network Self-Healing Network Self-Configuration

Conclusions ► Cons Lookup Criteria Limited Debugging Support Type conflicts when mixing objects from

Conclusions ► Cons Lookup Criteria Limited Debugging Support Type conflicts when mixing objects from different code bases § Changes in codebase may fail to reach client § § §

References 1. 2. 3. 4. 5. 6. 7. http: //www. jini. org Jini and

References 1. 2. 3. 4. 5. 6. 7. http: //www. jini. org Jini and Java. Spaces Application Development, Robert Flenner. SAMS Publishing, 2002 The Power and Limitations of the Service. Registrar Interface, Bill Venners. Published in Java. World, 2000 http: //www. sun. com/software/jini/news/success. xml www. assuredtech. com/papers/jini/embedded. pdf www. sun. com/software/jini/whitepapers/jinidatasheet 0601. pdf http: //www. javacoffeebreak. com/books/samples/professi onaljini/3552_Chap 7_idx. pdf

References 8. 9. 10. 11. 12. 13. 14. http: //developer. apple. com/opensource/internet/bonjour. html http:

References 8. 9. 10. 11. 12. 13. 14. http: //developer. apple. com/opensource/internet/bonjour. html http: //www. apple. com/support/downloads/bonjourforwin dows. html http: //www. zeroconf. org/ http: //msdn 2. microsoft. com/en-us/library/aa 382261. aspx http: //www. sun. com/software/jini/index. xml A Programmer’s Guide to Jini Technology, Jan Newmarch, Apress, 2000 Class Loading Issues in Java™ RMI and Jini™ Network Technology, Michael Warres, Sun Microsystems, 2006

References 15. 16. 17. 18. 19. https: //rio. dev. java. net/overview. html http: //www.

References 15. 16. 17. 18. 19. https: //rio. dev. java. net/overview. html http: //www. cheiron. org/seven/ https: //harvester. dev. java. net/ http: //newton. codecauldron. org/ https: //rio. dev. java. net/