我有10多年的Java经验(从1.1版开始!)和7年来的.NET(主要是C#)经验。
您有一个非常谨慎的决定,但是大多数情况下,您应该尝试分解为以下两种情况:
桌面应用
如果要开发桌面应用程序,则必须使用要使用的主要平台。如果是使用.NET的Microsoft平台,那么没有比母舰自身开发的平台更好的解决方案了。如果是Linux或多平台方案,请考虑使用Java或转向基于Web的解决方案。
基于网络的应用
这是一个很难做出的决定,因为每个人都有自己的优势和劣势。这里有一些:
C#
优势:目前,在将新功能构建到语言和平台/框架方面,其动力更大。一切都来自一个供应商,这绝对是一个优势。您还可以使用一些非常强大的组件,例如DevExpress(Java与DX团队多年来整合在一起的东西相差甚远,这极大地提高了生产力)。
缺点:对于企业应用程序,.NET不如Java成熟。您没有像Java那样有很多供应商在.NET中构建企业软件。
爪哇
优势:更加成熟(已经解释过),并且拥有一个大型社区,其中包含几个可以提供帮助的大型开源项目。几个所谓的.NET开源项目实际上只是Java项目的翻版。
缺点: Oracle拥有Java(我知道,不是JCP),这绝对是要考虑的风险。他们的意图不是很明确,我个人不喜欢这种语言的发展方向(我知道很多Java开发人员也有类似的担忧)。
服务器端应用
它与基于Web的应用程序基本具有相同的论点,但是因为不必担心UI Java在这种情况下会变得更强大。但是同样,如果平台主要是Windows .NET,则可能是更好的选择。
总体考虑
总的来说,我认为.NET的优势主要是因为Visual Studio 2010(提供了最好的IDE),MS SQL,实体框架,IIS等的紧密集成。这些都代表了生产率的巨大提高,而我拥有大量的经验证明。我也与大多数转向.NET的Java开发人员一起工作,他们基本上持有相同的意见。
我认为,微软比以往任何时候都强大意味着,.NET将会存在一段时间也是一个好点。因此,当展望10-15年时,.NET比Java更安全。