Edit (Jan. 10th 2016): Update Version 1.0.2 available!
Blender files are basically dumps of Blenders native heap memory content (C structs and scalar types of the Blender DNA (its core data model). A .blend file is organised in blocks of arbitrary length, and the type of data is described in a special block, which contains type information (meta data) for all C types which can exist in a .blend file.
The Blender DNA is huge and new aspects get added frequently. Thus, it is almost impossible to provide a library which supports all aspects of it without breaking features in the next Blender release.
When I was analysing Blender’s data model, I noticed the potential of the extra meta data in each blender file and decided to write a library which leverages it to achieve full coverage of the Blender DNA. The result is Java Blend (open source, now beta http://homac.cakelab.org/projects/JavaBlend). It is a combination of a code generator and a runtime I/O package. Together they provide generation of Java classes (facades to native data) for all DNA types at development time and random R/W access to Blender data at runtime. Thus, a generic any-version blender file import/export in Java which features all aspects of the Blender DNA data model.
I designed this toolkit with the ambitious goal to serve for any kind of interaction with blender. Whether just importing data into another graphics engine, conversion to a different data format or external processing of data to add features to blender. The fully generic mapping of the entire Blender DNA core data model combined with both import and export supports e.v.e.r.y.t.h.i.n.g! Also the generic approach reduces maintenance effort to a minimum. New details in blender’s DNA will be instantly reflected in the generated data model and implicitly supported by the I/O module.
I’m posting this here (1) obviously to share it, so it may find its users and (2) to request for comments/feedback on its design/implementation/use. I put a lot of work in it but there may be some things I didn’t think of.