NBT, or Named Binary Tag, is a file format created by Markus Persson for use with Minecraft levels. Although originally designed for Minecraft levels, it is appropriate for the vast majority of use cases.
JNBT is a library that can read and write NBT files, written in Java by Graham Edgecombe and available open-source under the BSD license.
JNBT is currently in beta, the current release is 1.1. This contains a fix for writing TAG_Lists (thanks to osici for finding the bug) and toString() methods on each tag type (which replicate the format used in the documentation).