XMLVM - 將 Android 項目轉成 iPhone 項目
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文檔(XMLVMJVM), 一個.NET可執行文件生成一個描述該文件內容的XML文檔(XMLVMCLR). 而XMLVMCLR可以在XMLVM數據流分析組件(XMLVMCLR-DFA)的幫助下編譯成XMLVMJVM. XMLVMJVM 將交叉編譯器分成前端和后端兩部分,并且充當前后端的典型表示( XMLVMJVM serves as a canonical representation as it acts as a boundary between the front- and back-end of the cross-compiler)。一旦生成了XMLVMJVM,就可以轉換成其他高級語言程序。
目前XMLVM還處于早期開發階段,官方沒有提供穩定的版本,因此不建議在生產環境中使用。
項目地址:http://xmlvm.org/overview/