【发布时间】:2011-06-28 09:37:38
【问题描述】:
为了使开发可移植到 Java,在 J# 与 C# 上进行整个开发是否有意义?像 lambda 表达式等 C# 中存在的 Java 中缺少的位会发生什么?
实现可移植性的最佳方式是什么?
【问题讨论】:
-
如果你的目标是Java,为什么不从那里开始呢? (.NET 和 Java 在许多方面都非常不同——尽管使用了花括号——并且可移植性需要框架的一个公共子集,但该子集并不存在。)
为了使开发可移植到 Java,在 J# 与 C# 上进行整个开发是否有意义?像 lambda 表达式等 C# 中存在的 Java 中缺少的位会发生什么?
实现可移植性的最佳方式是什么?
【问题讨论】:
我绝对不会使用 J# - 它不再受支持,而且它只支持 Java 1.1.4,IIRC。
我个人建议保持两种语言之间的整体架构一致,然后手动单独编写代码,同时考虑到不同语言中的不同习语。
如果您的代码库使用数据驱动测试,最好在两种语言之间共享该数据,以帮助确保数据可移植性。
【讨论】:
我建议你不要再使用 J#,因为它已经停产了。最新版本已随 Visual Studio 2005 提供。
【讨论】:
除了特定于 J# 的 语言 扩展和 .NET CLR 支持之外,它的 runtime library 实现了 Java 2 集合框架(尽管没有 java.util.concurrent 扩展),甚至还有一些 JFC/Swing,通过Supplemental UI Library。
因此您将仅限于 Java 1.4 API。
鉴于 J# 早已停产,我不建议您投入时间。
如果您真的需要 JVM 和 CLR 之间的可移植性,我会看看 IKVM(在 CLR 之上实现 Java 1.7 API)、Scala for .NET(大约 Scala 2.10 已停产)或像 Ruby 这样的语言 (JRuby/IronRuby) 或 Python (Jython/IronPython)。
或者,您可以为 .NET 生成您的 C# -- 有 Java 到 C# converters available。
【讨论】: