Web3j is a Java library that provides complete Ethereum JSON-RPC implementation for interacting with Ethereum client APIs like Geth and Parity. It supports smart contract wrappers, wallet management, synchronous and asynchronous API as well as RxJava Observables. Web3j allows deploying, calling functions on and getting events from smart contracts.