#jFed - A Java-based framework for testbed federation#

jFed is a client suite for testbeds which support the SFA architecture and API's.

To get started, check out [http://jfed.iminds.be](http://jfed.iminds.be)!

##Documentation##

Documentation on how to use jFed can be found at [http://jfed.iminds.be/documentation/](http://jfed.iminds.be/documentation/).
You can also checkout the [documentation of the Fed4FIRE-project](http://doc.fed4fire.eu), which uses jFed in it's tutorials.

##Using jFed##
For more information on how to start using jFed, check out [http://jfed.iminds.be/get_started/](http://jfed.iminds.be/get_started/)


##Using the jFed source##
You are very welcome to use the jFed source. But for most use cases, we recommend that you take a look into
the *jFed Experimenter CLI* to integrate jFed into your work.

###Building jFed manually###
jFed is built on top of Java. The low-level library is written in Java 6. The higlevel-library and GUI's in Java 8.
We use Apache Maven 3 to build jFed.

To initialize a build, [install Maven](http://maven.apache.org/) and type:

    mvn package

Most Java IDE's also support Maven natively, or through a plugin, to easy development.

###The structure of jFed###
For a high-level overview of the structure of jFed, please read the [features-page](http://jfed.iminds.be/features/) first.

jFed consists out of the following modules:

 - Core modules:
    - *library*: The low-level library which makes all the calls.
    - *highlevel-library*: The high-level library which wrap the low-level calls into useful functions.
    - *rspec*: A representation of an RSpec in Java-classes.
    - *geni-rspec-binding*: Contains Java-classes generated from the Geni Rspec XSD's. These classes are never edited.

 - Probe modules:
    - *probe-cli*: A CLI of the probe
    - *probe-gui*: A GUI of the probe
    - *scanner-cli*: Scans URLs to try to find endpoints of testbed API's.

 - Automated testing modules:
    - *automated-testing*: Core functionality and CLI of the automated tester.
    - *automated-testing-gui*: GUI for the automated tester

 - Experimenter modules:
    - *experimenter-cli*: CLI to execute experiments
    - *experimenter-gui*: GUI to design and run experiments
    - *rspec-fx*: An representation of an RSpec in Java-classes, but with support for JavaFX-properties.

 - Support modules:
    - *base-gui*: Contains some support-classes for the different GUI's (eg. login-screen, SSH-terminal/PuTTY-support, etc.)
    - *probe-gui-onejar, automated-testing-gui-onejar, experimenter-gui-onejar*: these modules unpack all dependencies,
    and repackage them into one jar. This creates an easy-to-use single jar to distribute and use.
    - *preloader-gui*: The loading dialog which is displayed while Java Web Start is running.
    - *bugreport-viewer-gui*: A GUI to inspect bug reports
    - *ganymed-ssh-2-modified-for-jfed*: Slightly modified version of the [Ganymed SSH-2](https://code.google.com/p/ganymed-ssh-2/) library.
    - *examples*: contains some simple examples on how to use the high-level library.

##License##
jFed is distributed under the MIT-license. See [LICENSE.txt](license.txt)
