日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

在.NET平臺上運行Java程序-IKVM.NET入門

瀏覽:51日期:2024-06-16 08:35:07
內容: 可以自由轉載, 轉載請保留下面的作者信息和鏈接:作者 cleverpig(http://blog.matrix.org.cn/page/cleverpig)摘要IKVM.NET是一個針對Mono和微軟.net框架的java實現,其設計目的是在.NET平臺上運行java程序。本文將比較詳細的介紹這個工具的原理、使用入門(如何java應用轉換為.NET應用、如何在java中開發.NET應用),希望能給大家帶來驚喜。對此的疑問和討論,請關注cleverpig的blog:http://blog.matrix.org.cn/page/cleverpig一、介紹IKVM.NET是一個針對Mono和微軟.net框架的java實現,其設計目的是在.NET平臺上運行java程序。它包含了以下的組建:* 一個用.NET實現的java虛擬機 * 一個java類庫的.NET實現 * 致力于在java和.NET之間交互的工具 二、IKVM.NET的組件IKVM.NET包含以下的部分: * IKVM.Runtime.dll: VM運行時和所有支持代碼。它包括以下的功能: Byte Code JIT 編譯器和驗證器: 使用JIT將Java Byte Code編譯為CIL(C中間語言)。 對象模式映射結構: 將.NET中的System.Object,System.String,System.Exception映射為java代碼中的java.lang.Object, java.lang.String,java.lang.Throwable。 管理本地方法(在Classpath中)的.NET重新實現。 * IKVM.GNU.Classpath.dll: 被編譯的GNU Classpath版本,它是由自由軟件基金會實現的java類庫和一些IKVM.NET附加代碼組成的。注意:這里的GNU Classpath不是IKVM.NET的一部分,但是前者被用在IK.VM.NET中。 * IKVM.JNI.[Mono|CLR-Win32].dll: 通過實現JNI接口管理C++匯編。作為一個可選部分,只在程序使用自己的本地庫時才被用到。而對于純java程序來講是不會被用到的。 * ikvm.exe: 與java.exe很類似的啟動執行程序(動態模式)。* ikvmc.exe: 靜態編譯器,被用來編譯java類和jar使其成為.NET匯編(靜態模式)。 * ikvmstub.exe: 一個從.NET匯編生成存根類的工具,就如javap一樣反編譯.NET匯編。IKVM.NET了解如何存根并用實際的.NET類型引用替換對存根的引用。 * IKVM.AWT.WinForms.dll: 非常有限的零散AWT實現。 二、項目狀態此項目目前正在開發,將最大化實現與JDK1.4的兼容,但是仍存在一些漏洞(尤其在Classpth API中)。 * AWT和Swing還未有功能。 * 安全性是IKVM平臺的一個大遺漏。此問題將依靠.NET平臺提供的舊有的、但功能強大的安全模式而被解決。 雖然這樣,目前項目已具備能成功運行大型java項目的能力。 三、IKVM原理1.如何替換JVM IKVM應用包含了采用.NET實現的java虛擬機。在一些場合,我們可以用它替換掉java。例如: java -jar myapp.jar 將被替換為 ikvm -jar myapp.jar。2.在.NET應用中使用java類庫IKVM.NET包含ikvmc,這個在java bytecode與.NET中間語言的轉換器。如果我們使用一個被用在.NET平臺的java庫的話, 運行ikvmc –target:library mylib.jar(mylib.jar在這里指代我們的jar文件)來生成mylib.dll。例如apache FOP項目是一個開源的XSL-FO處理器項目,它使用java語言編寫的用于從xml生成PDF文檔。使用IKVM.NET技術,我們可以將apache FOP用在任何的.NET應用中。這樣在開發.NET應用的同時利用IKVM便可以使用java開源項目這個免費的軟件倉庫。盡管在IKVM.NET沒有提供在.NET中使用的java編譯器,但是我們可用開源的Jikes編譯器將java源代碼編譯為JVM bytecode,然后使用ikvmc –target:exe myapp.jar來生產.NET執行文件。我們甚至可以通過包含ikvmstub應用的方式在我們的java代碼中用.NET API。四、IKVM使用入門1.系統準備Windows平臺:Microsoft .NET Framework 1.1 SDKWindows或者Linux平臺:Mono Framework 1.02.開始安裝在Windows和Linux平臺上安裝過程是相同的,在下載二進制發布版后,將文件解壓縮。打開命令或者shell窗口,cd進入ikvmbin目錄,執行ikvm。如果我們操作正確的話,我們將看到以下的輸出:usage: ikvm [-options] [args...] (to execute a class) or ikvm -jar [-options] [args...] (to execute a jar file) ...為了方便使用,我們可將ikvmbin目錄加入到系統path。現在我們將使用IKVM就像使用JVM一樣,并不需要配置。如果我們需要在.NET或者Mono環境下使用IKVM,請仔細閱讀下面的文字說明:* 首先下載Jikes編譯器。如果我們計劃開發在java中開發代碼 運行于.NET環境的話,我們將要一個java編譯器。IKVM.NET沒有提供這個編譯器,所以我們需要能生成標準java類文件的編譯器。Jlikes是一個好選擇,它是一個優秀的開源項目,并應用在多種平臺。當然Sun提供的jdk也很好。* 在Windows的全局匯編緩沖區中安裝IKVM dll。在Windows中運行基于IKVM dll的.NET應用程序時,.NET框架必須定位這些dll的位置。系統首先在全局匯編緩沖區中查找,然后再當前目錄中查找。如果我們想不在當前目錄中安裝這些dll文件的話,我們就要將它們安裝在全局匯編緩沖區中:在Windows控制面板中訪問.NET框架配置,增加一個匯編緩沖區。我們至少要安裝IKVM.GNU.Classpath.dll和IKVM.Runtime.dll。3.設置環境在我們開始編寫代碼之前需要準備一下我們的環境,添加以下路徑到系統PATH環境變量中:* 包含IKVM執行文件的目錄。* 包含C#編譯器(在Windows/Mono中為csc)的目錄,通常在Windows中為C:WINDOWSMicrosoft.NETFrameworkv1.1.4322。* 包含java編譯器(javac或者jikes)的目錄。4.動態執行java應用程序IKVM.NET包括了一個C#實現的java虛擬機。我們可以從一個例子開始——進入IKVMROOTsampleshello目錄,編譯示例程序:Javac Hello jar cfm hello.jar manifest.mf Hello.class現在,在使用javac編譯了Hello類后,我們使用IKVM運行此類:ikvm Hello 這個命令將啟動IKVM,IKVM查找名為Hello.class的文件。如果找到,則將其裝載并動態執行bytecode。此時Hello程序將要求我們輸入名字,之后我們將看到一個問候信息。如果在上面的過程中發生問題,請檢查下面的地方:* 檢查命令行: ikvm像java一樣需要我們輸入正確的類名。* 如果ikvm報告ClassNotFoundException,請檢查CLASSPATH環境變量是否被設置。如果被設置,請清除CLASSPATH或者將當前目錄加入到CLASSPATH中以使ikvm能夠在當前目錄中找到類。如果運行jar文件,我們可鍵入:ikvm -jar hello.jar 提示:詳細的命令行選項可以參考ikvm手冊。5.將java程序轉換為.NET程序IKVM.NET包含ikvmc這個能夠將jar文件轉換為.NET的dll庫文件和exe應用的工具。下面我們將學習如何將java應用轉換為一個.NET執行文件:進入IKVMROOTsampleshello目錄輸入以下命令:ikvmc hello.jar 注意:當我們使用Mono時,我們需要告訴ikvmc如何找到GNU Classpath dll,例如:ikvmc -reference:/usr/lib/IKVM.GNU.Classpath.dll hello.jar 在命令執行完后,我們將發現hello.exe已被生成在當前目錄:* 在Windows/.NET環境下,如果我們得到了FileNotFound的異常,請記住檢查.NET框架希望在當前目錄或是全局匯編緩沖區中尋找dll文件。我們可以通過上面講的方法將dll安裝到全局匯編緩沖區中,或者將dll文件直接復制到當前目錄。* 在Linux/Mono環境下,我們使用下面的命令執行hello.exe:mono hello.exe6.在java中開發.NET應用首先進入IKVMROOTsamplesusenetapi目錄,找到ShowDir.java文件,這個java應用使用了.NET API來顯示當前目錄下的文件列表。打開這個文件,我們會發現其導入的包名以cli開頭,這些并不是java API包,它們是映射到.NET命名空間的“偽包。需要查看更多信息請看IKVM的開發者手冊。第一步:生成java存根文件IKVM沒有提供java編譯器,所以我們可以使用標準的java編譯器。由于java編譯器只能編譯使用了java API的應用程序,而不是使用.NET API的應用。所以我們在這里需要“愚弄一下java編譯器使其相信名為cli.System.IO的包是一個真正的java包。幫助我們完成這項工作的是ikvmstub程序。它從.NET dll生成jar文件,這個被生成的jar文件包含了與.NET類對應的java類和接口,但是并不包含真正的代碼,只包含一些映射信息。這樣做便會通過java編譯器的檢查和編譯:ikvmstub mscorlib.dll注意:在Linux Mono環境下,我們必須輸入dll文件的完整路徑,例如:ikvmstub /usr/lib/mscorlib.dll在編譯完成后,我們將在當前目錄下發現一個名為mscorlib.jar的文件。第二步:編譯java源代碼現在我們將編譯java源代碼,如果使用javac的話,可輸入以下命令:javac -classpath mscorlib.jar ShowDir.java在命令完成后,ShowDir.class文件將出現當前目錄下。第三步:生成.NET執行文件最后我們將轉換java class文件為.NET應用程序,正如前面講的:ikvmc ShowDir.class注意:在Linux Mono環境下,我們需要使用前面提到的-reference選項:ikvmc -reference:/usr/lib/IKVM.GNU.Classpath.dll ShowDir.class這時我們便可以看到ShowDir.exe出現在當前目錄。五、參考資源:http://www.ikvm.net/ Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd 可以自?
標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
电影91久久久| 日韩久久视频| 亚洲免费影院| 黄色成人91| 亚洲一区日韩| 婷婷久久免费视频| 日韩三级视频| 麻豆精品视频在线| 天堂中文av在线资源库| 久久久人人人| 一区二区三区四区精品视频| 男女性色大片免费观看一区二区 | 性欧美xxxx免费岛国不卡电影| 亚洲成人三区| 亚洲图片久久| 久久一区精品| 免费观看久久av| 日韩国产在线观看一区| 欧美在线看片| 麻豆国产在线| 免费久久精品视频| 久久91视频| 影院欧美亚洲| 国产极品嫩模在线观看91精品| 日韩精品一卡| 日产欧产美韩系列久久99| 国模大尺度视频一区二区| 激情久久久久久| 久久精品99国产精品| 亚洲成a人片| 亚洲精品在线二区| 四虎成人av| 午夜性色一区二区三区免费视频| 国产精品多人| 欧美69视频| 国产乱子精品一区二区在线观看 | 久久久久欧美精品| 一区二区亚洲视频| 给我免费播放日韩视频| 久久国产精品99国产| 精品一区二区三区在线观看视频| 免费精品国产的网站免费观看| 国产精品久久久久久妇女| 激情欧美国产欧美| 91嫩草精品| 99xxxx成人网| 精品成人18| 一区二区精品| 久久要要av| 欧美国产先锋| 一区二区国产在线观看| 欧美成人a交片免费看| 日韩高清在线不卡| 欧美亚洲国产精品久久| 国产精品啊v在线| 首页亚洲欧美制服丝腿| 亚洲天堂免费电影| 国产精品亚洲产品| 在线国产精品一区| 92国产精品| 久久精品国内一区二区三区| 视频在线在亚洲| 亚洲福利一区| 久久青青视频| 免费一级欧美片在线观看网站 | 日韩精品亚洲专区| 天堂网在线观看国产精品| 久久99久久久精品欧美| 中文字幕日韩高清在线| 亚洲免费福利| 精品国产乱码久久久久久1区2匹| 日韩久久99| 视频一区免费在线观看| 免费视频一区三区| 国产日韩电影| 福利一区在线| 欧美交a欧美精品喷水| 日本不卡中文字幕| 免费精品视频在线| 国产精品美女| 一本色道久久精品| 亚洲国产专区校园欧美| 日韩一区电影| 中文在线а√在线8| 欧美激情aⅴ一区二区三区| 无码日韩精品一区二区免费| 9国产精品视频| 六月天综合网| 亚洲欧美日韩综合国产aⅴ| 免费久久精品| 蜜桃tv一区二区三区| 伊人久久在线| 日韩在线欧美| 欧洲av一区二区| 99精品美女| 91精品国产自产在线观看永久∴| 免费高潮视频95在线观看网站| 裤袜国产欧美精品一区| 中文字幕成在线观看| 精品日韩在线| 日韩不卡一区| 日韩国产欧美| 久久蜜桃av| 激情91久久| 丝袜美腿一区二区三区| 免费在线欧美视频| 亚洲久久一区| 国产欧美一区| 久久精品亚洲一区二区| 日本欧美国产| 久久久久久久久99精品大| 亚洲午夜黄色| 在线视频精品| 亚洲啊v在线免费视频| 亚洲一区二区小说| 日韩精品a在线观看91| 国产精品超碰| 天堂中文在线播放| 国产韩日影视精品| 亚洲精品一级| 精品欧美日韩精品| 欧美69视频| 日韩精品久久理论片| 国产精品igao视频网网址不卡日韩 | 日本少妇精品亚洲第一区| 国产精品片aa在线观看| 久久精品五月| 久久高清免费| 亚洲香蕉视频| 另类小说一区二区三区| 中文字幕在线官网| 国产亚洲一级| 麻豆精品少妇| 99riav1国产精品视频| 日韩激情av在线| 亚洲精品在线影院| 亚洲人成毛片在线播放女女| 麻豆91在线播放| 不卡中文字幕| 日本va欧美va精品发布| 日韩综合在线| 午夜一级在线看亚洲| 国产亚洲一区二区三区啪| 亚洲精品成人图区| 午夜久久av| 久久精品中文| 国产精品调教视频| 九九在线精品| 国产精品日韩精品中文字幕| 亚洲性视频h| 国产精品一国产精品| 欧美69视频| 麻豆国产欧美一区二区三区| 9久re热视频在线精品| 久久精品理论片| 蜜桃免费网站一区二区三区| 国产aⅴ精品一区二区三区久久| 亚洲男女自偷自拍| 成人一区而且| 欧美日韩中文| 亚洲一区亚洲| 国产精品毛片一区二区在线看| 综合一区av| 久久精品二区三区| 国产精品主播在线观看| 中文国产一区| 成人欧美一区二区三区的电影| 综合激情在线| 91精品一区二区三区综合在线爱| 久久精品97| 天堂av在线一区| 日韩一区二区三区免费播放| 欧美日本久久| 美国av一区二区| 色婷婷精品视频| 久久精品网址| 国产一区 二区| 蜜臀国产一区二区三区在线播放| 99精品美女| 另类专区亚洲| 欧美精品不卡| 欧美日韩1区| 亚洲精品综合| av成人国产| 欧美va亚洲va日韩∨a综合色| 国产aⅴ精品一区二区三区久久| 日韩av中文字幕一区| 亚洲欧美日韩精品一区二区 | 国产精品va视频| 日韩一区二区三区免费视频| 午夜精品网站| 亚洲www啪成人一区二区| 久久久精品国产**网站| 日韩精品亚洲aⅴ在线影院| 在线国产一区二区| 蜜桃tv一区二区三区| 久久蜜桃av| 国户精品久久久久久久久久久不卡| 福利在线免费视频| 老司机免费视频一区二区|