This subforum is intended for discussion of app development with the bitcoinj library. Feel free to ask questions either here or on the mailing list. Bugs should go to the bug tracker but it's OK to post feature suggestions here too.
Background
bitcoinj is an implementation of the Bitcoin protocol in Java. Because it implements simplified payment verification it underlies the two popular end user wallet apps that we recommend on the Bitcoin website. It has been used by large numbers of people for over two years.
bitcoinj got started as a Google 20% project by myself, and continues to be developed primarily by myself and Matt Corallo (BlueMatt on these forums). It also benefits greatly from contributions and feedback from Jim Burton (author of MultiBit) and Andreas Schildbach (author of the Android Bitcoin Wallet app).
The library differentiates itself from others by emphasising the following points:
- Clear documentation and well commented code that is much easier to understand than the reference code written by Satoshi. Example
- SPV mode is fast and efficient, so it's great for implementing wallet apps without the need for a trusted central server. You can sync a new wallet on a Gingerbread-era smartphone in only a few seconds.
- Multi-threaded networking layer.
- A full wallet implementation so you can send and receive coins. Many libraries that are out there actually don't implement a wallet at all, and are thus only useful for exploring the block chain.
- Great support for implementing contract based applications - the API has many useful utility methods and there's a complete implementation of micropayment channels included, which is not only useful by itself but demonstrates how to use multisignature coins, lock times, alternative SIGHASH flags and other advanced features to build a real app.
- Used in real apps, by real developers. You can't have a good API without that.
Documentation links
Bitcoinj has extensive documentation both at the API level and articles showing how to use the library:
- Getting started, a tutorial
- Depending on bitcoinj with Maven, a popular build tool
- The JavaDocs: 0.9 API documentation
There are also some more in depth articles covering various topics. For best understanding, read them in order.
- Limitations and missing features
- Understanding the bitcoinj security model
- Working with bitcoinj - basic patterns and things you should know
- How the different components of your app fit together
- Working with transactions
- Working with the wallet
- How to use the experimental fully verifying mode
- Working with contracts
- Working with micropayment channels
- Coding conventions in the library itself
There are also example apps which show you what to do.