I've been using Tom-Gom model transformation environment with Java. It uses functional programming aspects like: lists, pattern matching, immutability, etc... it is great for model to model transformations. One can pretty much build a set of rules that match patterns in the source OM (tree) and create a destination OM (tree). The Tom-Gom environment acts as a precompiler and produces Java code. Cool VIDEO, premilinary demo of Tom, Eclipse plugin, more info
- Tom is an extension of Java designed to manipulate tree structures and XML documents.
- Tom is compatible with Java: any Java program is a correct Tom program.
- Data are represented using an efficient object oriented tree based data-structure.
- Java builtins (int, char, String, etc) can be used.
- Tom provides pattern matching facilities to inspect objects and retrieve values.
- A powerful strategy language can be used to control transformations.
- Tom is used in several companies to implement transformations of programs and queries.