I've had success reading and writing EXIF data, using the Apache Commons Imaging (Sanselan) library.
However, I learn that most "image viewer" software rely on the IPTC Caption-Abstract field, as well as XMP-dc:Description.
Does anyone know anything about this, from a Java perspective?
Moving to Photoshop Scripting.
You can indeed extend the XMP adding your own namespace and unlimited properties (several kind).
I have been using it for years.