更好的跨平台开发选择:Java还是C#?

vy3*_*y32 14 c# java comparison development-environment

我是一名拥有超过25年经验的Unix开发人员.我做了很多跨平台工作,最近在MacOS上开发代码并使用autoconf将其重定向到Linux,并在交叉编译模式下使用mingw重定向到Windows.这在很大程度上给出了良好的结果.但是,我有兴趣转向类型安全的语言.此外,我的用户更愿意为他们提供基于GUI的应用程序而不是命令行应用程序.

我的大多数用户都在Windows上,但很多重要用户都在Linux上.我的所有用户都不在MacOS上,但那是我首选的环境.(我应该切换到Linux或Windows,但我真的很喜欢Apple Mail.)

大约三年来,我一直在寻求将我的开发工作从C++转移到Java或C#.C++运行得更快,我们正在进行非常数据密集的操作.一个典型的程序将处理500GB到1TB,需要3-5个小时.在5小时内完成的程序与在9小时内完成的程序之间的差异是完成启动它的那一天的程序与第二天结束的程序之间的差异.另一方面,我越来越多地编写多线程程序,并且在Java和C#中,treading模型更加清晰.

所以我陷入了僵局.我找到了一个速度比较,表明我不应该因为速度而选择Java vs. C#.所以我试图考虑其他问题:

  1. 长期承诺.没有人知道Java会发生什么,但只要微软是C#,C#就和我们在一起.
  2. 平台上的可用性和一致性.Java在各地几乎都是一样的.我不知道微软和Mono的C#有多相似.
  3. 易于开发.我已经习惯了在EMACS中开发,但我一直认为我应该因为代码分解而转向Eclipse.(我希望EMACS具有不错的代码保理,但它没有.)Visual Studio非常好,但只能在Windows上运行.Mono开发环境看起来很可悲,但它可能会变得更好.

所以我在寻找其他人的意见.

Ebo*_*ike 17

我的投票是针对Java的,虽然我相信很多人会不同意.

Mono现在非常普及(包括在像Android这样的移动平台上),但我的理由是它不是官方微软批准的C# - 它是一个重新实现.

有人担心微软会因为专利侵权或其他任何可能出现的问题而关闭Mono,但这种情况从未发生过,而且此时它不太可能发生.

我宁愿选择Java,它被官方设计为跨平台语言和跨平台API.当然,也有类似的担忧 - 现在甲骨文正在发号施令,他们很快就疏远了不少开发者,但我仍然把它当作Mono.

这是我个人的看法 - 我相信会有很多人不同意我的意见.

  • 微软已经做出了具有法律约束力的承诺,即他们不会起诉使用或帮助开发CLR竞争实施的任何人.Mono是一个非常适合Linux的实现,事实上很多人都将它用于跨平台兼容性.http://www.microsoft.com/interop/cp/default.mspx (6认同)
  • 它是一个重新实现,而不是克隆,语言保持不变,底层类因显而易见的原因而不同. (3认同)
  • 我真的不明白为什么人们将专利提到Java的+1.我瘦了,实际上它一直都是这样.微软做出了具有法律约束力的承诺,他们不会起诉任何有关CLR的人,另一方面,甲骨文有很好的java诉讼历史. (2认同)

Sto*_*oic 5

Java是一种跨平台语言,这是使用它的第一个好处之一.

类似问题:Java是开发跨平台GUI应用程序的最佳语言吗?

  • @djechelon:C#不是跨平台的.Mono没有得到官方支持,我甚至都没有谈论所有嵌入式或非嵌入式系统,这些系统永远不会有CLR.如果您认为C#"与Java一样跨平台",我建议您访问最近的精神病医院;) (2认同)