有人 @ 了我一下这个问题。这么老的题目了,既然给翻出来了。那我就回答一下吧,说说我的观点。
首先“大型软件”这个概念就很模糊,这里不妨就把业务流程比较复杂的企业级软件系统和需要处理高并发等情况的互联网应用视为“大型软件”吧。
我个人的观点是:我看不出有任何的理由能说C#不能开发这样的大型软件。
我觉得:不要把技术市场的选择简单地等同于技术本身的优劣。决定一项技术是否占主流,影响因素很多,技术本身的优劣未必就是一个很重要的因素。举个例子,JavaScript如此之流行,占据压倒性的优势,但它的语言设计就真比其他的类似语言高一大截吗?
回到本题,确实,现实中使用Java开发中大型软件较多,由此确实可以得出一个结论:Java本身应用广泛,生态环境比C#的好不少,但这个事实并不能说在技术上C#就无法开发大型软件。
下面从几个方面比对一下Java与C#这两个技术领域。
首先比较一下语言特性与编程体验:C#比Java强,这点恐怕反对的人很少。
其次比较一下类库:.NET Framework与JDK,我在两个平台上都写了不少程序,经常发现两者中都有功能高度类似的组件,如果比对一下各自的设计与实现,也看过不少组件的源代码,个人认为多数情况下.NET往往更好,更对我的胃口,当然这可能是受到个人偏好的影响。
接着比较一下虚拟机:CLR 比 JVM差?我不知道有没有人做过比较客观科学的比对,反正我是没听到过这种结论。
最后比较一下软件系统的运行平台:在服务器各性能指标上Windows Server比Linux差?这个就不好说了,引战火的东西……,好吧,就算Windows Server比Linux差吧,但真的差很多吗?
所以比较来比较去,都无法让人信服——在技术上,Java 适用于大型软件而 C# 适用中小型软件……