Exonum Java 0.7.0
Pre-release
Pre-release
Exonum Java 0.7.0 brings support of Exonum TestKit, massive performance improvements,
and various other fixes and improvements. It is based on Exonum 0.11.
If you are upgrading an existing Java service, consult the migration guide.
Added
- A new
exonum-testkitmodule that allows to emulate blockchain network and test transaction
execution in the synchronous environment (that is, without consensus algorithm and network
operation involved).
Main component of this module isTestKitwhich allows recreating behavior of a single full
node (a validator or an auditor) in an emulated Exonum blockchain network.
For more information and examples see documentation.
(#819, #833, #859, #913, #989) - Verification of native library compatibility when it is first loaded, to detect
possible mismatch between an installed exonum-java application and the version
used in a service project. (#882) Block#isEmpty()RawTransaction#fromMessage(TransactionMessage), which is mostly useful in tests,
where you might have a message but need it as aRawTransactionin some assertions.
Changed
- Improved the throughput of transaction processing twofold. Java services on Exonum Java 0.7.0
handle transactions about 15–20% slower than equivalent Rust ones, according to our system
benchmarks. (#917, #996) BinaryTransactionMessage#toStringto include some fields in human-readable
format instead of the whole message in binary form.Node#submitTransactionto throw uncheckedTransactionSubmissionExceptioninstead
of checkedInternalServerError.- Moved all packages inside
com.exonum.bindingtocom.exonum.binding.corepackage.
That was required to give each module a unique root package to prevent 'split-packages'
problem. The migration guide has a regexp to update the service automatically. - Replaced redundant
TypeAdapterFactoryin 'common' module with a single
CommonTypeAdapterFactory.BlockTypeAdapterFactoryis renamed toCoreTypeAdapterFactory.
JsonSerializer#jsonandJsonSerializer#builderregisterCommonTypeAdapterFactory
by default.CoreTypeAdapterFactorymust be registered explicitly if needed. (#971) - Exonum Java App now uses static linkage for RocksDB on Mac OS. Installed RocksDB
is no more necessary to run the App. (#1011)
Fixed
- The default
Transaction#infoimplementation causing an error ontransaction
request. It is modified to return an empty object by default (no info incontent.debugfield
of the response totransaction). (#904) - Allow to override root package in the template project generated with
the exonum-java-binding-service-archetype. It remains equal to 'groupId' property
by default, but can be overridden with 'package' property. - Application packaging issue that might have resulted in several versions of Java artifacts
on the application classpath. (#968)