Neow3j is a community project that aims to bridge the gap between the Neo ecosystem and software engineers that prefer to work with Java-based technologies. With a high priority placed on ease-of-use for developers, the project currently offers similar functionality to COZ’s lightweight Javascript SDK, neon-js.

In this article we’ll look at the infrastructure implemented so far by the two main contributors, Dr Guil Sperb Machado and Claude Müller of AxLabs, and discuss their latest plans moving forward as Neo3 approaches.

State of Neow3j

Published in December 2018 and formally introduced to the Neo community at DevCon 2019, the neow3j project targets Java, Kotlin, and Scala developers that are interested in developing blockchain-based applications. The available tools are also ready for integration with existing Android applications, which can leverage available tools to handle interaction with the Neo blockchain.

Neow3j already offers support for almost all core Neo JSON-RPC methods, making use of the standard API exposed by nodes on the Neo network to handle operations such as asset transfers, contract invocation, or to retrieve other data from the blockchain.

The library also provides complete support for encrypted keys (NEP-2), multisig addresses, and the Neo wallet standard (NEP-6), making it useful for Java-based applications that wish to support the creation or management of Neo wallets.

Additionally, Neow3j aims to make it easier for developers to retrieve the results of a contract invocation through its integration of the getapplicationlog RPC method. This method is optional for RPC nodes, added by the application logs plugin, and provides access to the VM result stack and any notifications triggered during execution.

Plans for 2020

Though the direction for the project’s development in 2020 has yet to be finalized, in a conversation with Neo News Today Guil introduced some of the features that have been conceptualized for development.

Among these tools include a new compiler to convert .class files (JVM bytecode) to NeoVM bytecode, improving the support for Java smart contracts on Neo. The team also expressed interested in developing a plugin for javac, the primary Java compiler, which would allow the neow3j compiler to be triggered automatically.

Demonstrating the project’s passion for high quality developer experiences, a syntax highlighter for Java developers has also been proposed. This highlighter, potentially taking the form of a plugin for VS Code or IntelliJ, would provide live feedback to developers writing smart contracts by highlighting Java keywords that are not supported by NeoVM.

These limitations may otherwise not become apparent until the developer attempts to compile a contract, making it an invaluable tool for those that want to be able to focus on their code.

According to the project maintainers, new features and development in the future will focus on Neo3, however efforts to provide updated documentation and code examples will concentrate on Neo2 in the meantime. New code templates are also noted to target Kotlin and Scala developers in particular, due to the lack of resources currently available for these languages.