话说 Java vs C#
写了20多年程序,用过好多编程语言。在服务器端编程领域,最大的两个阵营应该说就是Java和C#了。
选择的前提是场景
网络上有太多人从各方面比较各种编程语言的优劣的文章,例如语言特性、技术性能、学习成本、平均工资以及在GitHub上的热度等,确实给要学习新语言的初学者以有用的建议。
然而语言本身的好坏实难论断,甚至可以说没有绝对的好坏之分。要看你在什么地方、什么时间、与什么人说话。选择编程语言和你在哪一年、在哪家公司、做什么类型的项目,什么硬件环境、客户是谁可能都有关系,大多时候是被选择。
这好比你去了上海谋生,用上了上海话,你又去了广州做生意,然后又学起了粤语,后来你出国,不得已又去学英语。你能说英语就比国语好吗?要看你在哪里、在干嘛。语言是沟通工具,你必须掌握好才好说话、说好每句话,跟咱们程序员要写好程序一样的道理。要表达你的想法并让人听懂、理解,你就得选择合适的语言、句子、词和字。
虽然有可能受限于你的团队、成本和时间等因素,不同的应用场景,有不同的选择。
互联网应用Java合适
互联网应用首要考量的是并发量,达不到压测目标就会变成个笑话。
因此要从硬件架构、软件架构开始仔细设计,离不开云、微服务、集群、缓存、限流、熔断、降级、监控、分布式和响应式等这些概念。要从头搭建着实太费劲,很明显你会想要站在巨人的肩膀上!所以看看这个世界上谁最牛、最有经验,除了国内外这些互联网巨头,你还能相信谁?
在互联网应用领域:
微服务架构跟语言扯不上太多关系,Java和.Net均可;
基础软件方面,从成本上说Linux/MySQL完胜,虽然.Net Core也跨平台,但是缺少成熟案例,选择Java更保险,除非你想吃螃蟹;
缓存离不开Redis、Memcache这些第三方软件,相对来说Java的集成程序库更多;
熔断、降级、监控和分布式应用等,选择Spring框架更容易做到,Java更经济;
应用框架方面Spring Cloud不比.Net Core差,Azure算后来者,Java更适合互联网应用场景。
综上几点,选Java。
企业级应用C#合适
企业级应用部署在企业内部独立的服务器或PC上,不论是Web还是桌面型的,大多数情况下都不要求有非常大的并发量。企业的桌面端操作系统Windows还是占据主导地位,至今为止Java开发的桌面端应用非常少见。
桌面型应用,选择C#。
如果是Web型的应用,其实两者区别不大。从项目成本方面考虑,.Net比Java会少一些,程序员工资摆在那。
工业级应用C#合适
这里说的工业级应用是指工业场景下自动控制系统,对可靠性要求较高,通常需要与各种硬件和PLC通讯。例如WCS、MES、DCS等。由于这些系统的上位机大多是Windows操作系统,实现这些通讯协议的开源软件C#比Java的多。
仅此,选择C#。
总结
总结一下,互联网应用选Java,企业和工业级应用选C#,企业级Web应用看你愿意了。
版权声明: 本文为 InfoQ 作者【阿喜伯】的原创文章。
原文链接:【http://xie.infoq.cn/article/65d13bd0e9f1cf0ab7ac2980d】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论