我开始使用 .net (C#) 为客户端和服务器端编写客户端-服务器应用程序。

不幸的是,我的公司拒绝支付服务器上的 Windows 许可证费用,这意味着我需要用 Java 重写我的代码,或者采用 Mono 方式。

有没有什么好的方法可以将C#代码翻译成Java?服务器应用程序没有使用 .net 特定功能,仅使用 Spring.net、Hibernate.net 和 log4net 等跨语言工具。

谢谢。

有帮助吗?

解决方案

我建议为 Mono 构建。你会遇到一些灰色地带,但总的来说它很棒。但是,如果您想为 Java 构建,您可以查看 蚱蜢. 。它是一个商业产品,但它声称能够将 CIL(C# 编译器的输出)转换为 Java 字节码。

其他提示

除了可能的解决方案之外,将一种语言编写的程序直接翻译成另一种语言通常被认为是一个坏主意™——特别是如果这种翻译是以某种自动化方式完成的。即使由“真正的”程序员完成,逐行翻译应用程序通常也会导致不太理想的最终结果,因为每种语言都有自己的习惯用法、优点和缺点,需要以稍微不同的方式完成工作。

尽管这可能很痛苦,但如果您的雇主需要的话,用 Java 重写它可能符合您和那些必须维护此应用程序的人的最大利益。

我只知道另一种方式。 Dbo4 是用java开发的,c#版本是从java源自动生成的。

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

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

Java 和 C# 在语法和语义上非常接近。真正的问题是细微的差别。当你意想不到的时候,它们会咬你。

如果许可适合您的话,Grasshopper 确实是目前最好的解决方案(免费版本有一些重大限制)。它完全基于 Mono 类库(实际上相当不错),但运行在标准 Java VM 之上。这很好,因为根据我的经验,Java VM 通常比 Mono 更快、更稳定。当涉及到表单/图形相关的 API 时,它确实比 Mono 有更多的弱点,因为其中大部分还没有从 Mono VM 移植到 Java。

不过,如果它有效的话,它可能会很棒。有时,性能甚至比在 Windows 上的 MS VM 上运行相同的代码更好。:)

我想说从维护的角度重写代码。这将提高项目的初始成本,但对于查看代码的人来说,以后的劳动密集度会降低。就像之前的海报所说的那样,任何像这样的自动化工作都无法像“真正的”程序员一样出色,并且逐行转换也没有多大帮助。您不想稍后生成可以工作但维护起来很麻烦的代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top