【发布时间】:2016-12-05 01:46:36
【问题描述】:
我需要将 Java 1.5se 应用程序转换为 C# 2.0。
有没有人知道可以执行此操作的工具(最好是免费/开源)?
【问题讨论】:
-
使用最好的工具。你的手指和大脑。 -
添加了赏金,因为 Java 语言转换助手不再可用。我找到了 Sharpen,但是还有其他工具吗?
-
另一个好问题结束了。
我需要将 Java 1.5se 应用程序转换为 C# 2.0。
有没有人知道可以执行此操作的工具(最好是免费/开源)?
【问题讨论】:
即使有这样的工具,我也强烈建议您手动进行转换。自动转换器通常会忠实地重现代码,但会忽略惯用语——因为它们真的很难正确处理。
此外,.NET 和 Java 中泛型之间的差异可能导致两个代码库中的一些非常不同的决定。
真的,你最好手工做。
【讨论】:
一个很好用的工具叫做 Sharpen,它是开源的。
此工具已由 Xamarin 团队分叉和更新,他们使用它将 Android API 转换为 C#。他们的副本可以在这里找到:
【讨论】:
Java Language Conversion Assistant。可选地与(至少)Visual Studio 2005 标准版一起安装。
选择文件/打开/转换/Java语言转换助手。
记得之后手动检查代码。会有很多问题。
【讨论】:
ikvm 在 .NET 中公开 java 类。它不是转换器,但根据我的经验,我会向任何从 java 过渡到 .NET 的人推荐它
【讨论】:
虽然这两种语言的语法看起来很相似,但语义却大不相同。提几个这两种语言误入歧途的地方
换句话说,您将无法自动进行此类转换。如果更改为 C# 的原因是为了能够将您的代码转换为 .exe 文件,那么 Java 市场上也有各种选择。
【讨论】:
现在,我正在测试有形解决方案(不是免费的)
它添加了一个类助手。但在它外面,结果看起来不错。
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# 转换器 - Microsoft Java Language Conversion Assistant 3.0
【讨论】:
你试过XMLVM 吗? 它有一个自动转换为 C# 的选项,如下所示:
xmlvm --in=myjar.jar --out=output_dir --target=csharp
【讨论】:
最近 Xamarin 已使用锐化将 android 移植到单声道。查看this 链接。
【讨论】: