使用Ja.Net實(shí)現(xiàn)Java和.NET的完美互用
提起Java和.NET,大家都不陌生。因?yàn)樗鼈兪钱?dāng)今做開發(fā)的主要力量。但這卻一直是兩個(gè)不同的世界。其實(shí),這兩個(gè)世界不是完全分隔的,我們可以用Ja.Net來(lái)實(shí)現(xiàn)Java與.Net的互用性。
Ja.Net是一個(gè)Java 1.5和.NET的接口平臺(tái),Ja.NET可視為Java之上的.NET Remoting(Microsoft .NET Framework內(nèi)的主要組件)的堆棧實(shí)作,而在Java平臺(tái)上提供Ja.NET的執(zhí)行時(shí)期模塊(Run time),可支持TCP/IP、HTTP等溝通管道,也可同時(shí)支持SOAP或是二進(jìn)制互通協(xié)議以提升溝通效率。透過(guò)此執(zhí)行時(shí)期模塊,.NET與Java /J2EE的數(shù)據(jù)類型不僅可以對(duì)應(yīng),還能進(jìn)行雙向的溝通。
Ja.Net的編譯器基于Eclipse JDT,Eclipse JDT能夠修改生成IL,也能生成Java字節(jié)碼。Java一般編譯每個(gè)class為一個(gè)單獨(dú)文件,但是.NET不能接收分散文件,一個(gè)基于 Cecil 的工具被使用來(lái)創(chuàng)建更大的文件集合類似Jar文件,解決了這個(gè)問(wèn)題。
另外,為了從頭開始獲得庫(kù)支持,Ja.Net JDK 基于開源項(xiàng)目Apache Harmony開發(fā)。Apache Harmony是開放源碼Java SE實(shí)現(xiàn)。為什么不選擇OpenJDK呢,Ja.Net項(xiàng)目負(fù)責(zé)人Dave Tillman認(rèn)為Harmony的結(jié)構(gòu)更加模塊化,組織更加良好。
以及Ja.Net SE項(xiàng)目主要著重于Java SE,為.NET提供Java 5 JDK,目前SE項(xiàng)目已經(jīng)完全完成,并且Ja.NET SE:New Build 1.5.0已經(jīng)發(fā)布。Ja.NET SE class從Harmony派生而來(lái),但是還有一些模塊沒有完成與.NET/CLR服務(wù)的互聯(lián),比如AWT/Swing,這個(gè)項(xiàng)目正在發(fā)展中,正征集開發(fā)者貢獻(xiàn)代碼。
Ja.NET目前能夠同時(shí)運(yùn)行在微軟CLR(Common Language Runtime公共語(yǔ)言運(yùn)行時(shí),是微軟公司開發(fā)的一個(gè)虛擬機(jī),用于運(yùn)行基于中間代碼Intermediate Language,簡(jiǎn)稱IL的.NET程序)和Novell的Mono平臺(tái)上(Mono:微軟.NET框架的開源版本,允許為Windows框架編寫的應(yīng)用程序在Linux和其它非微軟平臺(tái)上運(yùn)行)。
對(duì)Java和.NET程序互用性有興趣,推薦嘗試Ja.Net。
Ja.Net:http://sourceforge.net/projects/janetdev/
【編輯推薦】