把Java项目的代码转换为C#代码

一个项目是Java开发的代码,转换成C#的代码,

工具介绍:

         转换过程中用到了Eclipse的插件:j2cstranslator,项目地址在http://sourceforge.net/projects/j2cstranslator/ ,但能找到的最近插件下载地址在:http://sourceforge.jp/projects/sfnet_j2cstranslator/releases/,下载最新的插件com.ilog.rules.Java2CSharpTranslator_1.3.6.20110519_01.jar,有1.2M。通过插件可以方便的从Eclipse下把代码转换成C#代码,但为了让转换后的C#代码正常运行,还需要j2cstranslator插件官方提供的映射文件J2CSMapping,它的作用是让java的一些特性和c#的特性关联起来,正常编译并运行。对应的有.net2.03.54.0等不同映射文件。映射文件只有一个ILOG.J2CsMapping.dll

         但是用插件配套提供的映射.net文件,在VS下编译仍然有一些错误无法编译,经过大量尝试,我找到了另外一个.net开源工具:IKVM.NET,官方地址:http://www.ikvm.net/ IKVM内部实现了用.net写的JAVA虚拟机功能,并且包括从Jar包直接转换为dll的命令行工具,以及java.net之间互相调用的环境支持。IKVM提供了30dll文件以及3exe文件。IKVM的一些调用和转换方式可以网上搜索下其他资源,我在转换后的项目中只引用了IKVM.OpenJDK.Core.dll文件就能编译通过,但最后运行时依靠IKVM的其他dll文件才运行正常。

 

转换为生产可用代码:

         实际在转换IBE代码过程中,引用了ILOG.J2CsMapping.dllIKVM.OpenJDK.Core.dll以及其他IKVMdll后还是会有一些报错,比如java里用的super.net里用的base调用基类等等问题,需要手工修改。Java中的socket处理方式和.net也不一样,需要手工修改代码。

         要想在生产上使用,肯定不能依赖太多外部dll,虽然IKVM是开源的,但内部会有一些非托管的c++代码。到生产上使用,肯定要尽量少的依赖外部DLL,用.NET自身框架的代码实现JAVA的实现方式,这块就要根据实际情况灵活处理了,我在转换IBE过程中,发现大多是socketCalendar的转换工作,经过不断调试和分析,终于替换掉了这些代码的转换。当然根据不同JAVA项目,可能需要转换的对象和处理方式不一样,需要对症下药了。

IKVM 工具用于编译生成.dll文件

 

转换过程:

         装好Eclipse的插件后,打开JAVAIBE源码,然后选择EclipseFile->Export…,如图一:

 

图一

导出页面Other里多了一个ILOG Java to CSharp Translator选项,一路选择Next,后面有选择转换后的生成目录。转换后是没有csproj的项目文件,全部是.NET的源代码.cs文件。

         然后新建.NET的解决方案,再新建一个.NET的项目,把转换后的文件包含到解决方案里。项目引用ILOG.J2CsMapping.dllIKVM.OpenJDK.Core.dll文件,然后编译。这时可能还会出现很多错误,因为任何工具都不是万能的,尤其是对编程语言的互相转换,还需要手工进行一定的修改。

         最后根据不同类型特性,再把依赖于外部的API方法手工切换到.NET自身框架提供的API,由于涉及代码保密,就不举例了。

 源文件:http://www.cnblogs.com/Lawson/archive/2012/02/21/2361827.html

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值