Fall 2001 - Michael Elhadad

Topics in Software Engineering - Fall 2001

This is a mini-project course (2 credits) focusing on the exploration of the JINI platform for the development of distributed applications in Java.

Objectives

The objectives of the project are:
  1. Learn the JINI platform and standards (JINI, RMI, Discovery, Join, Lookup services, Leasing, Transactions, Remote Events, JavaSpaces)
  2. Get practical experience with JINI
  3. Develop a JINI-based application simulating a network of devices.

Project Functionality

The project will build a network of devices with the following functionality:
  1. JINI clients will simulate devices such as cameras, printers, cellular phones.
  2. JINI services will make available personal information to users on the network (list of contacts, documents, todo list).
  3. Devices can leave and join the network without configuration.
  4. Devices connect to services based on their location.
  5. Administration: an Administrator console can monitor the state of the distributed system from anywhere in the network -- including the availability of services, number of connected devices and currently active transactions.

Lectures

  1. Introduction to JINI: scope, starting points (RMI, Corba), network programming fallacies, objectives.
  2. JINI Hello World: lookup services, JINI service, JINI client, proxies.
    Power point presentation
    HTML presentation
  3. Discovery: discovery protocol, attributes, attribute beans.
    The Java Event model is used extensively in Jini.
    Chapter 6 of "Core Jini" on line.
    Discovery mechanisms:
    Attribute mechanisms:

Assignments

  1. Assignment 1: due date Thu 20 Dec 2001.

    "Hello World" with attributes and remote proxy.

    The original "Jini Hello World" program showed a client that connects to a Jini Service, downloads a proxy from it, and executes the proxy locally.

    The code for the HelloWorld application is:

    In the new version, you must introduce two modifications:

    1. The proxy must return a reference to a remote object that will execute the code on the server machine and not on the client machine. The remote object must, therefore, be an RMI object which is instantiated in the HelloWorldService process.
    2. There must be two distinct instances of the HelloWorldService, distinguished by their attributes. Run the 2 instances on 2 distinct hosts. The client must request a specific instance based on the attribute. To this end, change the following line in the client code:

      template = new ServiceTemplate(null, types, null);

      By specifying the appropriate attribute in the template, verify that the client obtains an instance of a different proxy.

Resources

  1. Jini.org
  2. Sun's JINI page

Last modified 16 Dec 2001 Michael Elhadad