您会选择哪些主流框架、模式和工具来并行开发两个项目,一个使用 C#,一个使用 Java,以最大限度地减少总工作量。(忽略可互换或等效工具的明显案例,如 SCC、单元测试等。还假设通用广泛的 RDBMS 支持。)
“主流”意味着市场一般不会忽视结果,因为它使用了他们从未听说过的未经测试的东西,或者需要神秘的技能来实施和支持它。
假设一个广泛适用的战术业务应用程序。
您会选择哪些主流框架、模式和工具来并行开发两个项目,一个使用 C#,一个使用 Java,以最大限度地减少总工作量。(忽略可互换或等效工具的明显案例,如 SCC、单元测试等。还假设通用广泛的 RDBMS 支持。)
“主流”意味着市场一般不会忽视结果,因为它使用了他们从未听说过的未经测试的东西,或者需要神秘的技能来实施和支持它。
假设一个广泛适用的战术业务应用程序。
db4o使用一种名为sharpen的内部工具来维护一个源存储库(我认为是Java)并将其自动转换为C#。
正如他们在博客文章中所说:
在你开始梦想之前:锐化不是“魔杖”。不要指望给它一个任意的 Java 应用程序并在按下按钮时接收一个正在运行的 .NET 版本。翻译过程需要在 Java 方面做出一些设计妥协,部分 .NET 代码仍然需要手工制作并集成到转换后的源代码中。
然而,它仍然是一个很酷的项目。另外,我认为它最适合新项目。在 GPL 下发布,但您必须在developer.db4o.com注册才能下载它。
编辑:这也是一个示例博客文章。
这很难。虽然有一些很好的库可以移植到这两个平台上,但在框架方面,似乎没有太多共同点。
我在这里得到的关于 SO 的偏差是,在 .NET 世界中与公司路线没有太大偏差。就好像 Java 中的每个人都只使用 EJB、JSF 和 JNDI,而从未提出过 Guice、Struts 或 Hibernate。
如果可以的话,我会采取不同的策略:与其并行开发相同的系统,不如开发一个系统,然后在其周围放置一个包装器以支持其他平台。这样做的缺点是其他平台注定要落后于主要平台,例如 Mono。这个缺点也适用于某些库本身的端口,例如 Spring.net 或 Guice.net。
或者你可以发明你自己的芥末。
我读过有关Mainsoft应用程序的好东西,尽管我自己从来不用使用它。
为什么要并行开发 Java 和 C#?
你可以只使用 Java 和 J#。唯一的问题是,J# 停留在 Java 1.4 级别,因此您有两个选择:
我刚刚完成了一个中型应用程序(大约 80 个类/30.000 行),它以这种方式在 Java 和 .NET 上运行良好。
据我所知,J# 编译的 Java 类是 .NET 字节码,与任何其他 .NET 字节码一样,可以在 C# 中使用。但是您不必对核心类进行两次编码。
根据项目的规模,我会建议以下技术和方法:
由于 Java 和 C# 中的 UI 如此不同,我将为这两个项目构建 UI 的 XML 表示......然后决定两个选项之一 a) 两个项目的 UI 类源的静态和单代通用 XML(这可能以某种方式与您的构建过程集成,以便整个过程自动启动) b)在两种情况下动态生成 UI(可能更难实现)
为了使两个项目的架构相似,我将使用 Spring 和 Spring.NET