This is the official Java client library, which allows you to do the following:
- Create transactions
- Sign transactions
- Interact with an IRI node
This is beta software, so there may be performance and stability issues. Please report any issues in our issue tracker.
Table of contents |
---|
Prerequisites |
Downloading the library |
Getting started |
API reference |
Examples |
Change logs |
Supporting the project |
Joining the discussion |
License |
To use the IOTA Java client library, your computer must have the following minimum requirement:
- Java 6 (or higher)
The IOTA Java client library is available on jitpack.io.
The IOTA Java client library uses the following third-party libraries:
- Retrofit 2 type-safe HTTP client:
2.3.0
- Simple Logging Facade for Java:
1.7.25
- Apache Commons Lang:
3.6
- Apache Commons IO:
2.5
- Legion of the Bouncy Castle Java cryptography APIs:
1.58
To download the IOTA Java client library and its dependencies, you can use one of the following options:
- Download the library with Gradle
- Download the library with Maven
- Download the library manually
-
Add the following repository to your root
build.gradle
file (not your modulebuild.gradle
file):allprojects { repositories { maven { url 'https://jitpack.io' } } }
-
Add the following dependency to your module
build.gradle
file:dependencies { compile 'com.github.iotaledger:iota-java:1.0.0-beta3' }
-
Add the following repository to your root
pom.xml
file:<repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories>
-
Add the following dependency to your module
pom.xml
file:<dependency> <groupId>com.github.iotaledger.iota-java</groupId> <artifactId>jota</artifactId> <classifier>jar-with-dependencies</classifier> <version>[VERSION_INFORMATION]</version> </dependency>
-
Change the value of the
<version>
tag to either a release number or the first 10 characters of a Git commit hash:<version>a98de8ea50</version>
or<version>1.0.0-beta3</version>
Note: Find the latest version on the Jitpack page.
-
Clone or download the GitHub repository.
Inside the project, you'll have the following directories:
- jota
- jota-parent
-
Reference the jota directory in your project
-
In the jota directory, run the following command:
mvn clean install
You'll have a .jar file called jota-[VERSION]-jar-with-dependencies.jar
, depending on your version of the library.
After you've downloaded the library, you can connect to an IRI node to send transactions to it and interact with the ledger.
To connect to a local IRI node, do the following:
IotaAPI api = new IotaAPI.Builder().build();
GetNodeInfoResponse response = api.getNodeInfo();
To connect to a remote IRI node, do the following:
IotaAPI api = new IotaAPI.Builder()
.protocol("http")
.host("URL OF THE REMOTE IRI NODE")
.port("14265")
.build();
GetNodeInfoResponse response = api.getNodeInfo();
Note: To separate your IRI node configuration from the implementation, you can also specify your IRI node configuration in a Java .properties
file or as command line flags. These options are useful if you develop an open-source app which is deployed on a CI and don't want contributors to see the internal IRI node configuration.
Example .properties files
iota.node.protocol=http
iota.node.host=127.0.0.1
iota.node.port=14265
Most API calls are synchronous. Therefore, we recommend that you call the API from a background thread or a worker thread to stop the API from blocking other threads such as the UI or the main thread.
For a full list of API commands for the IOTA Java client library, go to the GitHub page.
Here are some of the most commonly used API functions:
getTransactionsObjects
findTransactionObjects
getTransactionsObjects
getLatestInclusion
broadcastAndStore
getNewAddress
getInputs
prepareTransfers
sendTrytes
sendTransfer
replayBundle
getBundle
getTransfers
initiateTransfer
getAccountData
We have a list of test cases on the src/test/java
directory that you can use as a reference when developing apps with IOTA.
A good starter is the IotaAPITest
case.
- Changes in 1.0.0-beta3
- Changes in 1.0.0-beta2
- Changes in 1.0.0-beta1
- Changes in v0.9.10
- Changes in v0.9.6
- Changes in v0.9.5
- Changes in v0.9.4
- Changes in v0.9.3
- Changes in v0.9.2
- Changes in v0.9.1
If the IOTA Java client library has been useful to you and you feel like contributing, consider posting a bug report, feature request or a pull request.
We have some basic contribution guidelines to keep our code base stable and consistent.
If you want to get involved in the community, need help with getting setup, have any issues related with the library or just want to discuss blockchain, distributed ledgers, and IoT with other people, feel free to join our Discord.
The Apache 2.0 license can be found here.