Releases: exonum/exonum-java-binding
Exonum Java 0.6.0
If you are upgrading an existing Java service, consult
the migration guide.
The release is based on Exonum 0.11.
Added
-
Support of packaging the Exonum Java application into a single archive with all the necessary
dependencies. This allows you to develop and run Java services without installing Rust compiler
and building Exonum Java. For the instructions, consult the Installation guide.It is still possible to build the application manually, using the instructions in the Contribution Guide. (#818, #776)
-
Support of multiple simultaneously active Java services on the network. To enable a list of specific services, you need to provide paths to each service artifact in a
services.toml
configuration file. See the documentation for more details. (#820) -
Internal load tests verifying the application reliability under various kinds of load. Builds for each release of Exonum Java, starting with 0.6.0, process millions of transactions and read requests to ensure stability and reliability.
-
SLF4J to Log4j binding to enable libraries coded to the SLF4J API to use Log4j 2, used by Exonum Java, as the implementation. (#854)
-
toOptional()
method toEntryIndexProxy
. (#790) -
getTransactionPool()
method toBlockchain
. (#850)
Changed
- Service HTTP APIs provided with
Service#createPublicApiHandlers
are now mounted on/api/services
instead of/api
for consistency with Exonum Core.
Fixed
- The bug when Java integration tests using native library (e.g., via
MemoryDb
) crashed on Linux.
Exonum Java Binding 0.5.0
Overview
This release brings support of Exonum Time Oracle. It is based on Exonum 0.10.3.
Added
- Support of Time oracle. Instruction on how to enable built-in services can be found here. (#667)
JsonSerializer
provides support forZonedDateTime
JSON serialization inISO_ZONED_DATE_TIME
format. (#762)
Changed
TransactionResult
andTransactionLocation
classes moved to the common module. (#725)
Exonum Java Binding 0.4.0
Overview
This release is based on the latest Exonum version, 0.10,
and brings the features and improvements outlined below.
If you are upgrading an existing Java service, please consult
the migration guide.
Added
- Support of new transaction message format added in Exonum 0.10. It allows service
developers to use any serialization format, and the framework to perform signature verification
automatically. Both the service and client APIs are migrated. (#534, #574) com.exonum.binding.blockchain.Blockchain
, allowing services to read data,
maintained by the framework (blocks, transaction messages, transaction execution results, etc.).
(#548, #549, #571, #573)- Support of
Service#afterCommit(BlockCommittedEvent event)
method
that is invoked after each block commit event. (#550) com.exonum.binding.common.serialization.json.JsonSerializer
providing JSON serialization
support of any objects, including Exonum built-in types. (#611)- Support of passing arbitrary arguments to the JVM when the node is launched via
--jvm-args-prepend
and--jvm-args-append
CLI flags. (#629) --jvm-debug
application command line argument that allows JDWP debugging of a node. (#629)ListIndexProxy#stream
to enable stream processing of list elements. (#661)- Support of running services on Java 11 runtime.
Changed
com.exonum.binding.storage.indices.MapEntry
moved to package
com.exonum.binding.common.collect
.FlatMapProof
andMapIndex
are updated
to use this implementation ofMapEntry
.- The
--ejb-jvm-args
command line argument has been substituted with--jvm-args-prepend
and
--jvm-args-append
arguments that can now be passed at theRun
stage instead of
Generate-Config
. Also, these JVM arguments are not saved to any of the configuration
files. (#629) Node#getPublicKey
to returnPublicKey
instead ofbyte[]
. (#651)com.exonum.binding.transaction.Transaction#execute
now accepts
com.exonum.binding.transaction.TransactionContext
instead ofcom.exonum.binding.storage.database.View
Removed
com.exonum.binding.common.proofs.map.MapEntry
— moved to package
com.exonum.binding.common.collect
.ViewModificationCounter
replaced with per-View
modification counters to simplify
their relationship and testing. (#658)- Exonum v0.9 message format related classes.
Fixed
- A bug in the cryptocurrency demo frontend that sometimes resulted in rejected transactions and/or
wrong response code (#621).
Exonum Light Client 0.1.0
This is the first release of Exonum Java Light Client which allows to submit transactions to services in Rust or Java. For more information, check out the documentation.
Exonum Java Binding 0.3
Highlights
This release brings:
- Support of flat map proofs, the new compact proof format for
ProofMap
, supporting several keys. - Built-in serializers of Java primitive types, some Exonum library types and protobuf messages.
- Ability to report the transaction execution result as an exception with extra information accessible by a client:
TransactionExecutionException
. - A separate module
exonum-java-binding-common
that can be used in client applications to create transaction messages, check proofs, serialize/deserialize data, perform cryptographic operations. - Various fixes and improvements.
The release is based on Exonum 0.8.
Added
- Flat map proofs support, including proofs of absence and multiproofs — proofs for several
entries at once. (#250, #507, #532) StandardSerializers
now supportsbool
,fixed32
,uint32
,sint32
,fixed64
,uint64
,sint64
,float
anddouble
primitive types,PrivateKey
,PublicKey
andbyte[]
serialization. (#514, #523)- A deterministic
Serializer
of any protobuf message —StandardSerializers#protobuf
. (#493) - Static factory methods accepting protobuf messages to collections,
allowing to pass Protocol Buffer messages directly instead of using
StandardSerializers#protobuf
. (#505) Message.Builder#setBody(byte[])
to avoidByteBuffer.wrap
in the client code. (#401)MapIndex.isEmpty()
method to check if MapIndex is empty. (#445)- Wallet transactions history support to the cryptocurrency-demo. (#481)
Changed
Transaction#execute
can throwTransactionExecutionException
to roll back
any changes to the database. The exception includes an error code and an optional
description which the framework saves to the storage for later retrieval.
Any other exception is considered as an unexpected error (panic in Rust terms). (#392)- Refactored
exonum-java-proofs
module toexonum-java-binding-common
module
withcom.exonum.binding.common
root package so that more functionality
is available to client applications with no dependency onexonum-java-binding-core
(#459)- Moved
crypto
package toexonum-java-binding-common
module. (#467) - Moved
hash
package toexonum-java-binding-common
module. (#469) - Moved
Transaction
-related classes to the newcom.exonum.binding.transaction
package. (#469) - Moved
messages
package tomessage
package inexonum-java-binding-common
module. (#469) - Moved
proofs
package tocom.exonum.binding.common
package. (#469) - Moved
serialization
package tocom.exonum.binding.common
package. (#469)
- Moved
ProofMapIndexProxy#getProof
to return a flatUncheckedMapProof
instead of tree-likeMapProof
, which is a more efficient format in terms of space. (#478)ProofListIndexProxy#getProof
andProofListIndexProxy#getRangeProof
to return
UncheckedListProof
instead ofListProof
. The latter is renamed intoListProofNode
and may be accessed throughUncheckedListProof#getRootProofNode
(#516)ListProofValidator
returns an instance ofNavigableMap
instead ofMap
. (#457)
Removed
Exonum Java Binding 0.2
Added
-
Standard services may be enabled using specific
ejb_app_services.toml
file.
It supports onlyconfiguration
andbtc-anchoring
services at the moment.To enable services put
ejb_app_services.toml
file into EJB App's directory
with the following content:services = ["configuration", "btc-anchoring"]
-
Added operations to get a message with and without signature
(BinaryMessage#getMessageNoSignature
andBinaryMessage#getSignedMessage
respectively).
(#339) -
Added methods to sign transaction messages and verify their signatures. (#341)
-
Enabled passing extra arguments to the JVM from the command line.
Use--ejb-jvm-args
flag to specify an additional argument, e.g.,
--ejb-jvm-args=Xmx2g
. (#342)
Changed
Exonum Java Binding 0.1.2
This release includes two more modules — parent module and BOM module as they are required dependencies to define a Java service.
Exonum Java Binding 0.1
That's the first alpha release of Exonum Java Binding — a framework for building permissioned blockchain applications. It includes the APIs to define stateful smart-contracts in Java, and an application to run an Exonum node with them. For more information, see the reference documentation.