Learn about 7 open source cryptocurrency technologies and resources for leveraging your Java expertise.
Top technology prognosticators have listed blockchain among the top 10 emerging technologies with the potential to revolutionize our world in the next decade, which makes it well worth investing your time now to learn. If you are a developer with a Java background who wants to get up to speed on blockchain technology, this article will give you the basic information you need to get started.
Blockchain is a huge space that can be overwhelming to navigate. It is different from other software technologies, as it has a parallel non-technical universe involving speculations, scams, price volatility, trading, initial coin offerings (ICOs), cryptocurrencies, Bitcoin maximalism, game theory, human greed, and more. This article will ignore that side of blockchain and focus completely on what you need to know to understand its technical aspects.
Regardless of a blockchain’s programming language and implementation details, you need to have a basic understanding of its theoretical foundation before you can build upon it. I have found that Bitcoin and Ethereum are the first, most essential technologies you need to understand. Both projects have several things in common: they introduced something new in the blockchain space, have the highest market cap in the sector, and have the largest developer communities in this space.
Most other blockchain projects — whether they are public or private, permissionless or permissioned — are forks of Bitcoin or Ethereum and try to improve their shortcomings, in some ways by making certain trade-offs. If you want to know about blockchain, learning Bitcoin and Ethereum is akin to taking networking, database theory, messaging, data structures, and programing language classes during your university studies. Understanding how these two blockchain technologies function will open your mind to the blockchain universe.
Before you try to do any work with blockchain technology, I recommend learning the technical basics of Bitcoin and Ethereum. It also happens that the two books I most recommend for this purpose were written by Andreas M. Antonopoulos.
- Mastering Bitcoin is the most in-depth, technical, yet still understandable and easy-to-read book I found about Bitcoin. (Most of the other books are either too philosophical or non-technical.)
- Of the many technical books available about Ethereum, I liked the level of detail in Mastering Ethereum most.
Another book that covers Ethereum development very well is Building Ethereum Dapps by Roberto Infante.
Blockchain projects for Java developers
If you’re a Java developer who has done your background study by reading the books I recommend above and are ready to get your hands dirty, start with one of the following popular open source blockchain projects written in Java:
- Corda is probably the most natural starting point for a Java developer. Corda is a JVM-based project that builds on top of popular and widely used Java projects such as Apache Artemis, Hibernate, Apache Shiro, Jackson, and relational databases. It is inspired by Bitcoin but has elements of business processes, messaging, and other familiar concepts. You can read my first impressions of it as a Java developer.
- Pantheon is a full implementation of the Ethereum node in Java. It was specifically created to attract developers from the Java ecosystem into the blockchain world. Its creators offer an intro presentation and a getting-started video.
- Bitcoinj is the most popular Java implementation of the Bitcoin protocol. If you prefer to start with Bitcoin directly, this is the Java project to explore.
- Web3j is a client library for connecting to Ethereum nodes (while Corda and Pantheon are examples of full blockchain node implementations). It is a very well documented and active project that makes talking to Ethereum-compatible nodes straightforward. I created an Apache Camel connector for it, which you can read about.
- Hyperledger Fabric Java SDK is a full-featured Java SDK of one of the most popular enterprise blockchain projects, Hyperledger Fabric.
- FundRequest is an end-user application written in Java. While the above projects are examples of clients or nodes, FundRequest is an open source funding platform implemented on top of the Ethereum network and fully written in Java. It is a good example of how you can implement a complete blockchain-based project and interact with the Ethereum network.
- Eventeum is a Java project that can help you monitor the Ethereum network and store events on Kafka. It addresses a few of the most common challenges when integrating with blockchain networks.