# Building the Jini(TM) Technology Packages from Source Code

The Jini(TM) Technology Starter Kit (starter kit) includes support for generating binary (JAR) files and documentation from the provided source code using the GNU Make utility (available from the Free Software Foundation, `http://www.fsf.org/`). The build procedure has numerous dependencies on UNIX commands, and has only been tested in the Solaris(TM) Operating System.

This page describes how to use `gmake` to build from source code. Geoff Arnold has made an Ant build script available that you might prefer to try instead.

It is not necessary to build the JAR files from source code to get started with Jini technology--the JAR files are provided for you as part of the software product, as it is extracted, under the `lib` subdirectory of install_dir. If you are unsure about how to get started, please point your browser at the `index.html` file in the install_dir directory.

Note: Please do not attempt to build the starter kit JAR files without first taking note of the Outrigger build issues, and the platforms on which the starter kit has been tested.

## Build instructions

The build procedure requires that you have the `bin` directory of the Java(TM) 2 SDK, Standard Edition, v 1.4 (or later) in your executable search path. To build the starter kit JAR files, you'll need to:

        cd install_dir/source/vob/jive/src

        gmake PRODUCT=1  <target>

Where:

- The value assigned to `PRODUCT` is arbitrary (any non-empty string will suffice)

- The basic targets are:

  > all
  > Compiles the class files for all of the starter kit source code, and generates Java RMI stub classes. The class files will be placed in the directory `install_dir/source/vob/jive/classes`.

  > jars
  > Creates the JAR files for the starter kit, using the compiled class files. The compiled class files must already have been created. The JAR files will be placed in the directory `install_dir/source/vob/jive/lib`.

  > clean
  > Removes the compiled class files and the JAR files.

  > doc
  > Generates API documentation for the starter kit, using the Javadoc(TM) tool. The documentation will be placed in the directory `install_dir/source/vob/jive/doc/api`.

If you port this build process to another platform and wish to submit it for potential use in our next release, please send the makefile to `jini-comments@java.sun.com` for consideration.

## Outrigger build issues

`PersistentOutriggerImpl` (the contributed, persistent implementation of JavaSpaces(TM) technology from Sun Microsystems) delegates persistence operations to an implementation of the `com.sun.jini.outrigger.Store` interface. By default `PersistentOutriggerImpl` uses the `com.sun.jini.outrigger.logstore.LogStore` implementation of `Store`. `LogStore` uses Progress Software's ObjectStore PSEPro for Java (PSEPro) to persist the contents of the space to disk. PSEPro requires that the class files for any objects that are going to be persisted be post-processed. Our license with Progress Software allows us to distribute the PSEPro runtime classes, but not the development tools necessary to perform the post-processing. As a result, unless you have obtained the PSEPro development tools (in particular Release 6.0 Service Pack 7), you cannot perform a complete build of `LogStore` from its source code. You can perform a complete build of all of the other software in the starter kit, including `TransientOutriggerImpl` (the contributed, non-persistent implementation of JavaSpaces technology from Sun Microsystems) and `PersistentOutriggerImpl` (less `LogStore`), by following the build procedure for the starter kit, described previously.

Even without the PSEPro development tools, you can still build a a portion of `LogStore`. In particular, you can build any class not listed below.

         com.sun.jini.outrigger.logstore.BaseObject
         com.sun.jini.outrigger.logstore.ByteArrayWrapper
         com.sun.jini.outrigger.logstore.Resource
         com.sun.jini.outrigger.logstore.Registration
         com.sun.jini.outrigger.logstore.PendingTxn
         com.sun.jini.outrigger.logstore.PendingTxn.PendingOp
         com.sun.jini.outrigger.logstore.PendingTxn.WriteOp
         com.sun.jini.outrigger.logstore.PendingTxn.TakeOp
         com.sun.jini.outrigger.logstore.BackEnd.LastLog

Each of these files needs to be post-processed by the PSEPro development tools. The post-processed versions of these classes are in `outrigger-logstore.jar` along with the various non post-processed classes that `LogStore` requires, and some classes generated by PSEPro.

When you use the procedure described at the beginning of this page to build the starter kit, any class not included in the above list is (re)built from source code as necessary, and optionally, new JAR files are created and placed in the `install_dir/source/vob/jive/lib` directory. The exceptions to this are `prebuilt-outrigger-logstore.jar`, `pro.zip`, and `outrigger-logstore.jar`. If you do not have the PSEPro development tools installed, `prebuilt-outrigger-logstore.jar` and `pro.zip` are copied from from `install_dir/lib`, and `outrigger-logstore.jar` is re-created from `install_dir/source/vob/jive/lib/prebuilt-outrigger-logstore.jar` and the newly built classes.

If your goal is to build a new version of any of the software except `LogStore`, this process allows you to modify and rebuild any source file in the starter kit that is not in the `com.sun.jini.outrigger.logstore` package. If your goal is to build a new version of `LogStore`, this process also allows you to modify and rebuild any files not in the exclusion list above.

Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.