我应该如何将Java代码转换为C#代码?

时间:2008-10-03 20:48:56

标签: c# java

我正在将一个Java库移植到C#。我正在使用Visual Studio 2008,因此我没有停用的Microsoft Java语言转换助手程序(JLCA)。

我的方法是创建一个与Java库具有类似项目结构的新解决方案,然后将java代码复制到c#文件中,并将其逐行转换为有效的c#。考虑到我发现Java易于阅读,两种语言的细微差别让我感到惊讶。

有些东西很容易移植(名称空间,继承等),但有些东西出乎意料地不同,例如嵌套类中私有成员的可见性,覆盖虚拟方法和内置类型的行为。我不完全理解这些事情,我确信还有很多其他我尚未见过的差异。

我还有很长的路要走这个项目。在此转换过程中我可以应用哪些经验法则来正确管理语言差异?

6 个答案:

答案 0 :(得分:3)

你以唯一理智的方式做到这一点......最大的帮助将是来自Dare Obasanjo的这份文件,其中列出了两种语言之间的差异:

http://www.25hoursaday.com/CsharpVsJava.html

BTW,将所有getter和setter方法更改为属性......除非你想要完美的接口兼容性,否则不需要让C#库函数与java库相同。

答案 1 :(得分:3)

值得注意的其他选择:

  • J#是Microsoft的Java语言 在.NET上实现。您可以 访问Java库(最高版本 1.4 *,反正)。 *实际上Java 1.1.2 for java.io/lang,  和1.2 for java.util +请记住J#的结尾  J#2.0 redist的生活是~2015-2017

  • Mono's IKVM也运行Java CLR,可以访问其他.NET 程序

  • Microsoft Visual Studio 2005自带 用“Java语言转换 助手“转换Java 程序到C#程序 自动为你。

答案 2 :(得分:1)

如果你有少量代码,那么逐行转换可能是最有效的。

如果您有大量代码,我会考虑:

  1. 寻找能够为您进行对话的产品。
  2. 编写一个脚本(Ruby或Perl可能是一个很好的候选者)来为你做转换 - 至少是单调的东西!它可以是关键字差异和文件重命名的简单搜索/替换。让你有更多的时间/手指专注于更难的东西。

答案 3 :(得分:1)

另一个快速而又肮脏的想法:您可以使用IKVM将Java jar转换为.NET程序集,然后使用Reflector - 结合FileDisassembler添加 - in - 将其反汇编为Visual C#项目。

(顺便说一下,我还没有真正使用过IKVM - 有人担心这个过程会起作用吗?)

答案 4 :(得分:0)

我不确定它是否真的是逐行转换代码的最佳方式,特别是如果障碍变得势不可挡。当然,Java代码为您提供了指导和基本结构,但我认为最重要的是库确实提供了与Java相同的功能。

答案 5 :(得分:0)

我前几天听说过.net版本的Java。如果这样的怪物可用,你能将java源代码编译成.net中间库吗?