Java Implementation

Supported Java Version

  • Oracle Java Platform, Standard Edition 6

Other Java platform SDKs may be applicable but are currently untested.

Dependencies

Required Dependencies

Optional Dependencies (building without these is possible, but some features will be missing)

Important

The Java implementation of RSB depends on RSB‘s language independent network protocol specification. This specification is maintained in the RSB protocol sub-project. This project and its transitive dependencies should already be installed on your system if you followed the C++ installation guidelines . If the C++ implementation of RSB is already installed, you can skip the section Installation of Dependencies on Debian-based Systems and proceed to the Installation of RSBJava section.

Installation of Dependencies on Debian-based Systems

$ sudo apt-get install libprotobuf-java protobuf-compiler build-essential cmake

Installation of Dependencies on MacOS using Homebrew

For installing RSB and its dependencies from source on Darwin, we recommend to use Homebrew, an easy-to-use package manager for MacOS.

$ brew install cmake protobuf

Installation of the Spread Toolkit

To install Spread, source archives are available after registration for download at http://www.spread.org/download/spread-src-4.1.0.tar.gz. Installation of Spread is straightforward on MacOS and Linux as it has no external dependencies and comes with a standard configuration script.

Note

In the following sections, PREFIX specifies the target directory of the installation.

$ tar xzf spread-src-4.1.0.tar.gz
$ cd spread-src-4.1.0
$ ./configure --prefix=PREFIX
$ make
$ make install

Installation of RSC and RSBProtocol

  1. Obtain the source code:

    RSC

    “0.10” branch of https://code.cor-lab.org/git/rsc.git

    RSB Protocol

    “0.10” branch of https://code.cor-lab.org/git/rsb.git.protocol

  2. Build and install RSC Library

    $ cd rsc
    $ mkdir -p build && cd build
    $ cmake -DCMAKE_INSTALL_PREFIX=PREFIX ..
    $ make install
    
  3. Install RSB Protocol Definitions

    $ cd rsb.git.protocol
    $ mkdir -p build && cd build
    $ cmake -DCMAKE_INSTALL_PREFIX=PREFIX ..
    $ make install
    

    Note

    These protocol definitions are shared across programming languages.

Installation of RSBJava

  1. Checkout RSB and its immediate dependencies from “0.10” branch of https://code.cor-lab.org/git/rsb.git.java.

  2. Invoke ant supplying build properties on the commandline or via file:build.properties (see below)

    The following properties are used to configure the build:

    Ant Property

    Meaning

    Example

    env.prefix

    Location into which RSB should be installed

    /vol/cit/share

    pbuf.protoc

    Location of protocol buffer compiler (protoc or protoc.exe)

    /usr/bin/protoc

    pbuf.protopath

    Location of RSB protocol IDL files (see TODO)

    /vol/cit/share/rsbprotocol

    pbuf.lib

    Location of Java protocol buffer runtime library

    /usr/share/java/protobuf.jar

    spread.daemon

    Location of Spread daemon executable

    /vol/cit/sbin/spread

    All properties can be supplied on the ant commandline using the -DNAME=VALUE syntax or by creating a build.properties file containing lines of the form NAME = VALUE.

    An exemplary ant dist command, which builds the RSB jar library, may look as follows:

    $ ant -Dpbuf.protoc=/usr/bin/protoc               \
          -Dpbuf.protopath=/vol/cit/share/rsbprotocol \
          -Dpbuf.lib=/usr/share/java/protobuf.jar     \
          -Dspread.daemon=/vol/cit/sbin/spread        \
          dist
    

    The equivalent build.properties file looks like this:

    pbuf.protoc = /usr/bin/protoc
    pbuf.protopath = /vol/cit/share/rsbprotocol
    pbuf.lib = /usr/share/java/protobuf.jar
    spread.daemon = /vol/cit/sbin/spread
    

    In the presence of this file, the ant command reduces to ant dist.

  3. Installation of Java archive

    To install RSB jars into the configured prefix (e.g., into PREFIX/share/java), the following ant command can be used:

    $ ant install
    

Testing the Installation

The Java implementation of RSB comes with a set of unit tests, which you may use to check the compiled code. Executing the test suite is straightforward. To do so, the following ant target needs to be invoked (please note that a Spread daemon is automatically started by the ant script):

$ ant test

You should see a console output similar to the following (shortened excerpt):

$ ant -Dpbuf.protoc=/opt/local/bin/protoc           \
      -Dpbuf.protopath=/vol/cit/share/RSBProtocol   \
      -Dpbuf.lib=/opt/local/share/java/protobuf.jar \
      -Dspread.daemon=/vol/cit/sbin/spread          \
      test
Buildfile: /Users/swrede/Workspace/RSBJava/build.xml

init:
     [echo] Using pbuf: /opt/local/share/java/protobuf.jar
     [echo] Test report dir: /Users/swrede/Workspace/RSBJava/testreports

protocol:

compile:
    [javac] /Users/swrede/Workspace/RSBJava/build.xml:105: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 1 source file to /Users/swrede/Workspace/RSBJava/build/classes
    [javac] /Users/swrede/Workspace/RSBJava/build.xml:110: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 1 source file to /Users/swrede/Workspace/RSBJava/build/examples

test-compile:
    [javac] Compiling 25 source files to /Users/swrede/Workspace/RSBJava/build/test

test:
    [junit] Running rsb.DefaultErrorHandlerTest
    [junit] Testsuite: rsb.DefaultErrorHandlerTest
    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0,083 sec
    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0,083 sec
    [junit] ------------- Standard Error -----------------
    [junit] 05.09.2011 11:12:38 rsb.DefaultErrorHandler warning
    [junit] SCHWERWIEGEND: A warning was reported to the ErrorHandler: java.lang.RuntimeException: test
    [junit] 05.09.2011 11:12:38 rsb.DefaultErrorHandler error
    [junit] SCHWERWIEGEND: An error was reported to the ErrorHandler: java.lang.RuntimeException: test
    [junit] ------------- ---------------- ---------------

<output of more tests omitted>

    [junit] Running rsb.util.UUIDToolsTest
    [junit] Testsuite: rsb.util.UUIDToolsTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0,164 sec
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0,164 sec
    [junit]
    [junit] Testcase: testGetNameBasedUUID took 0,069 sec
    [junit] Testcase: testByteArrayConversion took 0,001 sec

BUILD SUCCESSFUL
Total time: 48 seconds

If no failed test cases are reported, the Java implementation of RSB is likely to work correctly on your machine.