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

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

How to rewrite or convert C# code in Java code?

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

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

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

谢谢。


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


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

这可能会很痛苦,如果您的雇主需要这样做,那么这可能符合您的最大利益,并且那些必须维护此应用程序才能用Java重写该应用程序的人。


从维护angular讲,我会重写代码。这将增加项目的初始成本,但是对于以后正在查看代码的人来说,它将减少劳动强度。就像以前的海报所说的那样,任何自动化的工作都不能像"真正的"程序员那样出色,并且逐行转换也无济于事。您不想以后再产生代码就可以了,但是很难维护。


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

在某些情况下,它可能很棒。有时性能甚至比在Windows的MS VM上运行相同代码时还要好。 :)


Java和C#在语法和语义上非常接近。真正的问题是差异很小。当您不期望时,它们会咬您。


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


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


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


推荐阅读