为什么好多公司的开发语言从C#变成了Java?

今天来谈谈为什么好多公司的开发语言慢慢从C#变成了Java了。

其实也是希望大家能够讨论一下,如果是讨论的话我们就会建立一个基本的讨论标准,所以这里主要讨论的标准有两个:

公司定义:我们定义的是互联网公司,TO-C的那种,不是to-B的,也不是软件公司,因为软件公司这种并发和QPS一个请求走9次IO也是正常的,尽管我们不应该这么做,但是还是有人这么做,因为他们主要关注点是能完成一些复杂业务;
项 目定义:有的同学说微软,百度,腾讯也在用C#啊,这个就没有讨论的意义,隔壁广场舞大妈也可以去google做×××,但是做产品和研发肯定不行,所以这 个项目的定义还是建立在一套核心系统之上,这套核心系统的主要任务是为公司创造收入,而不是起职能作用,只有面对互联网的产品才有可能去解决ddos攻 击,要做反扒系统,要做反垃圾系统,要做用户增长系统,要做分布式事务控制,要做a/b test系统,要做大数据日志收集系统,要做支付系统,项目多了,服务器多了我们才要建立自动发布/运维系统。
所以希望同学们能基于上面两点进行讨论,光是语言之争也没有必要写这篇文章了,如有光就语言本身进行无意义的争论,这篇文章就没有价值。

基于上面两点可以让大家真正认识到不同语言在不同领域的作用,也希望挖掘出国内用.net比较好的团队在用.net做什么东西,如果有好的经验的话可以在这里分享,让更多的人和团队可以将.net放在一些核心和商业系统之上,促进.net在国内偏技术而不是业务领域的发展。

好的程序员不会简单的把自己仍在简单的语言之争的,因为好的程序员应该知道君子性非异也,善假于物也, 我们系统中也会用多种语言,java主要做api和支付,两方面原因,java有成熟的开发框架包括日志,大数据,全文检索,成熟的mq堆栈等等,这样我们有更多的时间去做核心功能,而不是花大量时间做基础集成和搭建。我们会用node做长连接,还有h5的后端api分发,也有团队用go做底层通信的封装,我还是习惯用C#写一些批处理的控制台命令,python写一些map/reduce的东西,主要是因为可以网上找到最好的例子,如果纯用一张语言干这些事情,肯定相当头疼,效率不会太高。

架构师 and CTO

这个因素其实会占很大的比重,小的公司初始的技术框架选择都是由架构师确定的,后来就很少改变了,公司大了之后,引入CTO,CTO肯定不会就具体的框架和模块发号施令,更多的是在一个全局的角度去看公司现有的一些核心系统,比如商城系统的订单及数据中心的日志数据系统这些宏达的模块。

在公司架构来看,每一个项目都是部门级别的,最后不太可能每个公司每个部门有不同的开发语言,自设鸿沟,核心系统之间语言和通信肯定是相同相似的。

当然我们的职能部门,如OA系统,运营系统,更多的是给公司内部人员或者职能人员使用,可以使用另一种语言,因为这两套系统基本在核心系统之外,不太需要和其他系统联系起来,最简单的我们想不到公司数据平台接入OA系统有什么战略意义。

于是问题来了为什么架构师和CTO会选JAVA作为第一语言呢?

其实选择.net的语言的架构师和CTO也不少。
混到架构师和CTO的基本都是工作多年,而混到多年的基本大浪淘沙就剩大部分JAVA少部分C#(历史原因)。
由于这部分架构师和CTO过去的经历是使用JAVA开发语言所以熟悉,这个就用了。
比较有影响力公司的CTO或者架构师参加一些QCon大会,为了有面子,基本倾向于公司使用JAVA等架构,这也是我们很少能见到国内一些技术大会有人分享.net架构的,除了stackoverflow。
总结而来就是CTO架构师过去的技术经验基本决定了公司技术的选型,在架构师CTO这个圈子,大家都在用JAVA顺势而为。
框架及生态

首先一个发展的比较好的公司或者成长经历了扩张的公司,都会衍生出好几个核心系统,而不是简单的一套三层架构搞定的。

多个系统在之后会经历SOA等服务化的分割,然后需要通信,需要事务管理,需要日志监控,需要异步处理,然后在网上一搜,发现基本每个方向的优秀解决方案都是有java的影子,或多或少会影响我们的选型,单就RPC框架来说开源生态就有好几种,并且背后的推手都是雅虎,google,facebook这样的一等一的互联网公司,但是.net背后基本也就是互联网能力不够的微软和算不上2线的stackoverflow了吧。

生态大家也都知道就是mysql+linux+tomcat 对抗 sqlserver+windows+iis,微软收费大家知道,跨平台这件事java完胜,最后发现搭建一套虚拟机集群linux是多么的顺手,一套win的虚拟机集群即伤财又伤神。

总结:框架开源语言丰富,并且好多框架背后都有facebook,google这样的巨头做推手,.net的后盾就少很多。linux在虚拟化这件事基本完胜win,高昂的授权费如果有上千台服务器的话,这将是一大比费用。
技术的激进性

就是说不同圈子社区对于新技术的敏感性,由于开源社区受众众多,一个新概念的出现,开源社区就会如雨后春笋般出现文章及概念或者框架DEMO了,微软社区除了官方的推进,其余都属于打酱油,而且微软主要精力基本在他的AZure上了。

以炒了一年多的微服务,两年多的大数据为例,我们已经将大数据用在了生产环境中,docker也在测试中,这些激进的想法和实践在.net方向上肯定很难这么快推进吧。

微服务有spring boot等概念,先不说效果怎么样,起码社区在推进,但是基本没有听过微软针对于微服务有什么新框架出来。

总结来说,不黑不吹,过去两年公司和项目的需要,自己学习了java web,spring这一套,研究了hadoop,hive的大数据框架,正在学docker,正式环境尝试前后端分离快速开发h5界面,这些尝试在之前 的经历中都是没有的,可能是随着工作经验增长,能力有所提高就比较自信敢在生产环境尝试,之前也是受限于.net的系统本身业务方向原因,更多的经历耗费在了业务上,而不是处理技术问题吧。
相信微软在解决跨平台这件事,社区积累出现优秀框架,整个微软技术将会更加优秀。

有同学批评我对于.net的观察还停留在5年前,确实最近两年很少写.net了,但是这个5年确实也不影响,node出来也就5年吧,objectC也是最 近5年比较火,包括hadoop,docker最近两年才火起来的,我也用react,angular这些前端框架,我会追新技术的,新事物的诞生是为了 解决老事物的问题而来,而且我们用的架构在市面上应该是最通用的,其实架构这件事5年真不算老,记得之前看<<打造 facebook>>这本书,提到了facebook工程部门2010年做的工具和框架,就有a/btest框架,增长框架,结果我们去年才 做,也就是说比facebook延迟了5年,只能说他们太优秀了。知道自己的不足,才能快速前行。

笋干说的一样,我们是为了找到问题,然后解决问题,好多人习惯性的上来就吵,这个肯定不是一个适合进步的思维,程序员也不会被一种语言吊死,勇于去尝试不同,勇于接收挑战,特别是工作多年之后会发现同样工作年限的人能力差距是很大的,经常听到走出舒适区,却鲜有人做到,可以先从思维开始,看看有有什么不同,踏实是说出自己的观点,共同讨论共同进步,还是基于两个前提:

互联网公司:因为他们会面对更多的问题,更大的并发量,每次修改都是在奔跑的火车上换轮子,每一次异常,每一次停顿都会损失大量的金钱的;
核心商业系统:因为这样的系统是直接在公司产生价值的系统,这样的系统要像宝宝一样呵护,肯定是由公司最优秀的人和团队,以及最好的架构资金支持的;
大家开心,不要互相***。

喜欢小编轻轻点个关注吧!

原文地址:http://blog.51cto.com/13952975/2287675

时间: 2024-10-07 04:12:05

为什么好多公司的开发语言从C#变成了Java?的相关文章

未来有价值的开发语言

这里要说的都是革新,说这些的目的就是要保持关注最新技术.如果你是一个程序员,想要探寻未来技术,那这篇文章就是你的必读之选.我们这里列出了10种编程语言,10种将会改变IT世界工作方式的编程语言.这些语言已经在开始改变IT界的景象.看看吧: Dart语言 这种语言由谷歌制造,用来替代Javascript,弥补Javascript在web应用中大量使用时出现的缺点.对于Dart语言,谷歌的希望是,它将成为web编程的新官方语言.它有着与C语言类似的语法和关键词.然而,一个跟Javascript的重大

Python 开发语言简介

开发语言: 高级语言:python,java,php,c#,Go,ruby,c++   字节码 低级语言: c,汇编 语言对比: Php类:适用于写网页也可以写后台功能 Python java: 可写网页,也可以写后台功能 — python 执行效率低,开发效率高 Java 执行效率高,开发效率低 原文地址:https://www.cnblogs.com/159357zzx/p/11440960.html

java、python、golang等开发语言如何快速生成二维码?

免费二维码生成途径非常多!比如比较有名的草料二维码,如果只是简单的使用,用它就足够了.但是如果想大规模的生成,那就不太合适了.再者很多工具都没办法在二维码中加入logo(像微信二维码一样). 接下来,我就说说如何快速的.高质量的生成一个可高度定制的二维码. 二维码的编码算法是公开的,这就意味着大部分的开发语言都可以动图生成.但是在二维码应用如此广泛的今天,还自己去造轮子,如果不是傻,那就是正真的技术极客了. Java有开源的二维码生成库:com.google.zxing,这是谷歌大佬为andro

如何看待 Kotlin 成为 Android 官方支持开发语言?

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 如何看待 Kotlin 成为 Android 官方支持开发语言? - Thinkblog - 博客频道 - CSDN.NET Thinkblog 爱编程,爱分享,不仅限于技术. 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]

如何看待 Kotlin 成为 Android 官方支持开发语言

Google IO 2017宣布了 Kotlin 会成为 Android 官方开发语言.一时间朋友圈和Android圈被各种刷屏.当然我也顺势而为发布了一篇的文章<为什么我要改用Kotlin>,着实狠狠地蹭了一波热度(尽管这样会被鄙视).眼下Android圈已经躁动了,甚至严重到如果对Kotlin视而不见就显得自己不像一个合格的Android程序员. 本文尝试从一个客观全面一点儿的角度来看待这件事情,尽力为大家提供一个比较理性的观点供参考. 为什么会选用Kotlin 关于 Google 为什么

大公司里开发部署前端代码

作者:张云龙链接:https://www.zhihu.com/question/20790576/answer/32602154来源:知乎著作权归作者所有,转载请联系作者获得授权. 前百度工程师,曾负责百度 前端集成解决方案 的核心设计与开发工作.我现在称这个领域为[前端工程].没错,这是我最爱唠叨的问题域. 这是一个非常有趣的 非主流前端领域,这个领域要探索的是如何用工程手段解决前端开发和部署优化的综合问题,入行到现在一直在学习和实践中. 在我的印象中,facebook是这个领域的鼻祖,有兴趣

开发语言性能对比,C++、Java、Python、LUA、TCC

一直想做开发语言性能对比,刚好有时间都做了给大家参考一下, 编译类:C++和Java表现还不错 脚本类:TCC脚本动态运行C语言,性能比其他脚本快好多... 想玩TCC的同学下载测试包,TCC目录下修改script.c,运行TccTest1.exe即可看到修改效果,无需编译!!! 链接:http://pan.baidu.com/s/1kUVGGwJ 密码:mgpx C++(VS2017) java8.2 Python2.7-3.5.2 aardio(LUA) TCC

短信猫二次开发接口支持任何一种开发语言性能稳定

此款短信猫二次开发接口基于数据库开发方式支持任一种开发语言对短信猫开发,兼容性强.开发简单方便.灵活.稳定.可以快速地使您的应用系统实现短信功能,多种接口方式供二次开发时选择,系统具备良好的可扩展性.企事业单位通过此款短信猫二次开发接口方式实现短信功能,既实现了资源的共享和有效使用,便于企业对进出信息的管理.监控和统计,同时为以后短信功能的扩展提供了便利. 短信猫二次开发接口软件运行界面如图: 在该方案中,考虑到银行是对信息安全性要求很高的行业,采用短信猫作为短信收发设备,避免了常用的通过移动互

好多公司是在拉钩上做广告

拉勾上的没啥意义 好多公司是做广告 因为这样比较容易被客户搜到 实际他根本就不招人 或者说他只招两三个人,搞一大堆职位在上面 然后你一搜,搜到公司了 就等于是给客户看的 人家就没打算招人,工资当然是随便写了 这个扯远了.我好像看到你们的开发人员待遇是7k到12K?? 是的,我们都是招普通本科生 那些大公司基本都是招重点大学的,待遇确实高一些 但是实际这些所谓高工资的职位,在小公司就不存在 因为那是用来做广告的 但是你们公司的架构师一定是高手里的高手,所以项目还是能做成 我们自己创业的,都是高手啊