我开始使用 .net (C#) 为客户端和服务器端编写客户端 - 服务器应用程序。
不幸的是,我的公司拒绝为服务器盒上的 Windows 许可证付费,这意味着我需要用 Java 重写我的代码,或者采用 Mono 方式。
有什么好方法可以用 Java 翻译 C# 代码吗?服务器应用程序没有使用 .net 特定功能,仅使用 Spring.net、Hibernate.net 和 log4net 等跨语言工具。
谢谢。
我建议为 Mono 构建。你会遇到一些灰色区域,但总的来说它很棒。但是,如果您想为 Java 构建,您可以查看Grasshopper。它是一个商业产品,但它声称能够将 CIL(C# 编译器的输出)转换为 Java 字节码。
除了可能的解决方案之外,将用一种语言编写的程序直接翻译成另一种语言通常被认为是一个 Bad Idea™——特别是如果这种翻译是以某种自动化方式完成的。即使由“真正的”程序员完成,逐行翻译应用程序通常会导致不太理想的最终结果,因为每种语言都有自己的习惯用法、优点和缺点,需要以稍微不同的方式完成工作。
尽管这可能很痛苦,但如果这是您的雇主要求的话,这可能符合您的最大利益以及必须维护此应用程序的人用 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 上运行相同的代码时还要好。:)
我会说从维护的角度重写代码。这将提高项目的初始成本,但对于查看代码的人来说,以后的劳动强度会降低。就像以前的海报所说的那样,任何像这样的自动化都不能像“真正的”程序员那样做得好,并且逐行转换也无济于事。你不想在以后生成代码,但是维护起来很麻烦。