This is a JVM wrapper for TonLib that can be used with Java/Scala/Kotlin/etc.
TonLib is a C++ client-side library for interacting with TON.
The basic necessary functionality is safely and securely implemented in TonLib.
TonLib checks the Merkle-proofs of data received from the liteserver, so the library can be used with public liteservers.
Java interacts with TonLib via JNI, Client.java
and generated typed messages classes declared in TonApi.java
.
The repository contains the TonTestJava.java
example of use.
Compile and Run:
cd src
javac drinkless/org/ton/TonTestJava.java
java -cp . -Djava.library.path=$(pwd) drinkless/org/ton/TonTestJava
The repository contains already built libraries for Windows, MacOS and Ubuntu.
You can take the latest library and TonApi.java from TON autobuilds.
-
tonlib-java/ folder for MacOS and Ubuntu
-
native-lib.dll for Windows (You can take TonApi.java from MacOS or Ununtu autobuild)
Note: there are no autobuilds for the Apple M1 processor yet.
If necessary, you can manually rebuild the C++ libraries and re-generate TonApi.java as described below.
Java must be installed.
Check that the JAVA_HOME
variable is set.
Set JNI variables:
export JAVA_AWT_LIBRARY=NotNeeded
export JAVA_JVM_LIBRARY=NotNeeded
export JAVA_INCLUDE_PATH=${JAVA_HOME}/include
export JAVA_AWT_INCLUDE_PATH=${JAVA_HOME}/include
# export JAVA_INCLUDE_PATH2=${JAVA_HOME}/include/<platform>
# for MacOS:
export JAVA_INCLUDE_PATH2=${JAVA_HOME}/include/darwin
# for Linux:
export JAVA_INCLUDE_PATH2=${JAVA_HOME}/include/linux
Install the newest versions of make, cmake (version 3.22.1 or later), OpenSSL (version 1.1.1 or later, including C header files), and g++ or clang (or another C++14-compatible compiler as appropriate for your operating system).
git clone --recurse-submodules -j8 https://github.com/newton-blockchain/ton
cd ton
git checkout wallets
cd example/android/
mkdir build
cd build
cmake -DTON_ONLY_TONLIB=ON ..
cmake --build . --target prepare_cross_compiling
cmake --build . --target native-lib
After prepare_cross_compiling
your will get generated TonApi.java
in ton/example/android/src/drinkless/org/ton/TonApi.java
After native-lib
your will get libnative-lib.so
(for Linux) or libnative-lib.dylib
(for MacOS) in build directory.
Copy TonApi.java
and libnative-lib
to your project.