image:https://travis-ci.org/iotaledger/iota.lib.java.svg?branch=master[link="https://travis-ci.org/iotaledger/iota.lib.java",title="Build Status"]

= Introduction

The JOTA library is a simple Java wrapper around link:http://www.iotatoken.com[IOTA] Node's JSON-REST HTTP interface.

It allows to connect easily using Java directly to a local or a remote
link:https://iota.readme.io/docs/syncing-to-the-network[IOTA node].

- *Latest release:* 0.9.3
- *Compatibility:* fully compatible with IOTA IRI v1.4.0
- *API coverage:* 14 of 14 commands fully implemented
- *License:* Apache License 2.0
- *Readme updated:* 2017-09-23 21:05:02 (UTC)

A list of all *IOTA* JSON-REST API commands currently supported by JOTA wrapper can be found in the `Commands` enum
(see link:https://github.com/davassi/JOTA/blob/master/src/main/java/jota/IotaAPICommands.java[here] for more details).

JOTA java wrapper is being designed to be thread-safe and simplest as possible in order to be easily maintainable,
accordingly with the ongoing natural evolution of IOTA's API. All the boilerplate code for connecting to the node REST
interface has been eliminated using Retrofit.

== Technologies & dependencies

The JOTA library has been designed to be used with Java6+, in order to promote compatibility with Android.

Core dependencies:

- link:https://square.github.io/retrofit/[Retrofit Client 2.1.0]
- link:https://github.com/google/gson[Gson JSON Processor]
- link:https://github.com/rzwitserloot/lombok[Lombok 1.16.2]

Other dependencies:

- link:http://www.slf4j.org/[Simple Logging Facade for Java 1.7.21]
- link:http://commons.apache.org/proper/commons-lang/[Apache Commons Lang 3.3.2]

== Getting started [[getting-started]]

Connecting to your local node with the default settings is quite straightforward: it requires only 2 lines of code.
For example, in order to fetch the Node Info:

        IotaAPI api = new IotaAPI.Builder().build();
        GetNodeInfoResponse response = api.getNodeInfo();

or if you need to connect to a remote node:

	IotaAPI api = new IotaAPI.Builder() 
		.protocol("http")
		.host("somewhere_over_the_rainbow")
		.port("14265") 
		.build();
	
	GetNodeInfoResponse response = api.getNodeInfo();

In order to communicate with *IOTA node*, JOTA needs to be aware of your node's exact configuration. If you don't want
to use the builder, the easiest way of providing this information is via a `node_config.properties` file, for example:

    iota.node.protocol=http``****************``
    iota.node.host=127.0.0.1
    iota.node.port=14265

== Warning
 -   This is pre-release software!
 -   There may be performance and stability issues.
 -   You may loose all your money :)
 -   Please report any issues using the <a href="https://github.com/iotaledger/iota.lib.java/issues">Issue Tracker</a>

== Examples

There's an extensive list of test coverages on the `src/test/java` directory that can be used as reference.

== Documentation

A hosted version of the javadoc for the latest release can be found [here](https://iotaledger.github.io/iota.lib.java/javadoc/)


== Supporting the project

If JOTA has been useful to you and you feel like contributing, consider posting a bug report or a pull request.

That's it!
