XMLVM项目的目标是提供一种灵活的可扩展的交叉编译器工具链(cross-compiler toolchain)。XMLVM基于Sun的Java虚拟机(Sun Microsystem’s virtual machine )和微软的公共语言运行时(Microsoft’s Common Language Runtime)上的字节码而非源码进行交叉编译。这样的好处是针对字节码进行交叉编译变得更加容易而将高级语言的解释工作留给原生的编译器。在XMLVM里,基于字节码的程序用XML文档表示,使得我们采用一些高级的xml处理技术,例如XSLT,XQuery和XPath,对XMLVM程序进行处理和翻译。
XMLVM给各种语言项目充当中介角色(XMLVM serves as an umbrella for servral projects).
XMLVM首先将java字节码文件或者.NET可执行文件翻译成XML文档,然后基于这份生成的文档可以进行各种转换。比如将Java或.NET应用程序编译成Javascript程序,又或者将Java程序编译成Object- C程序. 下面这张图描述了XMLVM的整个工具链:
图中的每个矩形框代表XMLVM的一个组件(artifact),箭头表示一种转换(transformation). XMLVM工具链的输入源可以是Java字节码文件或.NET可执行文件。一个Java字节码文件生成一个描述该文件内容的XML文档(XMLVM JVM ), 一个.NET可执行文件生成一个描述该文件内容的XML文档(XMLVM CLR ). 而XMLVM CLR 可以在XMLVM数据流分析组件(XMLVM CLR-DFA )的帮助下编译成XMLVM JVM. XMLVM JVM 将交叉编译器分成前端和后端两部分,并且充当前后端的典型表示( XMLVMJVM serves as a canonical representation as it acts as a boundary between the front- and back-end of the cross-compiler)。一旦生成了XMLVM JVM ,就可以转换成其他高级语言程序。
目前XMLVM还处于早期开发阶段,官方没有提供稳定的版本,因此不建议在生产环境中使用。