天天看點

Java To CSharp源代碼轉換

用戶端:Unity3D開發(C#)

伺服器:Java (基于Java7)

日   期:2016年09月

部分伺服器的部分邏輯功能在用戶端實作一遍,可以簡單的了解為伺服器的部分邏輯代碼搬到用戶端來實作一遍。

想到的辦法是代碼轉換。有兩個原因:

時間問題,把時間用在更有意義的事情上。

解放雙手和大腦,無須把相同的代碼寫兩遍。

源代碼轉換就是指把Java的代碼轉換成C#的源代碼。

這樣做的好處是友善後續的開發和調試,有源碼更放心。

以下是幾個工具,用于Java源碼轉換到C#源碼

文檔:https://msdn.microsoft.com/zh-cn/library/1kwtxa08(v=vs.80).aspx

下載下傳:https://www.microsoft.com/en-us/download/details.aspx?id=14349

visual studio 2008及之前的老版本內建此工具,但從visual studio2010起已不提供,故放棄之。

下載下傳:https://sourceforge.net/projects/j2cstranslator/

開源,免費,但13年至今未更新

官網:http://www.remotesoft.com/octopus/

收費,未進行詳細了解

官網:http://www.tangiblesoftwaresolutions.com/Product_Details/Java_to_CSharp_Converter.html

收費,免費版有1000行代碼限制。看了官網介紹後,決定使用它。

官網:http://www.euclideanspace.com/software/language/xes/userGuide/convert/javaToCSharp/index.htm

下載下傳:https://sourceforge.net/projects/xes/files/OldFiles/xes_java_runtime_alpha06.zip/download

免費,似乎用起來并不那麼理想,目前的最新版本是2004年,未有更新,故放棄之。

經過對比之後,我選擇了Java to C# Coverter,此工具的更多詳情,可以在官網的介紹中檢視

轉換過程中的資訊資訊,會出現在對話框中,同時也會标注在轉換後的代碼中。

Java To CSharp源代碼轉換

本小節主要是說 IKVM在Unity中的使用。

IKVM下載下傳:https://github.com/Unity-Technologies/kaizen/tree/master/bundles/IKVM.NET

話題讨論

http://forum.unity3d.com/threads/building-project-with-ikvm-dlls-inside.101097/

下圖中,上圖是Java的源代碼,下方是轉換成Dll後反編譯檢視的代碼。

Java To CSharp源代碼轉換

引擎版本:Unity 4.0 / Unity 5.3.5 (目标平台測試過 Windows和Android 平台)

IKVM:ikvm-7.2.4630.5

OS:Windows 7 x64

從git或官網下載下傳ikvm,比如我下載下傳的ikvm-7.2.4630.5.zip,并解壓

拷貝ikvm-7.2.4630.5\bin\下的所有dll 到Unity的Assets\Plugins 下

拷貝Java轉換出的dll,放到Assets\Plugins 下,比如我的hello.dll

在Unity的腳本中調用java中的class , method 等等

下方是我測試過程中出現的Error,出于性能和後期調試考慮,我放棄了此種方式,采用将Java代碼轉換成C#源碼的方式。

當在腳本的全局變量,傳回值,協程中引用了java中的class,method時,就會報以下Error。

但如果是内部變量則不會有這些Error。

運作時Error

Project中選中腳本時的Error

https://github.com/zhaoqingqing/blog_samplecode/tree/master/technical-research/java-to-csharp