天天看点

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