Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures


Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips


Submit News
Search the site here...

Contents (First page with contents)

Custom Search
Contents (First page with contents)

[ Return to Guide to JINI Technologies ]

Jan Newmarch

Jan Newmarch's Guide to JINI Technologies

Jan Newmarch 

About Jan Newmarch  more here... 

1. Contents

This version uses Jini 1.1 (alpha). For a version using Jini 1.0, see http://pandonia.canberra.edu.au/java/jini/tutorial.1.03/Jini.xml

1.1 Chapters
  1. Overview (Last modified: version 2.02)
    1. Jini
    2. Components
    3. Service Registration
    4. Client Lookup
    5. Proxies
    6. Client Structure
    7. Server Structure
    8. Partitioning an Application
    9. Support Services
    10. Summary
  2. TroubleShooting Jini (Last modified: version 2.02)
    1. The Chapter that Shouldn't Exist
    2. Java Packages
    3. Jini Versions
    4. Jini Packages
    5. Lookup Service
    6. RMI Stubs
    7. Debugging
  3. Discovering a Lookup Service (Last modified: version 2.02)
    1. Lookup Service
    2. Unicast discovery
    3. Broadcast discovery
    4. ServiceRegistrar
    5. Summary
  4. Entry Objects (Last modified: version 2.02)
    1. Entry class
    2. Restrictions on entries
    3. Convenience Classes
    4. Further Uses of Entries
    5. Summary
  5. Service Registration (Last modified: version 2.02)
    1. ServiceRegistrar
    2. ServiceItem
    3. Registration
    4. ServiceRegistration
    5. Entries
    6. Summary
  6. Client Search (Last modified: version 0.04)
    1. ServiceRegistrar
    2. ServiceMatches
    3. Matching
    4. Summary
  7. Leasing (Last modified: version 2.02)
    1. Leases
    2. LeaseRenewalManager
    3. Granting and handling leases
    4. Summary
    5. Summary
  8. Simple Example (Last modified: version 2.02)
    1. Problem Description
    2. Service Specification
    3. Common Classes
    4. Client
    5. Service Proxy
    6. Uploading a Complete Service
    7. Summary
  9. Choices for Service Architecture (Last modified: version 2.02)
    1. Proxy Choices
    2. RMI Proxy for FileClassifier
    3. Non-RMI Proxy for FileClassifier
    4. RMI and non-RMI Proxies for FileClassifier
    5. Using the Naming service
    6. Using Other Services
  10. Discovery Management (Last modified: version 2.02)
    1. Management Interfaces
    2. LookupLocatorDiscovery
    3. LookupDiscoveryManager
    4. Conclusion
  11. Join Manager (Last modified: version 2.02)
    1. Join Manager
    2. Jini 1.0 JoinManager
    3. Summary
  12. Security (Last modified: version 2.03)
    1. Quick Fix
    2. Why AllPermission is Bad
    3. Removing AllPermission
    4. Jini with Protection
    5. Service Requirements
    6. Client Requirements
    7. ServiceRegistrar
    8. Transaction Manager and other Activatable Services
    9. rmid
    10. Being Paranoic
  13. More Complex Examples (Last modified: version 2.02)
    1. Where is the Code
    2. Running threads from discovery
    3. Inexact Service Matching
    4. Matching using Local Services
    5. Finding a Service Once Only
    6. Leased Changes to a Service
  14. Remote Events (Last modified: version 2.02)
    1. Event Models
    2. Remote Events
    3. Event Registration
    4. Listener List
    5. Listener Source
    6. File Classifier with Events
    7. Monitoring Changes in Services
    8. Summary
  15. ClientLookupManager (Last modified: version 2.02)
    1. Introduction
    2. ServiceItemFilter
    3. Finding a Service Immediately
    4. Using a Filter
    5. Building a Cache of Services
    6. Monitoring Changes to the Cache
    7. Summary
  16. Transactions (Last modified: version 0.11)
    1. Introduction
    2. Transactions
    3. TransactionManager
    4. TransactionParticipant
    5. Mahalo
    6. Example
    7. Summary
  17. Lego MindStorms (Last modified: version 2.02)
    1. Making Hardware into Jini Services
    2. MindStorms
    3. MindStorms as a Jini Service
    4. RCXPort
    5. RCX Programs
    6. Jini classes
    7. Getting it running
    8. Entry objects for a robot
    9. A client-side RCX class
    10. Higher level mechanisms: Not Quite C
    11. Summary
  18. CORBA and Jini (Last modified: version 0.12)
    1. CORBA
    2. CORBA to Java Mapping
    3. Jini Proxies
    4. Simple Example
    5. Room Booking Example
    6. Migrating a CORBA Client to Jini
    7. Jini Service as a CORBA Object
    8. Summary
  19. User Interfaces for Jini Services (Last modified: version 2.03)
    1. User Interfaces as Entries
    2. User Interfaces from Factory Objects
    3. Current Factories
    4. Marshalling Factories
    5. File Classifier Example
    6. Objects Returned from getUI()
    7. Support Classes
    8. Images
    9. MindStorms
    10. Summary
  20. Activation (Last modified: version 2.02)
    1. Introduction
    2. A Service using Activation
    3. LeaseRenewalService
    4. LookupDiscoveryService
    5. Summary
  21. Architecture (Last modified: version 2.02)
    1. Threads


1.2 Appendices


  1. Properties used in Jini

2. Files

The source to the programs is available as a zip file programs.zip. The compiled classes are available as a zip file classes.zip.

The documentation files are also available as a zip file docs.zip. This includes HTML versions of the files. I am using XML as document format, using a mishmash of the DocBook DTD with extra tags and HTML thrown in. A Perl program, xml_handler.pl, is a handler called by my Apache Web server to deliver XML files as HTML.

Postscript versions of the documentation files are in postscript.zip. These are generated using html2ps, and I know this produces Postscript that does not print on all printers - in particular, our Kyocera printers. If you have problems printing these, let me know the solution only. Please note that the copyright license allows you to make single printed copies for your own use, but not multiple printed copies.

3. Update Information

This tutorial will be updated on a regular basis, maybe several times a week. If you want to receive an email announcement of each version release, send email to jan@ise.canberra.edu.au with subject ``Jini tutorial update''

4. Feedback

I would appreciate any feedback on this tutorial, to ensure that it is correct and meets the needs of readers. The feedback that I have already received has been very valuable. Please send comments/corrections/requests, etc, to jan@ise.canberra.edu.au

5. Other Resources

  1. The Jini FAQ at http://www.artima.com/jini/faq.html
  2. Jini Community Web Site http://www.jini.org/
  3. Noel Enete's ``Nuggets'' tutorial at www.enete.com/download/#_nuggets_
  4. Eran Davidov's timeservice example at www.artima.com/jini/resources/timeservice.html
  5. Roger Whitney's lecture notes on ``Java Distributed Computing'' at http://www.eli.sdsu.edu/courses/spring99/cs696/notes/
  6. Benot Marchal's articles for Digital Cat's Java Resource Center at www.javacats.com/US/articles/Ben/Jini1.html (and Jini2.html, Jini3.html, etc)
  7. Jini Home page http://www.sun.com/jini/index.html
  8. RMI Home page http://java.sun.com/products/jdk/rmi/index.html
  9. Jini mailing list jini-users@java.sun.com
  10. Jini mailing list archives http://archives.java.sun.com/archives/jini-users.html
  11. RMI mailing list rmi-users@java.sun.com
  12. RMI mailing list archives http://archives.java.sun.com/archives/rmi-users.html
  13. Jini Interface Repository for standardised service interfaces (empty at present) http://www.artima.com/jini/interrepo/

6. Changes

See the file Changes for the list of version releases and changes made between versions.

7. Copyright Information

This tutorial (and the pages it contains) are covered by the OpenContent license. This basically gives you freedom to do what you want with the document in a similar way to the GNU license for software. Any changes or additions that you make to this set of pages as a Web document must be made publically available, and may be folded into later versions of this tutorial. Any such inclusions will of course be credited with your copyright, under the OpenContent license.

On the other hand, the programs that this tutorial references are also available unbundled from the tutorial, and do not have the restriction that source derived from them must be made publically available. So you can derive your own source code from them, without having to make it public. I'm not sure what suitable license will do this...

And, of course, there is no warranty...

8. Acknowledgements

The author is grateful for comments on this tutorial from

  1. Brian Jeltema, jeltema@richdist.east.sun.com
  2. Roger Whitney, whitney@cs.sdsu.edu
  3. Robbert van den Beld, rbe@mms-dresden.de
  4. Chitrarasu Muthaiyan, chitrarasu@cswl.com
  5. Stuart Remphrey, Stuart.Remphrey@Aus.Sun.COM
  6. JJ Larrea, jlarrea@redtop.com
  7. John McClain, John.McClain@East.Sun.COM
  8. Bob Scheifler, rws@east.sun.com


The author is currently on a sabbatical program at the CRC for Distributed Systems Technology, http://www.dstc.edu.au and the work reported in this tutorial has been funded in part by the Co-operative Research Centre Program through the Department of Industry, Science and Tourism of the Commonwealth Government of Australia.

This file is Copyright (©) 1999, 2000 by Jan Newmarch (http://pandonia.canberra.edu.au) jan@ise.canberra.edu.au.

This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v0.4 or later (the latest version is presently available at
http://www.opencontent.org/openpub/). Distribution of the work or derivative of the work in any standard (paper) book form is prohibited unless prior permission is obtained from the copyright holder.

This book mirrored from


[ Return to Guide to JINI Technologies ]

Top 10 read Java Articles
 Get free "1000 Java Tips eBook"

 Java Calendar and Date: good to know facts and code examples

 Array vs ArrayList vs LinkedList vs Vector: an excellent overview and examples

 How can I convert any Java Object into byte array? And byte array to file object

 The Java Lesson 1: What is Java?

 How do I compare two dates and times, date between dates, time between times and

 Maven vs Ant or Ant vs Maven?

 How to open, read, write, close file(s) in Java? Examples on move, rename and de

 Java Array

 Java: JLabel font and color

[ More in News Section ]
Java Lessons

The Java Lesson 1:
What is Java?
The Java Lesson 2:
Anatomy of a simple Java program
The Java Lesson 3:
Identifiers and primitive data types
The Java Lesson 4:
Variables, constants, and literals
The Java Lesson 5:
Arithmetic operations, conversions, and casts
The Java Lesson 6:
Boolean expressions and operations
The Java Lesson 7:
Bitwise operations
The Java Lesson 8:
Flow control with if and else
The Java Lesson 9:
switch statements
The Java Lesson 10:
for, while, and do-while statements
The Java Lesson 11:
Using break and continue
The Java Lesson 12:
Class methods and how they are called
The Java Lesson 13:
Using the Math class
The Java Lesson 14:
Creating and calling custom class methods
The Java Lesson 15:
Overloading class methods
The Java Lesson 16:
An introduction to objects and object references
The Java Lesson 17:
The String class
The Java Lesson 18:
The StringBuffer class
The Java Lesson 19:
Initializing and processing arrays of primitives
The Java Lesson 20:
Initializing and processing arrays of objects
The Java Lesson 23:
Inheritance and overriding inherited methods
The Java Lesson 24:
abstract classes and polymorphism
The Java Lesson 25:
Interfaces, instanceof, and object conversion and casting
The Java Lesson 26:
Introduction to graphical programming and the java.awt packa
The Java Lesson 27:
The Component class
The Java Lesson 28:
Containers and simple layout managers
The Java Lesson 29:
The Color and Font classes
The Java Lesson 30:
Drawing geometric shapes
The Java Lesson 31:
Choice, List, and Checkbox controls
The Java Lesson 32:
Using the Scrollbar graphical control
The Java Lesson 33:
Menus and submenus
The Java Lesson 34:
An introduction to applets and the Applet class
The Java Lesson 35:
Essential HTML to launch an applet and pass it parameters
The Java Lesson 36:
Mouse event processing
Java Lesson 37:
Menus and submenus
Java Lesson 38:
The WindowListener interface and the WindowAdapter class
Java Lesson 39:
An introduction to GridBagLayout
Java Lesson 40:
An introduction to the Java Collections API
Java Lesson 41:
Exception handling with try, catch, and finally blocks
Java Lesson 42:
Claiming and throwing exceptions
Java Lesson 43:
Multithreading, the Thread class, and the Runnable interface
Java Lesson 44:
An introduction to I/O and the File and FileDialog classes
Java Lesson 45:
Low-level and high-level stream classes
Java Lesson 46:
Using the RandomAccessFile class
Java Lessons by
Joh Huhtala: Update

Latest articles
 Java Profiler JProbe to Resolve Performance Problems Faster

 SSL with GlassFish v2, page 5

 SSL with GlassFish v2, page 4

 SSL with GlassFish v2, page 3

 SSL with GlassFish v2, page 2

 The Java Lesson 2: Anatomy of a simple Java program, page 2

 New site about Java for robots and robotics: both software and hardware.

 Exceptions -III: What's an exception and why do I care?

 Exceptions -II: What's an exception and why do I care?

 Exceptions: What's an exception and why do I care?

 Double your Java code quality in 10 minutes, here is receipt

 Murach's Java Servlets and JSP

 How to get ascii code from a char in Java?

 Can we just try without catch? Yes!

 Make Tomcat page load faster

 Make your Tomcat More secure - limit network address for certain IP addresses

 New Java book online starts now here...

 Implementing RESTful Web Services in Java

 Firefox trimming from 1 GB to 40 Mb with many tabs opened

 SSL with GlassFish v2

 My request to replublish Tech Tips

 Search JavaFAQ.nu site here

 New Advanced Installer for Java 6.0 brings XML updates and imports 3rd party MSI

 EJB programming restrictions

 Maven vs Ant or Ant vs Maven?

 Why Java does not use default value which it should?

 How to unsign signed bytes in Java - your guide is here

 The Java Lesson 3: Identifiers and primitive data types. Page 2

 The Java Lesson 7: Bitwise operations with good examples, click here! Page 4

 The Java Lesson 7: Bitwise operations with good examples, click here! Page 3

[ More in News Section ]

Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy