External Dependencies

JSAMP is a pure Java library. It should run on any Java Runtime Environment of version J2SE1.4 or above. It does not require any external libraries, though see below.

In order to perform the necessary XML-RPC communications for use with the SAMP Standard Profile, a pluggable layer is used. This means that you can choose which XML-RPC library is used. Currently, there are the following possibilities:

Internal
A standalone library implementation is provided within JSAMP, so if you wish to use this, no external dependencies are required.
Apache XML-RPC 1.2
To use the Apache XML-RPC library, the Apache classes must be on the class path. They can be found in the jar file xmlrpc-1.2-b1.jar.
Roll your own
By implementing the class org.astrogrid.samp.xmlrpc.XmlRpcKit you can provide your own implementation, perhaps based on a third party XML-RPC library.

In some cases you can choose which of these is used by supplying particular implementations of the classes in the xmlrpc package. Mostly though, an implementation will be chosen without any explicit choice in the application code. In this case, you can control which implementation is used by setting the value of the jsamp.xmlrpc.impl system property.

The internal implementation was introduced as an experimental measure, but it seems to be quite reliable and of comparable speed to the Apache one. The internal implementation is therefore recommended for most purposes.

Internal Dependencies

If you are embedding JSAMP into your own application code but want to keep the size of the additional class files to a minimum, you can avoid incorporating all of the classes in the built jar file. The subordinate packages are arranged in a modular way. They are organised as follows:

org.astrogrid.samp
Basic classes required throughout the library. You need these whatever you're doing.
org.astrogrid.samp.client
Classes intended for use by application authors writing SAMP clients.
org.astrogrid.samp.hub
Classes providing the hub implementation. If you are only writing a client which will not contain an embedded hub, you do not need these classes.
org.astrogrid.samp.gui
Utility classes providing GUI components for visual display of SAMP activity. These classes are not required for basic client or hub operations.
org.astrogrid.samp.test
Classes providing the hub test suite and some diagnostic tools intended for debugging SAMP systems. These are not intended for use in third party applications. This does not however contain unit tests for JSAMP itself, which are not present in the distributed jar file.
org.astrogrid.samp.bridge
Classes for the Bridge application, which can connect two or more hubs together.
org.astrogrid.samp.httpd
Simple HTTP server implementation. This is required by the internal XML-RPC implementation. It may also provide useful utility functionality for client applications who wish to serve resources over HTTP.
org.astrogrid.samp.xmlrpc
Classes which deal with XML-RPC based communications and the implementation of the Standard Profile. Everything in the packages above is independent of the Profile used, so if for some reason you are using a non-standard profile, you may not need the xmlrpc* packages. The classes here define a pluggable interface to XML-RPC implementations; one or other of the provided implementations, or a custom-written one, will be required as well to make use of these classes.
org.astrogrid.samp.xmlrpc.apache
Implementation of the pluggable XML-RPC layer based on the Apache XML-RPC library. To use these classes you will need the Apache XML-RPC library on the classpath as well. If you are using the internal XML-RPC implementation, these classes are not required.
org.astrogrid.samp.xmlrpc.internal
Implementation of the pluggable XML-RPC layer which requires no external libraries. If you are using the Apache library or a home-grown XML-RPC implementation, these classes are not required.
org.astrogrid.samp.web
Implementation of the Web Profile hub and clients. The Web Profile is XML-RPC based, and requires some of the classes in the org.astrogrid.samp.xmlrpc* packages as well.