44
Jini™ Jini™ Rashad Oreifej Rashad Oreifej and and Christopher Stricklan Christopher Stricklan

Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee Stands for (Java INference engine and networked Interactor)? Loosely

Embed Size (px)

Citation preview

Page 1: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Jini™Jini™

Rashad OreifejRashad Oreifej

andand

Christopher StricklanChristopher Stricklan

Page 2: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

IntroductionIntroduction

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

Interactor)? Interactor)? Loosely derived from the Arabic for magician?Loosely derived from the Arabic for magician? Some said it stands for Some said it stands for Jini Is Not InitialsJini Is Not Initials

Nobody really knows..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” networkPlug and Work” network

Page 3: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

HistoryHistory

►Developed by Sun MicroSystemsDeveloped by Sun MicroSystems

► The idea started by Sun cofounder Bill Joy at The idea started by Sun cofounder Bill Joy at Sun Aspen Smallworks R&D lab in 1994Sun Aspen Smallworks R&D lab in 1994

► Under the leadership of Bill Joy and Jim Under the leadership of Bill Joy and Jim Waldo:Waldo: Ann WollrathAnn Wollrath Ken ArnoldKen Arnold Bob ScheiflerBob Scheifler

Page 4: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

HistoryHistory

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

► Introduced in January, 1999 by providing the first Introduced in January, 1999 by providing the first Jini Technology Starter KitJini Technology Starter Kit

► Sun currently has agreement with a wide range of Sun currently has agreement with a wide range of technology companies to develop Jini technology technology companies to develop Jini technology services, both hardware and software. services, both hardware and software. Includes Axis, Canon, Datek, Epson, FedEx, Mitsubishi, Includes Axis, Canon, Datek, Epson, FedEx, Mitsubishi,

Norwest Mortgage, Novell, ODI, Quantum, Seagate, Norwest Mortgage, Novell, ODI, Quantum, Seagate, Toshiba, Computer Associates, Oki, Salomon BrothersToshiba, Computer Associates, Oki, Salomon Brothers

Page 5: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

BenefitsBenefits

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

► No configuration overhead and device driversNo configuration overhead and device drivers

► Extends the Java programming model to the Extends the Java programming model to the network (network (moves data and executables via a moves data and executables via a Java object over a networkJava object over a network))

► Consistent access to local and remote Consistent access to local and remote devices devices

Page 6: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

BenefitsBenefits► Network self-healing and self-configuration (Network self-healing and self-configuration (LeasingLeasing))

► Networks adapt to changes in the computing environmentNetworks adapt to changes in the computing environment

► Allows fast, easy incorporation of legacy, current, and future Allows fast, easy incorporation of legacy, current, and future network components network components

► Jini is available free of chargeJini is available free of charge

► Enables computer networks to resemble phone networks in Enables computer networks to resemble phone networks in graceful connection/disconnection and scalabilitygraceful connection/disconnection and scalability

► Enables all types of digital devices to work together in a Enables all types of digital devices to work together in a community put together without extensive planning, community put together without extensive planning, installation, or human interventioninstallation, or human intervention

Page 7: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

LimitationsLimitations

►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 ServiceTemplate

►Low-resource clients Low-resource clients

Page 8: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Success StoriesSuccess 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 self-healing 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

Page 9: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Jini Logical ArchitectureJini Logical Architecture

Page 10: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Jini Technology Flow DiagramJini Technology Flow Diagram

Page 11: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Jini Flow ExampleJini Flow Example

Page 12: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Jini Architecture DiagramsJini Architecture Diagrams

Page 13: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Implementation ComponentsImplementation Components

► jini-corejini-core► jini-extjini-ext

►Reggie Reggie - - LUS ImplementationLUS Implementation

► jsk-policy -jsk-policy - Security ImplementationSecurity Implementation

►Many others…Many others…

Discovery, Lookup, Discovery, Lookup, Lease, … Lease, … ImplementationsImplementations

}

Page 14: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Lookup Discovery Service (LDS)Lookup Discovery Service (LDS)

►Unicast Discovery ProtocolUnicast Discovery Protocol (Locator)(Locator) For LUS outside the LANFor LUS outside the LAN Address is already knownAddress is already known

►Multicast Discovery ProtocolMulticast Discovery Protocol (Group)(Group) LUS within the LANLUS within the LAN Address in not known.Address in not known.

Page 15: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Unicast Discovery ProtocolUnicast Discovery Protocol► Package: Package: net.jini.core.discoverynet.jini.core.discovery

► Client/service sends a unicast request (packet) using Client/service sends a unicast request (packet) using the TCP protocol the TCP protocol Unicast TCPUnicast TCP

► LUS unicast announcement reply LUS unicast announcement reply Unicast TCPUnicast TCP

► Client/Service downloads the LUS proxyClient/Service downloads the LUS proxy

► Join (Send proxy class, Service ID, Attributes) Join (Send proxy class, Service ID, Attributes) Unicast Unicast TCPTCP

► Lookup (Obtain RMI interface to service) Lookup (Obtain RMI interface to service) Unicast TCPUnicast TCP

Page 16: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Multicast Discovery ProtocolMulticast Discovery Protocol► Package: Package: net.jini.discovery net.jini.discovery

► Client/service sends a multicast request (packet) that Client/service sends a multicast request (packet) that contains the groups of interest contains the groups of interest Multicast UDPMulticast UDP

► LUS multicast announcement reply LUS multicast announcement reply Multicast UDPMulticast UDP

► Client/Service downloads the LUS proxyClient/Service downloads the LUS proxy

► Join (Send proxy class, Service ID, Attributes) Join (Send proxy class, Service ID, Attributes) Unicast Unicast TCPTCP

► Lookup (Obtain RMI interface to service) Lookup (Obtain RMI interface to service) Unicast TCPUnicast TCP

Page 17: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Jini LookupJini Lookup

► Lookup types “Templates” rather than namesLookup types “Templates” rather than names

► Lookup by a class type “Super and Sub classes Lookup by a class type “Super and Sub classes can be included”can be included”

► Lookup by multiple types (AND/OR operators)Lookup by multiple types (AND/OR operators)

► Lookup by specific attributesLookup by specific attributes

► Lookup by Service IDLookup by Service ID

Page 18: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Lease ServiceLease Service

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

► Prevents resource starving at the LUS due to Prevents resource starving at the LUS due to allocations for dead servicesallocations for dead services

► Each service is registered in the LUS for a certain Each service is registered in the LUS for a certain time “Lease”time “Lease”

► Upon expiry either renew, or be removedUpon expiry either renew, or be removed

► Lease requester can cancel the lease any timeLease requester can cancel the lease any time

Page 19: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Distributed EventsDistributed Events

Page 20: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Distributed EventsDistributed Events

Page 21: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Distributed EventsDistributed 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

Page 22: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Code Snippet ExamplesCode Snippet Examples

► Unicast LookupUnicast Lookupimport net.jini.core.discovery.LookupLocator;import net.jini.core.discovery.LookupLocator;

public class Locator{public class Locator{

public Locator{public Locator{

LookupLocator lookup;LookupLocator lookup;

try{try{

lookup = new LookupLocator(“jini://localhost”);lookup = new LookupLocator(“jini://localhost”);

}catch(java.net.MalformedURLException e){}catch(java.net.MalformedURLException e){

}}

}}

}}

Page 23: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Code Snippet ExamplesCode Snippet Examples

►Get RegistrarGet Registrar… … // Other imported packages// Other imported packages

import net.jini.core.lookup.ServiceRegistrar;import net.jini.core.lookup.ServiceRegistrar;

public class UnicastRegister{public class UnicastRegister{

public UnicastRegister{public UnicastRegister{

LookupLocator lookup = null;LookupLocator lookup = null;

ServiceRegistrar registrar = null;ServiceRegistrar registrar = null;

… … // Lookup Service code here// Lookup Service code here

try{try{

registrar = lookup.getRegistrar();registrar = lookup.getRegistrar();

}catch(){}}catch(){}

}}

}}

Page 24: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Code Snippet ExamplesCode Snippet Examples

► Register a ServiceRegister a Service… … // Other imported packages// Other imported packages

import net.jini.core.lookup.ServiceItem;import net.jini.core.lookup.ServiceItem;

import net.jini.core.lookup.ServiceRegistration;import net.jini.core.lookup.ServiceRegistration;

Public class SimpleService implements Serializable{Public class SimpleService implements Serializable{

public SimpleService(){public SimpleService(){

… … //Lookup Service Code//Lookup Service Code

… … // Registrar Code// Registrar Code

ServiceItem item = new ServiceItem(null, this, null);ServiceItem item = new ServiceItem(null, this, null);

ServiceRegistration reg = null;ServiceRegistration reg = null;

try{try{

reg = registrar.register(item, 10000); // Registers for 10 secondsreg = registrar.register(item, 10000); // Registers for 10 seconds

}catch(jama.rmi.RemoteException e){}}catch(jama.rmi.RemoteException e){}

}}

}}

Page 25: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Code Snippet ExamplesCode Snippet Examples

► Consume a ServiceConsume a Service// First we need an Interface// First we need an Interface

public interface Toaster extends java.io.Serializable{public interface Toaster extends java.io.Serializable{

public void setDarkness(int dark);public void setDarkness(int dark);

public void startToasting();public void startToasting();

}}

// The actual also needs to be implemented// The actual also needs to be implemented

public class MySuperToaster implements Toaster{public class MySuperToaster implements Toaster{

public void setDarkness(int dark){public void setDarkness(int dark){

… … // do something here// do something here

}}

public void startToasting(){public void startToasting(){

… … // Lets make the toast yummy// Lets make the toast yummy

}}

}}

Page 26: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Code Snippet ExamplesCode Snippet Examples

► Consume a Service contd.Consume a Service contd.// Set a security manager otherwise we can’t load the codebase// Set a security manager otherwise we can’t load the codebaseSystem.setSecurityManager(new RMISecurityManager());System.setSecurityManager(new RMISecurityManager());

Class[] toasterClasses = new Class[1];Class[] toasterClasses = new Class[1];toasterClasses[0] = Toaster.class;toasterClasses[0] = Toaster.class;

… … // Do the usual Lookup and Registrar Creation// Do the usual Lookup and Registrar Creation

// Prepare a seach template of serviceID, classes and entries// Prepare a seach template of serviceID, classes and entriesServiceTemplate template = new ServiceTemplate(null, toaterClasses, null);ServiceTemplate template = new ServiceTemplate(null, toaterClasses, null);

// Let us find the Toaster// Let us find the ToasterToaster toaster = null;Toaster toaster = null;try{try{

toater = (Toaster) registrar.lookup(template);toater = (Toaster) registrar.lookup(template);}catch(javam.rmi.RemoteException e){}}catch(javam.rmi.RemoteException e){}

Page 27: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

JINI Framework-based JINI Framework-based ServicesServices

► JavaSpacesJavaSpaces based on Tuple-Spaces based on Tuple-Spaces Provides a reliable distributed storage system for Provides a reliable distributed storage system for

objectsobjects Supports atomic access to objectsSupports atomic access to objects Built-in transactional mechanismBuilt-in transactional mechanism Object LeasesObject Leases EventsEvents

Page 28: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

JINI Framework-based JINI Framework-based ServicesServices

► RioRio Dynamically instantiate service componentDynamically instantiate service component Monitor service componentMonitor service component Manage service componentManage service component Pluggable load distribution and resource Pluggable load distribution and resource

utilization analysis utilization analysis

Page 29: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

JINI Framework-based JINI Framework-based ServicesServices

► SevenSeven Eases the development and deployment of Jini Eases the development and deployment of Jini

servicesservices Administration interfaces for life-cycle and join Administration interfaces for life-cycle and join

managementmanagement Role based access control for remote method Role based access control for remote method

invocations invocations Security is dynamically Security is dynamically

configurable/reconfigurableconfigurable/reconfigurable Resource efficiency by reducing the number of Resource efficiency by reducing the number of

threads that are used by the Jini classesthreads that are used by the Jini classes

Page 30: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

JINI Framework-based JINI Framework-based ServicesServices

►HarvesterHarvester Claims to simplify Jini application developmentClaims to simplify Jini application development Build services using a servlet-like APIBuild services using a servlet-like API Help manages codebaseHelp manages codebase Provides an HTTP server for codebase downloadsProvides an HTTP server for codebase downloads Supports writing Jini services with Python through Supports writing Jini services with Python through

a wrapper class called Jythona wrapper class called Jython

Page 31: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

JINI Framework-based JINI Framework-based ServicesServices

►NewtonNewton Moves code around the network installing on Moves code around the network installing on

demanddemand Removes the code when no longer in useRemoves the code when no longer in use Dynamically wires up runtime service Dynamically wires up runtime service

dependenciesdependencies Rewires dependencies as services come and go.Rewires dependencies as services come and go.

Page 32: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

ApplicationsApplications

►Distributed File SystemDistributed File System►Directory ServiceDirectory Service►Mobile NetworksMobile Networks► Auto Printer ConfigurationAuto Printer Configuration► RFIDRFID► Agent ImplementationsAgent Implementations►Grid ComputingGrid Computing

Page 33: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Apache RiverApache River

Moved Jini from SCSL to Apache License v2.0 Moved Jini from SCSL to Apache License v2.0 (ALv2)(ALv2)

Occurred March 2005Occurred March 2005

►Why Apache?Why Apache? It was a community decisionIt was a community decision Extensive, open, and collaborative discussions Extensive, open, and collaborative discussions ALv2 was determined to best meet the licensing ALv2 was determined to best meet the licensing

requirements most important to Sun and the Jini requirements most important to Sun and the Jini Community. Community.

Page 34: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Apache RiverApache River

►MotivationMotivation Allow Broader AdoptionAllow Broader Adoption Technical AdvancementTechnical Advancement Meet needs of expanding Jini communityMeet needs of expanding Jini community

Page 35: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Apache RiverApache River

► BenefitsBenefits Develops a richer ecosystem for Jini technology Develops a richer ecosystem for Jini technology

users to operate withinusers to operate within Freely license, use and distribute Jini technologyFreely license, use and distribute Jini technology Simplify prospective users license review processSimplify prospective users license review process Simplify the introduction of Jini technology into Simplify the introduction of Jini technology into

many companiesmany companies

Page 36: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Other SOAsOther SOAs

► Zero Configuration Networking (Zeroconf)Zero Configuration Networking (Zeroconf) Created by The Engineering Task ForceCreated by The Engineering Task Force IPv4 Link-Local Addressing BasedIPv4 Link-Local Addressing Based Allocate addresses without a DHCP serverAllocate addresses without a DHCP server Translate between names and IP addresses Translate between names and IP addresses

without a DNS serverwithout a DNS server Find services, like printers, without a directory Find services, like printers, without a directory

serverserver

Page 37: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Other SOAsOther SOAs

► BonjourBonjour Created by AppleCreated by Apple Based off of ZeroConfBased off of ZeroConf Open SourceOpen Source Creates dynamic network of computersCreates dynamic network of computers JAVA library, MAC OS, and Windows Compatible JAVA library, MAC OS, and Windows Compatible IP Based through UDP Port 5353IP Based through UDP Port 5353 Allows discovery of services through web Allows discovery of services through web

browserbrowser

Page 38: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

Other SOAsOther SOAs

► UPnPUPnP Created by MicrosoftCreated by Microsoft Supports zero-cofigurationSupports zero-cofiguration Media and Device IndependentMedia and Device Independent Platform IndependencePlatform Independence Built on internet-based technologies (IP, TCP, Built on internet-based technologies (IP, TCP,

UDP, HTTP, XML, etc.)UDP, HTTP, XML, etc.) ExtendableExtendable

Page 39: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

ConclusionsConclusions

► JiniJini Developed by SUNDeveloped by SUN Dynamic Networking ArchitectureDynamic Networking Architecture Zero ConfigurationZero Configuration Remote Method InvocationRemote Method Invocation

Page 40: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

ConclusionsConclusions

► ProsPros Create a Dynamic EnvironmentCreate a Dynamic Environment Open SourceOpen Source Cross-Platform SupportCross-Platform Support Mobility of CodeMobility of Code Protocol AgnosticProtocol Agnostic Network Self-HealingNetwork Self-Healing Network Self-ConfigurationNetwork Self-Configuration

Page 41: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

ConclusionsConclusions

► ConsCons Lookup CriteriaLookup Criteria Limited Debugging SupportLimited Debugging Support Type conflicts when mixing objects from different Type conflicts when mixing objects from different

code basescode bases Changes in codebase may fail to reach clientChanges in codebase may fail to reach client

Page 42: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

ReferencesReferences

1.1. http://http://www.jini.orgwww.jini.org2.2. Jini and JavaSpaces Application Development, Jini and JavaSpaces Application Development,

Robert Flenner. SAMS Publishing, 2002Robert Flenner. SAMS Publishing, 20023.3. The Power and Limitations of the ServiceRegistrar The Power and Limitations of the ServiceRegistrar

Interface, Bill Venners. Published in Interface, Bill Venners. Published in JavaWorldJavaWorld, , 20002000

4. http://www.sun.com/software/jini/news/success.xml

5. www.assuredtech.com/papers/jini/embedded.pdf6. www.sun.com/software/jini/whitepapers/jini

-datasheet0601.pdf7. http://www.javacoffeebreak.com/books/samples/

professionaljini/3552_Chap7_idx.pdf

Page 43: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

ReferencesReferences

8. http://developer.apple.com/opensource/internet/bonjour.html

9. http://www.apple.com/support/downloads/bonjourforwindows.html

10. http://www.zeroconf.org/11. http://msdn2.microsoft.com/en-us/library/

aa382261.aspx12. http://www.sun.com/software/jini/index.xml13. A Programmer’s Guide to Jini Technology, Jan

Newmarch, Apress, 200014. Class Loading Issues in Java™ RMI and Jini™

Network Technology, Michael Warres, Sun Microsystems, 2006

Page 44: Jini™ Rashad Oreifej and Christopher Stricklan. Introduction ► Pronounced GEE-nee  Stands for (Java INference engine and networked Interactor)?  Loosely

ReferencesReferences

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