What is bitcoinj?

Some projects using bitcoinj

bitcoinj is a library for working with the Bitcoin protocol. It can maintain a wallet, send/receive transactions without needing a local copy of Bitcoin Core and has many other advanced features. It's implemented in Java but can be used from any JVM compatible language: examples in Python and JavaScript are included.

It comes with full documentation and many large, well known Bitcoin apps and services are built on it.


Getting started

You can download the library as a JAR, or use Maven/use Gradle, or get the code from github. Then read:

Important announcements: If you use bitcoinj in an application please sign up for the announcement list so you know when new versions are available and if there are critical bugs found.

Be aware: this library is Apache licensed. By using it, you agree with the terms of that license. In particular pay attention to section 7 and 8, which assert there is NO WARRANTY that this library is safe to use or bug free, and in fact that by using this code you accept that none of the contributors shall be liable for any damages or monetary loss that results from your use of their code, even if due to bugs in that code. In short, according to the license the library is distributed under, there are no situations in which you could sue any of the developers (it's as if you wrote the entire library yourself). If you can't handle that, don't use this library.


Read the API documentation: 0.14.4 API documentation

There are also some more in depth articles covering various topics. For best understanding, read them in order.


Core APIs in depth

bitcoinj TV

Advanced features

You can read the release notes for each release starting from 0.3.