web3j-4.0.0 preview is available, just in time for Devcon 4
At blk.io we’ve had some exciting times recently; our team has been growing in order to bring to fruition our plans for web3j.
Earlier this month we released web3j 3.6.0 with some critical fixes, and we are now happy to announce the release of 4.0.0-alpha-1 with internal and community contributions.
4.0.x is still undergoing active development but we thought we’d give you a flavour of what is to come with an alpha release. Stay tuned, we don’t intend on keeping it an alpha for too long! Full details on this release can be found below.
Reactive Streams 2.0
The first of two headline features in this release is the upgrade from RxJava 1.0 to RxJava 2.0, a discussion of the main differences between these two versions can be found here.
What does this mean for web3j? All of the methods that included Observable in their names have been renamed to instead use Flowable.
We have also done a cleanup of the lengthy method names that were impacted by this API upgrade.
For example,
has been renamed to
replayPastAndFutureTransactionsFlowable
For more information refer to the Web3jRx interface.
BIP44 implementation
The second headline feature in this release is BIP44 implementation, thanks to @AmiMobilechain; the full change set can be found at #686.
This spec builds upon the scheme described in BIP43 and the algorithm in BIP32 to provide a logical hierarchy for wallets, thus enabling generation of keys in a hierarchical structure from one single seed. There are many benefits to this, such as ease of maintenance and key regeneration. Refer to the BIP44 specification and Bip44WalletUtils source code for further information.
Various other fixes and improvements
Equally as important are the various fixes and improvements we look to include in each release. Some prominent fixes are:
- Improvements to the Solidity Code Generator (#672) by @franz-see
- Cleanup of deprecation methods (#508) by @iongchun
- Improve implementation of MnemonicUtils (#665) by @serso
- Update to CLI usage strings (#660) by @taivokasper
- Updated OkHttp CipherSuites to include all INFURA CiperSuites (#757) by @gaiazov
- Remove *.bin file requirement for contract wrapper generation (#408) by @yuriymyronovyc
- Prefix message signing according to eth_sign (#650) by @ricmoo
Please accept my apologies if I’ve missed your contribution of the list — pull requests and issues are one of the main mechanisms to get feedback from users on the library, so I appreciate people taking the time to submit them.
For further details of the other changes, please refer to the releases page.
What do I need to do?
For almost all use cases, if you were using web3j core previously you shouldn’t have any problems dropping in the 4.0 core.
You will need to regenerate your smart contract wrappers to use this release, in addition to migrating across your method calls to use the updated function names as per the RxJava 2.0 section above.
What’s next?
We’ve got some exciting plans for the upcoming 4.x releases, with various community-driven pull requests, build and process improvements, and blk.io contributions.
For 5.x and beyond we will be looking to streamline our libraries and use Java 9’s Flows.
We are actively developing web3j, watch this space for more exciting news!