2008-10-03 127 views
5

我将一个Java库移植到C#中。我使用的是Visual Studio 2008,因此我没有停用的Microsoft Java语言转换助理程序(JLCA)。我应该如何将Java代码转换为C#代码?

我的方法是创建一个类似的项目结构的新的解决方案,以Java库,并随后将Java代码复制到C#文件,并将其行由行转换为有效的C#。考虑到我发现Java容易阅读,两种语言的细微差别让我感到惊讶。有些东西很容易移植(命名空间,继承等),但有些东西意想不到,比如嵌套类中的私有成员的可见性,重写虚拟方法和内置类型的行为。我不完全理解这些事情,我相信还有很多我还没有看到的其他差异。

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

+0

看到这里的自动Java到C#转换建议:HTTP://计算器.com/questions/443010 /哪里可以找到一个java-to-c-sharp-converter – 2012-11-06 18:02:49

回答

3

你的唯一明智的方法做它,你可以...最大的帮助将这个文件从敢于奥巴桑乔列出两种语言之间的差异:

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

BTW,更改所有的getter并将setter方法转换为属性......除非您需要完美的界面兼容性,否则不需要使C#库函数与java库相同。

+0

感谢您的链接 - 这是我正在做的很棒的参考资料。 – Lee 2008-10-05 13:36:32

+0

“将所有吸气和吸气方法改为属性” - 再好好考虑一下。如果改为属性[如MSDN指南中所述](https://msdn.microsoft.com/en-us/library/ms229054(v = vs.100).aspx),则更为正确。我只需要将一堆“属性”还原回1)没有获取的方法2)非确定性3)返回的构建数组......其他人也这样做了。盲目转换属性而不考虑属性应该像域一样行为并不是一个好策略。如果有疑问,请保留一个方法。 – NightOwl888 2017-02-04 04:10:25

0

我不知道这是否真的是由线到线的代码转换,特别是如果障碍物变得势不可挡的最佳途径。当然,Java代码为您提供了一个指导方针和基本结构,但最后我认为最重要的是库提供的功能与它在Java中的功能相同。

0

我听说过一些其他的日子有关Java的.NET版本。如果这样的怪物可用,你是否能够将Java源代码编译成.net中间库?

+0

它真的存在吗?如果是这样,你从哪里听说的? – 2012-11-06 18:03:45

+0

对不起,现在找不到它。我相信这是对某些产品的补充(不是免费的语言),但我应该抓住参考。无论如何,这已经是4年前的事 - 如果它是一款产品,现在几乎可以肯定没有了! :( – 2012-11-10 23:41:03

1

如果你有少量代码然后一行行的转换可能是最有效的。

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

  1. 寻找,做谈话为你的产品。
  2. 编写脚本(红宝石或Perl可能是一个很好的候选人)做转换为你 - 至少是单调的东西!它可能是一个简单的搜索/替换关键字区别和重命名文件。给你更多的时间/手指专注于更难的东西。
  3. 值得注意
3

几个其他选项:

  • J#是微软的Java语言 实现.NET上。您可以通过 访问Java库(最高版本为 1.4 *,反正)。 *实际上Java 1.1.4为java.io/lang, 和1.2为java.util +请记住,J#2的结尾为 〜2015-2017。0 redist

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

  • 微软的Visual Studio 2005提供 有 “Java语言转换 助手” 是的Java程序 转换成C#程序 自动为您。

1

一个更加快速和肮脏的想法:你可以使用IKVM到Java的jar转换为.NET程序集,然后使用ReflectorFileDisassembler --combined附加到拆解成Visual C#项目。

(顺便说一句,我还没有实际使用IKVM - 任何人都关心担保,这个过程会工作?)