c#和Java都可以跨平台,都是面向对象。但是为什么c#没有Java的人气高呢?
主要是2个原因:
java并不只单指java语言,还包括java平台。 也就是说java语言对应C#语言,java平台对应.net平台。java语言和C#语言要想发挥威力主要是靠其后的平台,而java平台是完全开源的,而.net平台虽然可跨平台(准确的说其本身就是为跨平台而设计的),但是.net之前不开源,近些年也才部分开源,并且在短期内都不可能完全开源。这导致了.net除了widows平台为绝对霸主外,其他平台明显处于劣势。 开源的好处有两点,一点是会有大量的人员提供各种免费的库,找到好多免费的解决方案,二是开源后一些超级大型企业就不用担心自己的命脉掌握在别人手里,所以更倾向开源的java。而.net主要是靠微软自己维护,微软再牛逼也没全世界的人牛吧(不过非开源其实也有优点)。好在微软现在越来越开放,已经公布了.net开源计划,会逐步开源。
android的流行。这个是一个非常重要的原因。 你想windows phone和andriod目前的份额能比么? 而android的原生开发主要是用java。这就如同object-C, 你看以前有多少人用?iphone流行后一下子就疯涨到什么程度了,现在苹果推出swift后,swift马上就挤占了object-C很大的份额。
另外java毕竟比C#早出现好多年,积累比C#多。
不过C#和java非常相似,学了一个另一个就比较容易上手。
以上都是个人理解,很多用语不准确、片面,请勿喷。本人正在学习《C#编程入门》。