In June we have announced the very first release of Java Binding, which has opened the door to the Exonum framework for the Java community. Today we are happy to present Exonum Java Binding version 0.3. The new version incorporates features and improvements that generally make the lives of Java engineers, who are willing to try out Exonum, much easier. Herewith, we are pleased to share a review of its highlights.
As mentioned in our Roadmap, the core of our framework, written in Rust, is to shift to the Protobuf data serialization format. And while we are still on the way to that target, we have already been using Protobuf for clients' data in our Java services. In this very release, in order to simplify the process of saving data into the Exonum storage we provide users with a standard
Serializer for any type of Protobuf messages. Besides, we elaborated a set of built-in serializers for Java primitive types and some Exonum library types that do not use Protobuf for their serialization. The present list of serializers covers the most often-used entities and has been developed out of the natural usability requirement for active Java service developers. Meanwhile, it is worth mentioning that all previously user-developed serializers will continue to operate correctly. Besides the available built-in serializer for Protobuf messages, users can still implement their own serializers for storing their data in a custom format instead of using the built-in one.
The full list of the serializers in question is already available for reference and use.
The new Exonum Java Binding version brings developers a new format of transaction error reports. The feature allows the service to notify Exonum about an error in transaction execution whenever one occurs. With the help of an exception Java mechanism we managed to correlate the process with the same one in the Exonum core (
TransactionResult enum), i.e. return information on transaction success or failure with the indication of the kind of error that took place. If transaction execution fails, the changes invoked by the transaction are rolled back, while the error data is stored in the database for further user reference.
Fostering Java Binding handiness, some optimization work has been conducted as well. This being said, we extracted some classes into a separate library
exonum-java-binding-common with the purpose of making them available for use without dependency on Java Binding Core. The word "common" in the library name stands for the fact that the classes of interest are common for both the framework and light clients (client applications), however, targeted at being used by the latter ones. Now Java developers can create transaction messages, check proofs, serialize/deserialize data and perform cryptographic operations when developing applications for interaction with Exonum.
Last but surely not least, the new version introduces support of map proofs in the flat format. This accomplishment lays a solid groundwork for implementing light client proofs in Java. The available functionality allows creating proofs for user's data collections (indices) and representing a system state proof. The block proofs are yet to be implemented by developers to complete the light client proofs and enjoy their well-known benefit to the full extent.
Apart from the features presented above, the release has been filled up with other various fixes and improvements. For the full list of changes included into Exonum Java Binding v0.3 refer to our Changelog.
If you have any question related to Exonum or Java Binding, our team is happy to help in our Gitter channels.