92

是否有将 C# 代码转换为 Java 代码的有效工具?

4

14 回答 14

49

我从来没有遇到过 C#->Java 转换工具。语法很简单,但框架却截然不同。即使有工具,我也强烈建议不要使用它。我从事过几个“迁移”项目,不能过分强调说,虽然转换似乎是一个不错的选择,但转换项目总是总是会变成钱坑。这不是捷径,你最终得到的是不可读的代码,并且没有利用目标语言。从个人经验来看,假设重写是更便宜的选择。

于 2008-09-17T01:30:28.733 回答
31

我们有一个需要在 C# 和 Java 中维护的应用程序。由于我们积极维护这个产品,一次性移植不是一种选择。我们调查了 Net2Java 和 Mainsoft 工具,但都没有满足我们的要求(Net2Java 缺乏健壮性,而 Mainsoft 成本高且缺乏源代码转换)。我们创建了自己的名为CS2J的工具,它作为我们夜间构建脚本的一部分运行,并将我们的 C# 代码非常有效地移植到 Java。现在它正好可以翻译我们的应用程序,但要被认为是一个综合工具还有很长的路要走。我们已经将这项技术授权给一些有类似需求的各方,并且我们正在考虑公开发布它的想法,但我们的核心业务这些天让我们太忙了。

于 2009-08-03T14:00:17.400 回答
9

这篇博客文章建议了有形的有用结果。

于 2010-04-10T11:57:00.057 回答
7

Microsoft 有一个工具可以将 java 转换为 C#。对于相反的方向,看看这里这里。如果这不起作用,手动转换源代码应该不会花费太长时间,因为 C# 和 java 非常相似,

于 2008-09-17T01:27:32.737 回答
5

虽然这是一个老问题,但看看 xmlVM http://www.xmlvm.org/clr2jvm,我不确定它是否足够成熟,尽管它已经存在了好几年了。我相信,XMLvm 主要用于将 Android Java 应用程序翻译到 iPhone,然而,它基于 XML 代码翻译的框架足够灵活,可以进行其他组合(参见网站上的图表)。

至于进行这种转换的原因,也许需要“劫持”一些高度丰富的 oss 代码并在他/他们自己的 [Java] 项目中使用它。

干杯

富有的

于 2011-01-13T16:47:29.623 回答
5

这些家伙似乎对此有解决方案,但我还没有尝试过。他们也有转换器的演示版本。

于 2010-06-29T07:24:33.110 回答
4

尝试查看Net2Java在我看来,从 C# 到 Java 的自动(或至少半自动)转换的最佳选择

于 2009-01-12T16:39:23.593 回答
3

它们不直接转换,但它允许 .NET 和 J2EE 之间的互操作性。

http://www.mainsoft.com/products/index.aspx

于 2008-09-17T01:13:11.257 回答
3

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

(我已经在他们那里注册了一段时间,他们很擅长不发送垃圾邮件)

于 2008-09-17T01:57:57.483 回答
1

我不确定您希望将 C# 转换为 java 的目的是什么,但如果您需要 .net 互操作性,您可能需要查看Mono

于 2008-11-13T14:45:16.370 回答
1

这是即兴的,但这不就是蚱蜢的目的吗?

于 2008-11-13T14:48:57.517 回答
1

好吧,语法几乎相同,但它们依赖于不同的框架,因此转换的唯一方法是让懂这两种语言的人转换代码:) 你的问题的答案是否定的,没有转换 c# 的“有效”工具到java

于 2009-08-03T14:04:08.210 回答
1

可能你可以使用jni4net-opensource 桥代替?或我知道的其他选项列表。

于 2010-12-13T23:57:52.713 回答
-2

为什么不在 Haxe ( http://haxe.org/ ) 中编写它并将其转换为您想要的任何内容?

于 2015-08-27T06:59:48.397 回答