Java 和 C# 的并行开发

Posted

技术标签:

【中文标题】Java 和 C# 的并行开发【英文标题】:Parallel development in Java and C# 【发布时间】:2009-02-20 14:25:03 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

There are people who support multiple platforms regularly、and they love to point out the pains of language selection without their own in-house tools,但他们倾向于使用专门的语言或按照约定将自己绑定到一组语言结构,以便他们的中间编译器可以为他们完成繁重的工作。

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

你考虑过 J# 吗?

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

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

【讨论】:

【参考方案5】:

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

【讨论】:

以上是关于Java 和 C# 的并行开发的主要内容,如果未能解决你的问题,请参考以下文章

C#并行编程--命令式数据并行(Parallel.Invoke)---与匿名函数一起理解(转载整理)

C#多线程开发-任务并行库

你应该这样去开发接口:Java多线程并行计算

在 ADO.Net C# 中执行并行数据库访问

C#开发串口通信实例及串口基础

并行开发-Paraller