是否有将 C# 代码转换为 Java 代码的有效工具?
14 回答
我从来没有遇到过 C#->Java 转换工具。语法很简单,但框架却截然不同。即使有工具,我也强烈建议不要使用它。我从事过几个“迁移”项目,不能过分强调说,虽然转换似乎是一个不错的选择,但转换项目总是总是会变成钱坑。这不是捷径,你最终得到的是不可读的代码,并且没有利用目标语言。从个人经验来看,假设重写是更便宜的选择。
我们有一个需要在 C# 和 Java 中维护的应用程序。由于我们积极维护这个产品,一次性移植不是一种选择。我们调查了 Net2Java 和 Mainsoft 工具,但都没有满足我们的要求(Net2Java 缺乏健壮性,而 Mainsoft 成本高且缺乏源代码转换)。我们创建了自己的名为CS2J的工具,它作为我们夜间构建脚本的一部分运行,并将我们的 C# 代码非常有效地移植到 Java。现在它正好可以翻译我们的应用程序,但要被认为是一个综合工具还有很长的路要走。我们已经将这项技术授权给一些有类似需求的各方,并且我们正在考虑公开发布它的想法,但我们的核心业务这些天让我们太忙了。
虽然这是一个老问题,但看看 xmlVM http://www.xmlvm.org/clr2jvm,我不确定它是否足够成熟,尽管它已经存在了好几年了。我相信,XMLvm 主要用于将 Android Java 应用程序翻译到 iPhone,然而,它基于 XML 代码翻译的框架足够灵活,可以进行其他组合(参见网站上的图表)。
至于进行这种转换的原因,也许需要“劫持”一些高度丰富的 oss 代码并在他/他们自己的 [Java] 项目中使用它。
干杯
富有的
这些家伙似乎对此有解决方案,但我还没有尝试过。他们也有转换器的演示版本。
尝试查看Net2Java在我看来,从 C# 到 Java 的自动(或至少半自动)转换的最佳选择
它们不直接转换,但它允许 .NET 和 J2EE 之间的互操作性。
C# 比 Java 有更多的特性。以委托为例:许多非常简单的 C# 应用程序都使用委托,而 Java 人员认为观察者模式就足够了。因此,为了让工具转换使用委托的 C# 应用程序,它必须将结构从使用委托转换为观察者模式的实现。另一个问题是 C# 方法默认不是虚拟的,而 Java 方法是虚拟的。此外,Java 没有办法使方法成为非虚拟方法。这产生了另一个问题:C# 中的应用程序可以通过多态性以不直接转换为 Java 的方式利用非虚拟方法行为。如果您环顾四周,您可能会发现有很多工具可以将 Java 转换为 C#,因为它是一种更简单的语言(请不要' 我没有说更糟,我说的更简单);但是,您会发现很少有像样的工具可以将 C# 转换为 Java。
我建议您更改从 Java 转换为 C# 的方法,因为从长远来看,它会减少令人头疼的问题。Db4Objects 最近向公众发布了他们用来将 Db4o 转换为 C# 的内部工具。它被称为锐化。如果您在他们的网站上注册,您可以查看此链接,其中包含有关如何使用 Sharpen 的说明:http: //developer.db4o.com/Resources/view.aspx/Reference/Sharpen/How_To_Setup_Sharpen
(我已经在他们那里注册了一段时间,他们很擅长不发送垃圾邮件)
我不确定您希望将 C# 转换为 java 的目的是什么,但如果您需要 .net 互操作性,您可能需要查看Mono
这是即兴的,但这不就是蚱蜢的目的吗?
好吧,语法几乎相同,但它们依赖于不同的框架,因此转换的唯一方法是让懂这两种语言的人转换代码:) 你的问题的答案是否定的,没有转换 c# 的“有效”工具到java
可能你可以使用jni4net-opensource 桥代替?或我知道的其他选项列表。
为什么不在 Haxe ( http://haxe.org/ ) 中编写它并将其转换为您想要的任何内容?