If you need to develop applications that make use of existing data (e.g. RSS), communicate over the network (e.g. a multiplayer game), and capture data structured data from the web (e.g. Wikipedia, the ACM Portal, or IMDB), S.IM.PL is the place to start.
The Support for Information-Mapping in Programming Languages project develops inter-platform support for writing software that manipulates complex information in applications by enhancing imperative programming languages, and developing complementary declarative mark-up languages. S.IM.PL serialization provides fine-grained control of object↔serialization binding through the Data Binding Annotation Language (DBAL) that is embedded directly in source code. DBAL enables the straightforward definition of strongly-typed objects that match serialized structures, for example existing XML formats. Inheritable translation scopes group sets of object↔serialization binding definitions, and enable inheritance. The present system supports (compressed) XML for serialization, while future work will develop alternate translation schemes, such as type-length-value and JSON.
In the present implementation, developers define the semantics of object marshalling by embedding DBAL annotations in Java source code. We refer to languages that support DBAL annotations as source languages. We currently only support Java as a source language; C# is planned. From source languages, one can generate equivalent object definitions, and XML that drives translation, for target languages. Target languages do not support DBAL annotations and require transferring object-serialization bindings defined from a source language (or specifying it by hand). Currently, we support Objective-C as a target language, enabling development of iPhone and Macintosh client applications, which use OODSS to talk to a Java server. We plan to also support other target languages, such as C++.
We recommend that new S.IM.PL Serialization developers begin with tutorials, and peruse DBAL guide and API.