我在哪里可以find一个Java到C#转换器?

我需要将Java 1.5se应用程序转换为C#2.0。

有谁知道一个工具(最好是免费/开源)来做到这一点?

Java语言转换助手 。 可选(至less)安装Visual Studio 2005标准版。

select文件/打开/转换/ Java语言转换助手。

记得之后手动检查代码。 它会有很多问题。

即使有这样一个工具,我强烈build议你手动转换。 自动转换器通常忠实地复制代码,但忽略成语 – 因为他们真的很难得到正确的答案。

此外,.NET和Java中的generics之间的差异可能导致两个代码库中的一些非常不同的决定。

真的,你会更好的手动。

使用的一个好工具叫做Sharpen,它是开源的。

这个工具已经被Xamarin团队派生和更新了,他们用它来把Android API转换成C#。 他们的副本可以在这里find:

  • XobotOS /锐化在GitHub(Mono的Xamarin团队)

ikvm公开.NET中的Java类。 它不是一个转换器,但基于我的经验,我会推荐给任何人从Java到.NET的过渡

虽然这两种语言的语法似乎相似,但语义却有很大不同。 提到这两种语言会误入歧途的几个地方

  • generics,Java将所有东西都编译成对象,C#保留了genericstypes
  • 例外情况,Java已经检查exception,C#没有
  • 匿名类和内部类,Java有匿名类和嵌套类,C#既没有。 相反,C#有委托和事件。 编程模型是非常不同的
  • 委托人,C#有function指针的概念,这导致了不同的编程方式。
  • 事件,C#有事件和组件的概念,导致了不同的编程方式。
  • API,将所有的语义差异放在一边,两种语言都具有庞大的API,而且都没有经过简单的转换。

换句话说,你将无法自动进行这样的转换。 如果更改为C#的原因是能够将您的代码转换为.exe文件,那么在Java市场中也有各种select。

现在,我正在testing有形的解决scheme(这不是免费的)

有形的源代码转换器

并添加一个类助手。 但在外面,结果看起来不错。

Java:(原文)

public class PackVariableArrays { private ClassError myerror=new ClassError(); public VariableArrays unpack(String txt) { VariableArrays pc = new VariableArrays(); Variable lc; txt=txt.replace("\r\n","\n"); setMyerror(new ClassError()); if (txt==null) { lc=new Variable(); lc.name="ERV-5: Empty values"; pc.addItem(lc); return pc; } String[] linecode = txt.split(ClassUtil.SEPARATOR2); int blen = 0; int tmpint = 0; int numelement = 9999; 

C#(转换)

 public class PackVariableArrays { private ClassError myerror =new ClassError(); public virtual VariableArrays unpack(string txt) { VariableArrays pc = new VariableArrays(); Variable lc; txt=txt.Replace("\r\n","\n"); Myerror = new ClassError(); if (txt==null) { lc=new Variable(); lc.name="ERV-5: Empty values"; pc.addItem(lc); return pc; } string[] linecode = StringHelperClass.StringSplit(txt, ClassUtil.SEPARATOR2, true); int blen = 0; int tmpint = 0; int numelement = 9999; 

这是一个简单的情况,但它工作正常。 不过,正如我刚才所说,它使用了一个类助手(StringHelperClass.StringSplit),这是很好,但它是不需要的。 在外面,结果代码非常清晰。

微软过去有自己的Java到C#转换器 – 微软Java语言转换助手3.0

您是否尝试过XMLVM ? 它有一个选项来自动转换为C#,如下所示:

 xmlvm --in=myjar.jar --out=output_dir --target=csharp 

最近Xamarin已经使用锐化将android移植到mono。 看看这个链接。