Http://www.oschina.net/p/xmlvm
The objective of the xmlvm project is to provide a flexible and scalable cross-compiler toolchain ). Xmlvm performs cross-compilation based on the bytecode on Sun's Java Virtual Machine (Sun Microsystem's Virtual Machine) and Microsoft's public Language Runtime (Microsoft's Common Language Runtime) instead of the source code. The advantage is that cross-Compilation of bytecode makes it easier to leave the interpretation of advanced languages to native compilers. In xmlvm, bytecode-based programs are represented in XML documents, so that we use some advanced XML processing technologies, such as XSLT, XQuery, and XPath, to process and translate xmlvm programs.
Xmlvm acts as an intermediary role for various language projects (xmlvm serves as an umbrella for servral projects ).
Xmlvm first translates a Java bytecode file or. NET executable file into an XML file, and then converts the generated file based on the file. For example, compile a Java or. NET application into a javascript program, or compile a Java program into an object-C program. The following figure describes the entire tool chain of xmlvm:
Each rectangle in the figure represents an artifact of xmlvm, and the arrow represents a transformation ). the Input Source of the xmlvm toolchain can be a Java bytecode file or.. Net executable file. A Java bytecode file generates an XML document describing the content of the file (xmlvmJVM), A. Net Executable File generates an XML document describing the file content (xmlvmCLR). While xmlvmCLRYou can use the xmlvm data stream analysis component (xmlvmCLR-DFA).JVM.XmlvmJVMThe cross-compiler is divided into two parts: the front-end and the back-end, and serves as a typical representation of the front-end (xmlvmJVM serves
As a canonical representation as it acts as a boundary between the front-and back-end of the Cross-compiler ). Once the xmlvm is generatedJVMTo be converted to other advanced language programs.
Currently, xmlvm is in the early stage of development and the official version is not stable. Therefore, it is not recommended to use it in the production environment.