我需要将Java 1.5se应用程序转换为C#2.0.
有没有人知道这样做的工具(最好是免费/开源)?
即使有这样的工具,我强烈建议您手动进行转换.自动转换器通常会忠实地重现代码,但忽略了成语 - 因为它们真的很难做到.
此外,.NET和Java中的泛型之间的差异可能导致两个代码库中的一些非常不同的决策.
真的,你最好手工做.
一个很好的工具叫做Sharpen,它是开源的.
此工具已被分叉并通过Xamarin团队更新,他们用它来翻译了Android的API为C#.他们的副本可以在这里找到:
XobotOS /锐化GitHub(Mono的Xamarin团队)
Java语言转换助手.(可选)安装(至少)Visual Studio 2005标准版.
选择文件/打开/转换/ Java语言转换助手.
请记住之后手动检查代码.它会有很多问题.
ikvm在.NET中公开java类.它不是转换器,但根据我的经验,我建议任何人从java转换到.NET
虽然这两种语言的语法看起来很相似,但语义却大相径庭.提到一些地方,这两种语言误入歧途
泛型,Java将所有内容编译为对象,C#保留泛型类型
例外,Java已经检查了异常,C#没有
匿名类和内部类,Java有匿名类和嵌套类,C#都没有.相反,C#有委托和事件.因此编程模型非常不同
委托,C#具有函数指针的概念,这导致了不同的编程方式.
事件,C#具有导致不同编程方式的事件和组件的概念.
API,将所有语义差异放在一边,两个语言都包含巨大的API,两者都没有被轻易转换.
换句话说,您将无法自动进行此类转换.如果更改为C#的原因是为了能够将代码转换为.exe文件,那么Java市场中也有各种选项.
现在,我正在测试有形解决方案(这不是免费的)
有形源转换器
它还增加了一个Class Helper.但在它之外,结果看起来很好.
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),但它是不必要的.在它之外,结果代码非常清楚.