问题:
为什么京东、携程放弃了c#&.net而转型java,这其中的原因究竟有哪些呢?
我想到的原因有以下几点:
1. 开源语言,免费,相关产品不用花钱,微软的产品一年会花费多少?
2. 开源插件会很多,可替代性强
3. 移动端火,安卓占据很大一部分
由于使用Java 语言, 绝大多数程序员在理解了Map/Reduce , 分布式文件系统在Hadoop中的实现以后, 很快就能编写处理处理海量数据的程序,从而大大的提升工作效率。
更是 一个名叫Android 的系统横空出世, 并且随着移动互联网的爆发迅速普及, 运行在Android之上的正是Java !
下面就让我们深入分析一下两者的优点和缺点。
两者都有太多的优点和缺点。冒着被喷的风险,简单的说下吧。
C# .NET的优点
1.从使用者角度来看,语言层面C#是领先Java的。C#最初设计可能借鉴了Java,可谓“青出于蓝而胜于蓝”吧。这点,C#很多的语法糖就可以说明。至于平台层面,CLR是否一定优于JVM,这个没有透彻研究,不敢轻易下结论。
2.微软拥有号称世界上最强大的IDE工具VS,编写C#非常愉快。
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的高端技术大牛好像要容易找一点,至少国内是这样的(很多大厂用Java,企业会认为Java大牛多)
4.暂时也找不出其他理由了
总结
到这里,国内大型公司,京东,携程从c#&.net转型java的原因有哪些就结束了,,不足之处还望大家多多包涵!!觉得收获的话可以点个关注收藏转发一波喔,谢谢大佬们支持。(吹一波,233~~)
下面和大家交流几点编程的经验:
1、多写多敲代码,好的代码与扎实的基础知识一定是实践出来的
2丶 测试、测试再测试,如果你不彻底测试自己的代码,那恐怕你开发的就不只是代码,可能还会声名狼藉。
3丶 简化算法,代码如恶魔,在你完成编码后,应回头并且优化它。从长远来看,这里或那里一些的改进,会让后来的支持人员更加轻松。
最后,每一位读到这里的网友,感谢你们能耐心地看完。希望在成为一名更优秀的Java程序员的道路上,我们可以一起学习、一起进步。
内部交流群 569068099 欢迎各位前来交流和分享, 验证:(009)