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.

Like last year blk.io is going to be at Devcon 4 so please send us a message if you’d like to chat.

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, catchUpToLatestAndSubscribeToNewTransactionsObservable has been renamed to replayPastAndFutureTransactionsFlowable. For more information refer to the Web3jRx interface.

The full change set can be found at #753, thanks to @vpriscan for this valued contribution.

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:

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!

The blk.io team.