我正在将一个Java库移植到C#。我正在使用Visual Studio 2008,因此我没有停用的Microsoft Java语言转换助手程序(JLCA)。
我的方法是创建一个与Java库具有类似项目结构的新解决方案,然后将java代码复制到c#文件中,并将其逐行转换为有效的c#。考虑到我发现Java易于阅读,两种语言的细微差别让我感到惊讶。
有些东西很容易移植(名称空间,继承等),但有些东西出乎意料地不同,例如嵌套类中私有成员的可见性,覆盖虚拟方法和内置类型的行为。我不完全理解这些事情,我确信还有很多其他我尚未见过的差异。
我还有很长的路要走这个项目。在此转换过程中我可以应用哪些经验法则来正确管理语言差异?
答案 0 :(得分:3)
你以唯一理智的方式做到这一点......最大的帮助将是来自Dare Obasanjo的这份文件,其中列出了两种语言之间的差异:
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)
如果你有少量代码,那么逐行转换可能是最有效的。
如果您有大量代码,我会考虑:
答案 3 :(得分:1)
另一个快速而又肮脏的想法:您可以使用IKVM将Java jar转换为.NET程序集,然后使用Reflector - 结合FileDisassembler添加 - in - 将其反汇编为Visual C#项目。
(顺便说一下,我还没有真正使用过IKVM - 有人担心这个过程会起作用吗?)
答案 4 :(得分:0)
我不确定它是否真的是逐行转换代码的最佳方式,特别是如果障碍变得势不可挡。当然,Java代码为您提供了指导和基本结构,但我认为最重要的是库确实提供了与Java相同的功能。
答案 5 :(得分:0)
我前几天听说过.net版本的Java。如果这样的怪物可用,你能将java源代码编译成.net中间库吗?