A Java library for processing Bitcoin, stores blockchain headers only

From the project page:

BitCoinJ is a Java implementation of the native BitCoin P2P protocol, which allows it to maintain a wallet and send/receive transactions without needing a local copy of the official implementation. It comes with full documentation and some example apps showing how to use the library.

It has been ported to C# in BitCoinSharp.