之前總覺得C#和Java可以交互應用,但是由於時間以及其他方面的原因,一直沒有調研。今天抽空搜了一下,終於折騰出來了。
以下是我自己就C#和Java整合的一些提問和分析,如果有不對的地方,請路過的各位大蝦給予指出。3Q!
問題來了:
1、C#和Java如何整合?
2、為什麼C#(.Net)要和Java整合?
3、Java和C#整合時,Java主要扮演什麼角色?C#扮演什麼角色?
答案一一揭曉:
1、C#和Java整合大致有4條路可以走。
1.1 把Java包轉換為DLL或者EXE後注冊為com組件,之後調用;
1.2 使用web service;(http://www.codeproject.com/Articles/32313/How-to-invoke-Java-web-service-in-ASP-net-using-C)
1.3 使用中間件;比如一個商業的中間件:http://j-integra.intrinsyc.com/;
1.4 使用 IKVM.NET,這是一個在.net 下實現的Java VM,所以在經過一個轉換後,直接跑Java的東西;
(以上4點,是我在網上搜的)
我主要說第四點:使用IKVM.NET。
a:下載ikvm-0.40.0.1.zip;ikvmbin-0.40.0.1.zip;openjdk6-b12-stripped.zip;
解壓ikvm-0.40.0.1.zip,並將%IKVM_HOME%\bin添加到path中。此處的%IKVM_HOME%是指解壓後ikvm的主目錄。
b:建立一個JavaProject,自定義包、類、需要透露給外界的方法,然後、將這個JavaProject打包成jar文件。(eclipse和myeclipse都自帶的,或者你可以顯擺一下,用黑框框敲幾個代碼整)。
c:狸貓換太子:jar>>dll
打開黑框框(即:win+r,cmd,進入到%IKVM_HOME%\bin的目錄下),
執行:ikvmc -out:dllFileNameOrPath.dll javaFileNameOrPath.jar
此時,就會在%IKVM_HOME%\bin目錄下或者指定的Path下,會出現一個dllFileNameOrPath.dll文件,置於你的.Net項目中,添加引用,與此同時,請將
%IKVM_HOME%\bin\IKVM.OpenJDK.Core.dll
%IKVM_HOME%\bin\IKVM.Runtime.dll
%IKVM_HOME%\bin\IKVM.Runtime.JNI.dll
添加到你的.Net項目中,切記!
其中,using 後面跟java類的包名。
2、C#和Java整合,不,應該是.Net和Java整合。為啥要整合?
在業間,有人士稱,.Net開發除服務層以外的,開發速度快,效率高。而Java做後台服務,安全性、可擴展性高。所以才有牛人將兩者整合。目前.Net和Java整合技術的應用,算是一個新旗幟,但目前已經被應用於實際開發了。
3、正如2所說,.Net和Java整合,Java主要承擔DAL,也就是和DB進行主要的交互,以及其他通信。而.Net主要承擔BLL。