2

我正在维护两个非常相似的调度程序——一个在 Java 中,一个在 C# 中。C# 版本最初是使用 JLCA 创建的,然后手动修改。在过去的几周里,Java 版本已经被其他人进行了相当大的修改(所以我必须追踪他的更改),我想知道是否使用 Internet 上可用的工具之一重新转换它,或者是否只是尝试每次需要时手动进行更改。这个问题对我来说很可能经常出现 - 有没有办法维护两种不同语言的软件版本并尽可能轻松地保持同步?!建议将不胜感激!

4

5 回答 5

2

我不确定这是否适合您,但您可能需要考虑使用 Java 进行开发,然后使用IKVM将 jar 文件转换为 .NET 程序集。我已经有几年没有使用它了,但当时它工作得很好。

于 2009-02-20T14:30:10.590 回答
2

我使用现成的代码转换器以两种不同的语言维护项目的经历非常糟糕(请注意,我没有说要转换,我完全相信使用自动化工具进行初始转换/清理可能有优点.)

有些人经常支持多个平台他们喜欢指出没有自己的内部工具的语言选择的痛苦,但他们倾向于使用专门的语言或按照约定将自己绑定到一组语言结构,以便他们的中间编译器可以为他们完成繁重的工作。

缺少一些很酷的专有交叉编译器和与之相伴的代码约定,我会手动完成这项工作。诀窍将是严格监控签入,并确保在两个地方都检查功能。根据问题的严重程度,您可以发明一个源代码控制流程(范围可能从压迫性和痛苦到相对较轻的重量),以帮助保证这一点(例如,您可以要求开发人员仅签入对分支的更改直到端口在两个平台上都完成,此时您将它们合并。)

于 2009-02-20T15:14:45.380 回答
1

我会亲自手动维护差异。这意味着如果在某些时候在 .NET 中做一些不同的事情更有意义(很可能是这种情况,以使代码符合习惯),您不需要继续手动重新应用该更改。

另一种选择是转换原始 Java 代码,复制它,然后转换修改后的 Java 代码。比较两次转换的结果,并将该更改应用于您现有的代码,以便轻松完成。这样可以在保留现有代码的同时使您免于进行“gruntwork”转换。

于 2009-02-20T14:57:10.633 回答
0

你考虑过J#吗?

根据您的需要和配置,您可以将 Java 代码交叉编译为 Java 和 J#。您可能需要将公共部分重构为一个单独的模块,以便在任一环境中编译(J# 停留在 Java 1.2,只有几个 1.3 类)。

请记住,J# 是旧的,并且在 VS 2008 中不再可用(您需要 Visual Studio 2005 的旧副本),但是根据您项目的复杂性,这可能是一个可行的解决方案。

于 2009-02-20T15:04:39.400 回答
0

如果它们如此相似,维护两个版本有什么真正的优势吗?也许你可以放弃其中一个...

于 2009-02-20T15:30:52.003 回答