iota-sdk 0.3.0

The IOTA SDK provides developers with a seamless experience to develop on IOTA by providing account abstractions and clients to interact with node APIs.
Documentation
# IOTA Client Java Library

Get started with the official IOTA Client Java library.

## Requirements

minimum Java version >= 8

## Use in your Android project (Android Studio)

1. Download the `iota-client-1.0.0-rc.3.jar` file from the [GitHub release]https://github.com/iotaledger/iota.rs/releases/tag/iota-client-java-1.0.0-rc.3 and add it as a library to your project.
2. Download the `iota-client-1.0.0-rc.3-android.zip` file from the [GitHub release]https://github.com/iotaledger/iota.rs/releases/tag/iota-client-java-1.0.0-rc.3, unzip it and add the `jniLibs` folder with its contents to your Android Studio project as shown below:

```
project/
├──src/
   └── main/
       ├── AndroidManifest.xml
       ├── java/
       └── jniLibs/ 
           ├── arm64-v8a/           <-- ARM 64bit
           │   └── libiota-client.so
           │   └── libc++_shared.so
           ├── armeabi-v7a/         <-- ARM 32bit
           │   └── libiota-client.so
           │   └── libc++_shared.so
           │── x86/                 <-- Intel 32bit
           │  └── libiota-client.so
           │  └── libc++_shared.so
           └── x86_64/              <-- Intel 64bit
              └── libiota-client.so
              └── libc++_shared.so
```

## Use in your Java project (Linux, macOS, Windows)

Depending on your operating system, add one of the following dependencies to your `build.gradle` file:

#### linux-x86_64
```
implementation 'org.iota:iota-client:1.0.0-rc.3:linux-x86_64'
```

#### windows-x86_64
```
implementation 'org.iota:iota-client:1.0.0-rc.3:windows-x86_64'
```

#### aarch64-apple-darwin
```
implementation 'org.iota:iota-client:1.0.0-rc.3:aarch64-apple-darwin'
```

#### osx-x86_64
```
implementation 'org.iota:iota-client:1.0.0-rc.3:osx-x86_64'
```

## Use the Library

In order to use the library, you need to create a `Client` instance as illustrated below:

```java
import org.iota.Client;
import org.iota.types.ClientConfig;
import org.iota.types.exceptions.InitializeClientException;
import org.iota.types.exceptions.ClientException;
import org.iota.types.responses.NodeInfoResponse;

public class HelloWorld {
    public static void main(String[] args) throws InitializeClientException, ClientException {
        // Build the client.
        Client client = new Client(new ClientConfig().withNodes(new String[]{"https://api.testnet.shimmer.network"}));

        // Get the node information for a given node.
        NodeInfoResponse response = client.getNodeInfo();

        // Print the URL of the node that was requested.
        System.out.println(response.getNodeUrl());

        // Print the node information for the requested node.
        System.out.println(response.getNodeInfo());
    }
}
```

## What's Next?

Now that you are up and running, you can get acquainted with the library using
its [how-to guides](https://wiki.iota.org/shimmer/iota.rs/how_tos/run_how_tos/) and the
repository's [code examples](https://github.com/iotaledger/iota.rs/tree/develop/client/bindings/java/examples/src).

## Instead, build everything from scratch yourself:

If you don't like to use the provided libraries and instead want to build everything yourself from scratch:

### Build for Android:

Requirements:

- minimum Java version >= 8
- Android Studio with NDK
- latest stable version of Rust
- cargo-ndk (https://github.com/bbqsrc/cargo-ndk)

1. Generate the JAR:
```
git clone https://github.com/iotaledger/iota.rs
cd iota.rs/client/bindings/java
./gradlew jarWithoutNativeLibs
```

2. You will find the built JAR in the `lib/build/libs` directory. Add it as a library to your Android project.

3. Install the Android targets you want to support:
```
 rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-android i686-linux-android
```

4. Build the native library for your Android targets:
```
cd lib/native
cargo ndk -t arm64-v8a -t armeabi-v7a -t x86 -t x86_64 -o ./jniLibs build --release
```

5. On success, you will find the built native libraries in the `jniLibs/` directory like:
```
── jniLibs/ 
    ├── arm64-v8a/           <-- ARM 64bit
    │   └── libiota-client.so
    ├── armeabi-v7a/         <-- ARM 32bit
    │   └── libiota-client.so
    │── x86/                 <-- Intel 32bit
    │  └── libiota-client.so
    └── x86_64/              <-- Intel 64bit
        └── libiota-client.so
```

6. Each folder is missing its `libc++_shared.so`. You can find them in the configured Android NDK folder like:
```
find $ANDROID_NDK_HOME -name "libc++_shared.so"
```

7. Copy the found `libc++_shared.so` files to their respective folder inside the `jniLibs` directory:
```
── jniLibs/ 
    ├── arm64-v8a/           <-- ARM 64bit
    │   └── libiota-client.so
    │   └── libc++_shared.so
    ├── armeabi-v7a/         <-- ARM 32bit
    │   └── libiota-client.so
    │   └── libc++_shared.so
    │── x86/                 <-- Intel 32bit
    │  └── libiota-client.so
    │  └── libc++_shared.so
    └── x86_64/              <-- Intel 64bit
        └── libiota-client.so
        └── libc++_shared.so
```

8. Add the `jniLibs` folder with its contents to your Android Studio project as shown below:
```
project/
├──src/
   └── main/
       ├── AndroidManifest.xml
       ├── java/
       └── jniLibs/ 
           ├── arm64-v8a/           <-- ARM 64bit
           │   └── libiota-client.so
           │   └── libc++_shared.so
           ├── armeabi-v7a/         <-- ARM 32bit
           │   └── libiota-client.so
           │   └── libc++_shared.so
           │── x86/                 <-- Intel 32bit
           │  └── libiota-client.so
           │  └── libc++_shared.so
           └── x86_64/              <-- Intel 64bit
              └── libiota-client.so
              └── libc++_shared.so
```

### Build for Linux, macOS, Windows

Please note, following instructions build the library for your host OS/architecture only.

Requirements:

- minimum Java version >= 8
- latest stable version of Rust

1. Generate the JAR:
```
git clone https://github.com/iotaledger/iota.rs
cd iota.rs/client/bindings/java
./gradlew jar
```

2. You will find the built JAR in the `lib/build/libs` directory. Add it as a library to your Java project.