Exciting Web3j SDK Announcements

Nancy
Web3 Labs
Published in
4 min readNov 25, 2019

Web3j is the JVM integration library for Ethereum, used by Java, Android and Kotlin developers. It provides you with account and transaction management, and full type safety of smart contract integration from code. This means that when you write Java code with Java types, they will be mapped in a type-safe manner to Ethereum types. Although JVM is not a proof-based language, this type-safety gives your code a certain level of guarantee when it is running.

Web3j has a native build tool integration that supports core Ethereum and, by way of extension, Geth and Parity. It also supports Hyperledger Besu, JP Morgan’s Quorum and we recently announced an Aion integration too.

We’re excited that Web3j is celebrating its 3-year milestone. The project has always been open-source and has had over 100 contributors. Its great traction is shown in over 400K downloads with total downloads currently standing at 2 million! The project has 2.5K Github Stars and a dedicated full-time Web3 Labs team working on it.

One of the challenges faced by being open source is funding. We’ve been very lucky and are grateful to the Ethereum Community Fund who gave us a grant last year and Gitcoin, who have funded numerous bounties over the past couple of years. Most recently, the Ethereum Foundation has given us a grant. The continual support and funding means great things for Web3j and benefits the wider developer ecosystem in general.

Why do we have Web3j?

Web3j is there for specific developers on a certain platform for working with Ethereum. Historically, it has been a dependency and effect, that people pull into their projects to integrate with Ethereum. We’re well aware of the challenges presented by this process. That’s why we’re always considering developers who are new to Ethereum, and blockchain generally, thinking of ways to make the onboarding process as simple as possible. Until now, the journey looks like this:

As part of simplifying this process, we’ve extended the Web3j command line interface (CLI). Previously it did straightforward transfers of ether and creating smart contract bindings. But we didn’t stop there! We’ve focused on making the developer experience better, especially for those who are working with this technology for the first time.

We’re pleased to say that we’ve made it as simple as 1,2,3!

Get started with these 3 simple commands

The Web3j SDK is the convergence of many different components of the Web3j ecosystem like build automation, core integration library, CLI tool, automated unit, and integration testing. With our latest improvements, we’ve made creating a new project, adding Web3j build dependency, creating and compiling a smart contract and creating the JVM bindings much easier.

We’ve also been working on the Web3j unit module to allow you to improve the automated and integration testing of your contracts. Rather than having to spin up a node, or use Ganache for integration testing, Web3j runs an EVM in process in your tests meaning that you can test your contracts as if you’re testing any other piece of Java code.

We’ve got big plans for improving the Web3j SDK over the next 12 months. We aim to minimise friction for developers during the onboarding process so it’s much easier for overall adoption. This comes back to our emphasis on simplicity, minimising the number of commands to do anything and making it very powerful.

The testing enhancements are an important part of this strategy. We want to automate test generation based on contracts, so you have enough information about a smart contract to be able to infer these pieces of information, not just the integration test but unit tests as well. Being able to test everything locally, without having to think about running the node infrastructure is very important.

Another target is an integrated EVM. We need something lightweight so when developers are developing a contract using Web3j they can quickly see if that’s working or not without having to deploy through a real network.

We also want to include Vyper support. Outside of Solidity, there is a growing amount of interest in using Vyper as a language for smart contract development. We want to make sure there’s a seamless developer experience there.

Our final goal is automating a RESTful API generation off the back of smart contracts. This will save developers from having to create some sort of restful service on top of the application that integrates with the blockchain. Again, this will achieve our aim of simplifying the experience so that people can use whatever language they want to plug into it.

Get started quickly and easily with the Web3j SDK here.

This post first appeared on the Web3 Labs blog at https://blog.web3labs.com/exciting-web3j-sdk-announcements

--

--