XMLVM交叉編譯器工具鏈
XMLVM項(xiàng)目的目標(biāo)是提供一種靈活的可擴(kuò)展的交叉編譯器工具鏈(cross-compiler toolchain)。XMLVM基于Sun的Java虛擬機(jī)(Sun Microsystem's virtual machine )和微軟的公共語(yǔ)言運(yùn)行時(shí)(Microsoft's Common Language Runtime)上的字節(jié)碼而非源碼進(jìn)行交叉編譯。這樣的好處是針對(duì)字節(jié)碼進(jìn)行交叉編譯變得更加容易而將高級(jí)語(yǔ)言的解釋工作留給原生的編譯器。在XMLVM里,基于字節(jié)碼的程序用XML文檔表示,使得我們采用一些高級(jí)的xml處理技術(shù),例如XSLT,XQuery和XPath,對(duì)XMLVM程序進(jìn)行處理和翻譯。
XMLVM給各種語(yǔ)言項(xiàng)目充當(dāng)中介角色(XMLVM serves as an umbrella for servral projects).
XMLVM首先將java字節(jié)碼文件或者.NET可執(zhí)行文件翻譯成XML文檔,然后基于這份生成的文檔可以進(jìn)行各種轉(zhuǎn)換。比如將Java或.NET應(yīng)用程序編譯成Javascript程序,又或者將Java程序編譯成Object-C程序. 下面這張圖描述了XMLVM的整個(gè)工具鏈:
圖中的每個(gè)矩形框代表XMLVM的一個(gè)組件(artifact),箭頭表示一種轉(zhuǎn)換(transformation). XMLVM工具鏈的輸入源可以是Java字節(jié)碼文件或.NET可執(zhí)行文件。一個(gè)Java字節(jié)碼文件生成一個(gè)描述該文件內(nèi)容的XML文檔(XMLVMJVM), 一個(gè).NET可執(zhí)行文件生成一個(gè)描述該文件內(nèi)容的XML文檔(XMLVMCLR). 而XMLVMCLR可以在XMLVM數(shù)據(jù)流分析組件(XMLVMCLR-DFA)的幫助下編譯成XMLVMJVM. XMLVMJVM 將交叉編譯器分成前端和后端兩部分,并且充當(dāng)前后端的典型表示( XMLVMJVM serves as a canonical representation as it acts as a boundary between the front- and back-end of the cross-compiler)。一旦生成了XMLVMJVM,就可以轉(zhuǎn)換成其他高級(jí)語(yǔ)言程序。
目前XMLVM還處于早期開(kāi)發(fā)階段,官方?jīng)]有提供穩(wěn)定的版本,因此不建議在生產(chǎn)環(huán)境中使用。
