技术上难分高下,为什么市场选择了Java?

开发 后端
根据TIOBE编程语言指数来看,从2002年起,Java一直稳居Top 3的位置,近几年来几乎都是以压倒性的优势位居首位。而C#与之相比,热度就要弱很多,整体热度要比Java相差一倍多。为什么市场和大部分程序员会选择Java而不是C#呢?

编程语言之争由来已久,每次争锋都逃不出两个结果,一个是双方争执不下,谁也不服谁,另一个就是“不以使用场景来谈论编程语言”都是耍流氓。所以,这一次我们不再单纯的谈论C#和Java谁强谁弱,而是从多个角度来看市场为什么选择了Java。

虽然Java每个月都会出几篇“阵亡”或者“准备阵亡”的报道,但是整体来看,Java在技术人中间的热度一直是居高不下。根据TIOBE编程语言指数来看,从2002年起,Java一直稳居Top 3的位置,近几年来几乎都是以压倒性的优势位居首位。而C#与之相比,热度就要弱很多,整体热度要比Java相差一倍多。

为什么市场和大部分程序员会选择Java而不是C#呢?

1. 成也微软,败也微软

微软之于C#如同萧何之于韩信。

微软

众所周知,C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言,所以在对C#的支持方面微软也是非常卖力气的。Visual Studio是公认的“宇宙***IDE”,C#背靠这样一座大山,在开发效率方面简直有如神助。

但是微软在费用方面从不手软也是人尽皆知,C#开发后软件的应用成本要比Java开发后软件的应用成本高很多,而对企业来说,如果有一种替代方案能够减少成本,无论是硬件成本还是软件成本,都是极乐于应用的。而在这方面,Java似乎更胜一筹!

2. 跨平台错失良机,万事皆休

跨平台是Java***的优势之一,Java应用程序可以部署在Windows、Linux、Mac以及其它Java JRE支持的操作系统上。而C#则因为微软最初想要推广自己家的操作系统,没有提供除Windows之外的Runtime环境,限制了C#的发展。虽然现在微软意识到了这个问题,开始积极适配其它平台,但是无奈良机已逝,Java在大规模系统的开发中已经站稳了脚跟。

3. 开源才是天下大势

2016年,微软在GitHub“对开源贡献人数最多的组织(Organizations with the most open source contributors)”中战胜Facebook和Google跃居首位,赢得了业界和开源社区的认可。至此,人们好像就把微软和开源联系起来了。

事实上,早几年微软一直是开源的死敌,微软前CEO史蒂夫·鲍尔默(Steve Ballmer),他当初曾将“开源”称作微软知识产权毒瘤。C#在微软这样的指导思想下发展,一开始的闭源也是意料之中的事情。而Java因为开源特性而得以在全球快速遍地开花,产生了众多开源框架和很多大型项目的成功案例。虽然C#之后也进行了开源,但是对于开源开发者来说显然吸引力不够!

4. 钱太少,钱太少,钱太少,重要的事情说三遍

“Java程序员比C#程序员工资高”这是大家都公认的行业现实。下图是职友集采集了其上北京C#程序员和Java程序员的工资收入水平样本得出的结论,从图中我们也可以明显感觉到Java程序员的收入较于C#要偏高。

为什么会出现这种情况呢?前文说过了Java有很多开源框架,这时如何准确及时的选择一个框架就成了难题,Java编程的门槛提高了,Java程序员的薪金也就高了。而C#由于很多框架都是“认证过的产品”,产品具备很浓重的微软属性,使用简单、快速开发,对于C#程序员的要求相对较低,薪资自然就低了。除此之外,还有一部分历史原因,Java要比C#的历史更加深厚,选择Java开发的厂商自然也多,市场需求也就很大。

“钱、人和开发”三者的关系似乎是一个死循环,钱越少,开发的程序员也会变少,企业想要使用这门技术开发应用,招聘的难度也会变大,反之亦然!

5. 无法避免的生态问题

生态问题是每次比较Java和C#之间的差别都会被人提及的,不可否认的是Java生态要比C#生态强得多。Java有各种现成的库、框架和架构案例,在跨平台的系统方面也有很多的优势。资料管理软体开发公司 Hazelcast 的行销与开发商关系副总裁Miko Matsumura 曾表示,现在有相当大规模的开放源代码计划是以 Java 来编写。对于一开始就以开放为基础的 Java 而言,它们已经建立了规模庞大的使用社群、源代码自由性以及组成之多样性。而C#在开放源代码的族群支持上仍是有很 长的一段路要走,毕竟,Java 早在八年前就已经开放源代码了!

写在***

在多个地方,笔者都曾听到过程序员抱怨过“C#的工资太低了”、“要转行做Java”……就技术和语言舒适度来说,两者其实不相上下,任何一种语言的优势或者劣势都必须在实际的应用案例中才能体现出来,所以在选择时还是要结合实际场景的!

责任编辑:赵宁宁 来源: IT168
相关推荐

2013-07-17 10:13:54

X86低功耗芯片

2017-02-27 15:19:04

2012-04-11 21:59:54

2012-05-24 14:34:33

2020-06-10 09:06:48

MongoDB架构高可用

2016-09-27 21:25:08

Go语言Ken Thompso

2018-12-21 11:26:49

MySQLMongoDB数据库

2017-02-27 15:43:14

iOSObject-CJava

2013-07-10 09:58:14

编码规范

2021-08-23 13:25:25

Vue3CSS前端

2024-02-05 21:48:25

VueReactHooks

2021-01-20 14:25:53

Vue3CSS前端

2019-06-21 17:02:48

华为操作系统开发

2013-07-10 10:07:51

编码规范编码

2023-01-05 23:12:30

运营开发技术

2011-11-28 10:21:52

Nginx特性

2020-02-13 17:49:55

SpringBoot放弃选择

2022-06-14 11:01:48

SpringBootTomcatUndertow

2016-11-18 18:04:33

苹果AR技术

2020-05-09 11:40:54

PythonGo语言
点赞
收藏

51CTO技术栈公众号