Other Java platform SDKs may be applicable but are currently untested.
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.
$ sudo apt-get install libprotobuf-java protobuf-compiler build-essential cmake
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
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
Obtain the source code:
“0.10” branch of https://code.cor-lab.org/git/rsc.git
“0.10” branch of https://code.cor-lab.org/git/rsb.git.protocol
Build and install RSC Library
$ cd rsc
$ mkdir -p build && cd build
$ cmake -DCMAKE_INSTALL_PREFIX=PREFIX ..
$ make install
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.
Checkout RSB and its immediate dependencies from “0.10” branch of https://code.cor-lab.org/git/rsb.git.java.
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.
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
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.