历来我就听说有编程语言“鄙视链”的说法,而如今月经贴上的那些事儿,还真让我给遇到了。

以下内容来自知乎,纯属扯淡,易引发口水战,看完勿人身攻击。

目的给盲目的公司决策者、开发人员科普下,有个客观清醒的认识。顺带给妄自菲薄的开发人员鼓励。

问题:

国内技术转型java的大公司,京东、点评,携程也在慢慢转型java,数据库由sql server在转型mysql,原因有哪些呢?

我想到的原因有以下几点:
1. 开源语言,免费,相关产品不用花钱,微软的产品一年会花费多少?
2. 开源插件会很多,可替代性强

3. 移动端火,安卓占据很大一部分

下面是我的回答:

作者:Dylan
链接:https://www.zhihu.com/question/28512241/answer/100592827
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

每家公司都有背后的原因吧。就算是内部的人,可能三言两语也说不清楚。
有些公司决策可能是理性的,有些公司决策可能就是不怎么懂技术的在拍脑袋

两者都有太多的优点和缺点。冒着被喷的风险,简单的说下吧:
C# .NET的优点
1.从使用者角度来看,语言层面C#是领先Java的。C#最初设计可能借鉴了Java,可谓“青出于蓝而胜于蓝”吧。这点,C#很多的语法糖就可以说明。至于平台层面,CLR是否一定优于JVM,这个没有透彻研究,不敢轻易下结论。
2.C#拥有号称世界上最强大的IDE工具VS。
3.微软作为一家商用公司,一贯是比较体贴开发者。制定好各种标准和实现,版本兼容性那些也做的很好。加上2中提到的IDE强大。易用性是更加好的(至少对于初学者是这样)。同时,微软的很多技术让编程的门槛更低(例如早几年搞的拖控件,绑数据...堪称是“傻瓜式”的)。在一些小公司,或者一些要求不高的项目,这种开发技术可能比较有优势。
4.跨平台游戏引擎支持。跨平台APP开发的支持。
夸了那么多,优点就不往下展开,泼下冷水:
1.由于早年不开源,且捆绑windows紧密,所以跨平台特性被人诟病。虽然Mono崛起,并且开源了,但是很难改掉人们对微软“封闭、臃肿、不安全”的印象了。很多人对Mono也是半信半疑。
世上很多事情就是这样的,也算是一种恶性循环吧
2.开源生态确实不如Java,虽然是在努力追赶,但是很多方面还有很大差距。成熟方案和选择性相对少。很多框架和组件,是先在Java平台上出现,后来移植到.NET,更新维护都成问题。很多优秀的中间件、平台,在开发API的时候,都是优先支持Java、python这些,后支持C#(好在大部分的都还支持C#,要不然真的只能靠微软官方去造了)
3.招聘难度大。受国内这种不良风气和环境影响,高端的.NET开发确实特别的少
4.从身边的例子和一些招聘信息来看,相同工作年限、级别的.net程序员的薪资水平应该是略低于Java的(具体的也要看公司和行业,而且人的技术水平、背景、综合能力那些不同,很难横向比较)。这点对一般的开发人员热情来讲是比较有打击性的。当然,高端的技术人员不管是哪个方向和领域,薪资都不会低的
5.由于目前很多企业和个人对Mono和Linux .NET还是半信半疑甚至毫不知情,所以还是会捆绑在windows上。这就造成了授权费用的风险。还有就是windows自动化运维的缺点了。
(为了避免口水战,特别说明:上面说到的几点,有些是客观存在的事实,有些确实是国内的不良风气、误解等造成的恶性循环)

再说说Java的优势:
1.问世早,跨平台,很早就占领了市场,名声已经在那里
2.开源生态好,技术方案的可选性多。良性循环
3.成功的案例多。从企业级系统,到大规模互联网系统,再到现在一直占主流。最后扯到最近几年火热的android、hadoop...可以看出java的地位了
4.由于1,2,3的优点。所以Java高端技术人员相对也会多一些
泼下冷水:
1.语言层面不如后来的C#,也不如新型的go或者scala之类的
2.易用性不如C#.NET。入门的门槛高一些
(见过一些开发人员,配置个环境变量就摸索了半天。有些被微软惯坏了的.NET开发人员,再去开发java,框架整合和一大堆的配置文件就可能弄个半死)
3.IDE不如VS好用(也和个人习惯有关,各有千秋吧)
Eclipse的最大优势在于灵活、可扩展、占用资源少
而myeclipse貌似很少有人在用了
IDEA还不错,不过感觉离微软的VS还是有差距
4.java的母公司sun被Oracle后,总让人感觉不太踏实
5.JavaEE体系里也有很多设计标准(EJB JPA JSF那些使用并不广泛),只不过比轻量级的开源框架取代了。

说了那么多,大概都明白要迁移的理由了。理性的理由大概如下:
1.对Mono和.NET跨平台不太了解,捆绑在windows上面了。因此又担心IDE和服务器费用问题,又担心windows的安全性、自动化运维不方便。而Java跨平台特性早就为人所知。
2.看到.NET开源生态不是很好,Java成功的案例多,开源的方案选择性更多
3.Java的高端技术大牛要容易找一点,至少国内是这样的
4.暂时找不出其他理由了

至于那些拍脑袋想的理由,可谓五花八门:
1.决策者对微软的技术有成见或者误解。或者技术管理者本身具有Java开发背景(这种通常是领导想着急的搞出点业绩来)
2.听别人说.NET不行,不安全,性能低等等(这种人通常都是没有深入了解过.NET的)
3.早期没有重视到技术和架构的重要性,没有重视人的重要性,而往往把责任推给.NET或者.NET开发人员。听别人说Java好,所以就换Java吧(这种通常是病急乱投医)
4.听说“京东、大众点评、携程”那些大公司都迁移了,我们也迁吧。(毫无主见类型)

大公司c#amp;.net转型java的原因有哪些?相关推荐

  1. 国内大型公司,京东,携程从c .net转型java的原因有哪些?

    问题: 为什么京东.携程放弃了c#&.net而转型java,这其中的原因究竟有哪些呢? 我想到的原因有以下几点: 1. 开源语言,免费,相关产品不用花钱,微软的产品一年会花费多少? 2. 开源 ...

  2. 为什么说“大公司的技术顽疾根本挽救不了”?

    [CSDN 编者按]在很多开发者看来,提升敏捷性是解决技术难题的不二法则.但本文的作者作为一家有着一百多年历史的大公司的技术援助顾问却认为,由于历史遗留.文化隔阂等原因决定:在大公司,所谓的敏捷性开发 ...

  3. 大数据时代,为什么很多JAVA程序员会转型做JAVA大数据

    分享之前推荐一个大数据交流学习群:722680258零基础进阶高级,需要学习大数据欢迎加入 JAVA的精密,强大,拥有其它语言不可替代的性能和可维护性,早已经是成为最受欢迎的编程语言之一,很多人想进入 ...

  4. 【JAVA集合类(大公司面试喜欢问的) 】

    看了一些所谓大公司的JAVA面试问题,发现对于JAVA集合类的使用都比较看重似的,而自己在这方面还真的是所真甚少,抽空也学习学习吧. java.util包中包含了一系列重要的集合类,而对于集合类,主要 ...

  5. 各大公司java面试整理对应问题博客整理

    各大公司java面试整理对应问题博客整理! 阿里 分库分表 数据库中间件 MyCAT是一个强大的数据库中间件,不仅仅可以用作读写分离,以及分表分库.容灾管理,而且可以用于多租户应用开发.云平台基础设施 ...

  6. Java程序员需要掌握哪些技能才能通过大公司的面试

    首先我们来谈一下程序员的阶段,在学校里的三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人.这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发 ...

  7. 一名年薪30W+的Java程序员讲解:想去大公司,前三年要懂些什么?

    目前一线城市的薪资水平在13到40k之间,但是找工作的时候并不仅仅有工作经验就行了,还需要一定的专业知识.如果你野心更大,想要进阿里美团头条等等这些大厂的话,那就需要更多的专业知识.那么,一个三年工作 ...

  8. 链行动之大公司(二)——迅雷转型探索 自建公链模式有待验证

    区块链行业兴起已经历数个年头,被近两年高热度所吸引,进入区块链行业的公司如雨后春笋一般增长十分迅速,各行各业的人才也不断的涌入.与此同时,本就在原行业占有重要市场份额的传统行业巨头,也盯上了区块链这个 ...

  9. ​大公司的Java笔试题汇总(含答案)​

    大公司的Java笔试题汇总(含答案) 1.下列哪一种叙述是正确的(D ) A. abstract修饰符可修饰字段.方法和类 B. 抽象方法的body部分必须用一对大括号{ }包住 C. 声明抽象方法, ...

最新文章

  1. 阿里达摩院2020趋势第一弹:感知智能的“天花板”和认知智能的“野望”
  2. redis常用命令getex_Redis常用命令(key、string、List)
  3. Markdown简介和基本语法
  4. Git笔记(16) 变基
  5. 英特尔云计算策略以Nehalem为主
  6. 监控一个大事务的回滚
  7. 毕设-周报-20150520
  8. 如何将Excel工作表另存为PDF
  9. 我是如何黑掉惠普打印机的
  10. 在微型计算机中ega,在微机系统中,常有VGA、EGA等说法,它们的含义是什么
  11. Windows8.1硬盘安装Ubuntu14.04双系统参考教程及多硬盘注意事项[图]
  12. linux高性能服务器编程PDF源代码下载
  13. redis 失效时间单位是秒还是毫秒_经常用Redis,这些坑你知道吗?
  14. 20190904携程机试
  15. 3D仿真教程:ThingJS全套环境搭建方案
  16. 离散数学-10.1群
  17. 项目管理知识图谱(2)
  18. launchctl mysql_【数据库】MAC 使用mysqldump 和 launchctl 定时备份Mysql数据库
  19. Vector 自定义Sort
  20. 小菊的语义分割2——数据集的制作(一): ISPRS_Potsdam遥感图像数据集

热门文章

  1. 商标申请流程图及时间_长沙注册商标面要多长时间及注册申请流程
  2. 途观l怎么使用_官宣!中型SUV质量最新排名出炉:汉兰达失前三,大众途观L上榜!...
  3. ironpython2.7.8相当于python3.7吗_IronPython与numpy的Python速度之比较
  4. 前端开发知识点解答-VUE-面试
  5. RIPRO主题美化-首页全屏动态幻灯片美化模块 WordPress主题美化
  6. 中医与佛教共同推出的养生秘诀 100 条
  7. Linux实用代码--文件系统操作
  8. 使用 jQuery Mobile 与 HTML5 开发 Web App (七) —— jQuery Mobile 列表
  9. 外链图片也有风险吗?
  10. Linux下命令行压缩照片或图片的脚本 (ImageMagick使用心得,convert,import,display实例)...