【问题标题】:How to rewrite or convert C# code in Java code?如何在 Java 代码中重写或转换 C# 代码?
【发布时间】:2008-09-15 17:46:30
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

标签: java c# .net mono interop


【解决方案1】:

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

【讨论】:

  • 我对 Grasshopper 一无所知,但这听起来是个坏主意。如果您有任何使用 Java 运行和维护此应用程序的意图,您将需要 Java 源代码,而不是 C#。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

              【解决方案8】:

              我会说从维护的角度重写代码。这将提高项目的初始成本,但对于查看代码的人来说,以后的劳动强度会降低。就像以前的海报所说的那样,任何像这样的自动化都不能像“真正的”程序员那样做得好,并且逐行转换也无济于事。您不想稍后再生成代码,但维护起来很麻烦。

              【讨论】:

                猜你喜欢
                • 2015-02-10
                • 1970-01-01
                • 2014-09-16
                • 2016-07-29
                • 2015-12-06
                • 2013-07-12
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多