Our Latest Upgrade for Exonum Java Developers

Exonum
3 min readAug 2, 2019

--

We recently released Java Binding 0.7, which includes several new features, in response to community requests and our own improvements. The full list of changes and updates can be found in our Changelog. In this article, we highlight some of the outstanding new features in versions 0.6 and 0.7.

New Features of Java Binding 0.6

The first new feature, and a great step towards improving usability, is packaging and shipping Exonum Java application as a single archive. The application contains all the necessary dependencies to run and develop Java services on Exonum. It no longer requires the installation of the Rust compiler and build of Exonum Java. By eliminating these steps, it will be even easier to launch your custom blockchain solutions in Java! Our Installation Guide demonstrates how to use this new feature.

The second important usability improvement is the ability to launch multiple Java services within one Exonum project (previously, only one Java service could be launched in a project). The latest version of Exonum Java allows you to upload as many Java service packages into the project as you need at the time of network configuration. The nodes will catch those service files and will be configured at the start with all the provided Java services.

Learn how to install several Java services at once in our step-by-step guide.

Reminder: The Exonum Java application also features three built-in Exonum core services — configuration service, time service and Bitcoin anchoring service — that are written in Rust.

New Features of Java Binding 0.7

We are proud to announce that Java services have become considerably faster with our upgraded transaction processing mechanism. In earlier versions, Java services were 2–3 times slower compared to equivalent Rust services. We’ve now reduced this rate to 15–20 percent, and we expect more performance improvements in upcoming versions.

We also have implemented the Exonum Testkit module specifically for Java services. This Testkit provides the same testing possibilities as the one for Rust services. It allows for Java developers to execute integration tests on Java service operations — namely transaction processing and read requests.

To make this possible, the Testkit emulates a blockchain network so developers can test transaction business logic in Java. Also, as its Rust analogue, the Testkit recreates the operation of a single node only (either a validator or an auditor). This means the emulated network operates in a synchronous environment, without consensus and network operations involved. For your convenience, we have prepared some detailed testing examples in our documentation.

The Testkit is shipped together with the Exonum Java application package. If you are new to Exonum and plan to install our Java instance for the first time, you can apply the new Testkit right out of the box!

Exonum Java Light Client v0.3 Is Available

Exonum Java releases 0.6 and 0.7 included upgrades for our Exonum Java Light Client. First, we improved the mechanism for retrieving blocks from the blockchain according to user’s requests. The full list of method updates is available in our Changelog.

We have also implemented the possibility to add custom prefixes to the endpoint addresses for routing API requests. This provides some flexibility for the cases when a middleware, e.g. proxy, is used in the network setup.

Thanks for reading! As always, we are available to answer your questions and requests related to Exonum and/or Java Binding in our Gitter channels.

A note: The new features of Exonum Java Binding tool listed here are based on Exonum Core 0.11. Exonum Java Light client 0.3 is compatible with Exonum service based on Exonum Core 0.11 and Exonum Java Binding 0.6–0.7.

--

--

Exonum

Bitfury’s open-source framework for building private and/or permissioned blockchains.