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

时间:2008-09-15 17:46:31

标签: c# java interop

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

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

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

感谢。

8 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

我会说从维护站点重写代码。它会带来专业技术的初始成本,但对于那些正在查看代码的人来说,后来会减少劳动密集度。像以前的海报一样,任何像这样自动化的东西都不能像“真正的”程序员一样好,并且逐行转换也无济于事。你不想在以后的代码中生成代码但是很难维护。