如何将C#代码重写或转换为Java代码?

4
我开始使用 .net (C#) 编写客户端 - 服务器应用程序,用于客户端和服务器端。
不幸的是,我的公司拒绝在服务器上支付 Windows 许可证费用,这意味着我需要在 Java 中重写我的代码,或者采用 Mono 的方式。
有没有好的方法将 C# 代码转换为 Java?服务器应用程序没有使用任何 .net 特定功能,只使用跨语言工具如 Spring.net、Hibernate.net 和 log4net。
谢谢。

我认为我找到了一个重复的问题:https://dev59.com/AXVD5IYBdhLWcg3wHn6d - Anderson Green
8个回答

6

我建议使用Mono进行构建。你可能会遇到一些灰色地带,但总体来说很棒。但是,如果你想要为Java构建,可以尝试Grasshopper。这是一个商业产品,但它声称能够将CIL(C#编译器的输出)翻译成Java字节码。


4
我对草蜢一无所知,但听起来似乎不是个好主意。如果你有意在Java中运行和维护这个应用程序,你会想要Java源代码,而不是C#。 - shsteimer

4
除了可能的解决方案之外,将一个语言编写的程序直接翻译成另一种语言通常被认为是一个坏主意™--尤其是如果这个翻译是以某种自动化方式完成的。即使由“真正”的程序员完成应用程序的逐行翻译,往往会导致不太理想的结果,因为每种语言都有自己的习惯用语、优点和缺点,需要以略微不同的方式完成任务。
尽管可能很痛苦,如果这是您的雇主要求的话,最好还是重新用Java编写此应用程序,这样可以符合您的最佳利益以及那些必须维护此应用程序的人的利益。

0

我只知道另一种方法。Dbo4 是用 Java 开发的,C# 版本是自动从 Java 源代码生成的。


0

没有什么好的方法。我的建议是从Java重新开始,或者像你说的那样使用Mono。


0

虽然我认为第一个错误是在选择实现语言时没有确保有合适的部署环境,但现在已经无法改变。我认为使用Mono会更好一些。必须重写代码只会增加项目成本,特别是如果你已经用C#编写了大量的代码。个人而言,我尽可能避免重写代码。


0

Java和C#在语法和语义上非常接近。真正的问题在于细微的差异。当你不经意间时,它们会咬你一口。


0

如果许可证适用于您(免费版本有一些显著的限制),那么Grasshopper现在确实是最好的解决方案。它完全基于Mono类库(实际上非常好),但在标准Java虚拟机上运行。这很好,因为在我的经验中,Java虚拟机通常比Mono更快,更稳定。然而,与Forms/Graphics相关的API相比,它确实比Mono更弱,因为许多内容尚未从Mono VM移植到Java。

在它能够正常工作的情况下,它可能会非常出色。有时,性能甚至比在Windows上运行相同代码时MS的VM更好。 :)


0
我认为从维护的角度来看,重写代码是最好的选择。这会增加项目的初始成本,但对于以后查看代码的人来说,后期的劳动强度会降低。就像之前的帖子所说,任何自动化的东西都无法像“真正”的程序员那样做得很好,逐行转换也不会有太大帮助。你不想以后生成的代码虽然能运行,但却很难维护。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接