性能 -均匀
两种平台对于几乎所有应用程序都具有非常好的性能。
尽管我的主观经验是Java对于长时间运行的应用程序略有优势,但.Net在应用程序启动时间上更快,但并没有太大的区别。
可用工具(甚至是第三方工具) -值得商bat
取决于所需的工具和熟悉的工具。
.Net当然具有Microsoft提供的一些出色工具。另一方面,Java世界中也有同样好的工具,例如Eclipse,IntelliJ环境的Netbeans。
跨平台兼容性 -Java Win
.Net从根本上与Microsoft平台(Windows,Xbox等)相关。完整的实现不适用于任何非Microsoft平台。
Mono很不错,但是实际上它不能为您提供完整的跨平台功能,因为它不支持所有.Net库(例如,您不能指望所有Windows GUI东西都能正常工作,因此除非切换到跨平台工具包(例如GTK#),您将无法在不同平台上运行您的应用程序)
Java是真正可移植的。不仅是语言,更重要的是所有Java库都是可移植的。如果您坚持使用纯Java库(例如,Swing for GUI),那么您的代码将在具有Java运行时环境的任何位置运行。
库(尤其是第三方库) -Java Win
Java平台的最佳优势可能是庞大的库生态系统,尤其是开源库。一些例子:
- 所有的Apache库和工具
- 广阔的Eclipse生态系统中的所有库
- Google提供/维护的所有图书馆
- JBoss和Red Hat维护的所有相关企业工具
成本(Oracle似乎尝试通过Java货币化) -如果您使用开源,则Java会获胜,否则,Even。
您可以拥有100%的开源Java堆栈,该堆栈是免费的,并且不会将您捆绑到任何特定的专有平台上。这是100%免费的。
或者,您可以购买IntelliJ IDEA,在Windows上运行Java并使用专有数据库,在这种情况下,它的费用与典型的Microsoft .NET堆栈几乎相同。
开发过程(最简单/最快) -值得商bat
这可能更多取决于开发人员在每种平台上的经验,而不是平台的特定属性。
.Net当然拥有一些出色的工具,可以使您在Windows上使用简单的GUI应用程序时非常高效。毫不奇怪,因为这是.Net开发的“最佳位置”。
另一方面,我更喜欢将Java堆栈用于服务器端开发。借助Maven之类的工具以及所有持续部署/集成功能,您可以为健壮的服务器端应用程序建立非常有效的开发流程。
语言方面的C#与Java相比具有一些生产力优势。但是另一方面,如果您现在在Java平台上进行开发,则趋势是不使用Java本身,而是使用Scala,Groovy或Clojure等新的JVM语言-如果这样做,您的工作效率将大大提高。而不是C#或Java。