为什么.NET平台在技术上远强过Java,而多数大公司却仍采用后者?

S和M是神马

这个问题比较大,但重要的一点是市场的选择。.net开发入门是比较简单的,但技术要深入还就不简单了。从技术上来说,.net与Java没有高下或贵贱之分。那为什么市场上这么多选择了Java,而不选择.net作为开发或使用工具呢?从简单的几点来看看。

1、重要的原因是商业选择。首先是费用,微软的费用从不手软。.net开发后软件的应用成本一般比Java开发后软件的应用成本要高。不管是硬件成本或软件成本,作为开发公司来说省掉这些费用,更容易吸引客户。为客户省掉这些费用客户当然高兴。

2、开发实践或方案多样化及规范化。总得来说,开发成本也谈不上有好大的差异,但还是有的。.net技术其实还是先进的,但开发上面的标准解决方案规范比Java欠缺,比如针对不同类型网站的构建模式,.net就比Java欠缺。Java有解决这些问题的全套框架模式。微软也有,但快速复制就差了。

3、跨平台。这一点估计大家都有体验。

4、快速化反应、技术获得。一个最重要的就是Java开源,有全世界各地的技术人员为Java做各种各样的事情,构建了一个生态环境。需要什么,就可以找到什么,暂且不论拷贝复制带来的各种问题,但起码可以很快找到一种解决问题的途径和方法。


5、编码变得更简单。这倒不是说Java比.net有什么优劣,主要是全世界的JAVAer都可以在上面添加东西,各种框架,各种类,各种封装等等,然后开发者就直接拿来用就可以了,结果就是只要经过培训机构快速培训就可以上手当程序员了,而不是要经过几年学习或教育的大学生才能胜任。当然,这样也会造成软件Bug众生,但这给开发公司带来了直接的经济效益,为什么不选择这种模式呢?.net也可有这种模式,但还不够。

构建一个生态是要花很长时间的,在开源还没有构建完成时,.net还是占据了一段时间的领导地位的。现在市场上有更多的选择,而且有更实惠的选择时,如何抓住用户才是开发公司考虑的事情,而最直接的就是给用户降低费用。


东风高扬

简单地说,有几个原因。

1. Java出得早

2. Java够用

3. Java开源

4. Java由以上三点衍生出来的一系列优势

在科技行业,做得早会有天然优势。我们回顾中外互联网科技巨头,大多数都是本行业最早的一批创业者里面涌现出来的。而java比.Net早了差不多五年推出来的,这五年的时间,让Java建立了很大的优势。

其次就是Java也是一个很好用的语言,.Net能实现的功能,Java基本也都能实现,无非只是说实现的方式不太一样。也就是说,Java是可以满足使用的。尽管.Net语言的确有一些优势,技术上也比较先进,但是Java够用了,也就没必要非要换成.Net了。

而Java有一个不容忽视的优势就是,Java从一开始就是开源的。Java的好框架好思想几乎全是开源的,包括Spring这种。因此生态建设很成功。而受限于Windows平台的.Net在这方面吃亏不少。

除此之外,由于Java起步早,开源,所以累积的使用人数也多,采用这个平台的企业也多。最终导致的结果就是人才储备非常雄厚。与此同时, Java也足够使用了,为了追求语言的技术先进性更换语言,收益不大,也无必要。而选择开源,人才储备足,使用人数多的Java往往也意味着更低的支出,而且不用担心受制于微软公司。由于.Net人才少,招人需要高薪,还不容易找到优秀人才。而微软的平台使用费用也是一笔不容小视的支出。对于企业来说,除非.Net有不可替代性,那就没有必要选择.Net而放着好用又便宜的Java不用。更何况,Java的生态建设也比.net要好得多。

想要取代老技术,老平台,不能只是做到跟原来的平台一样好用就可以的。要有决定性的优势,能做到以前的平台和技术做不到的事情才行。或者是,功能一样,价格具有很大的优势。


镁客网

其实这个问题涉及很多层面。

首先对双方做一下比较。其实.Net和Java作为相同的高级语言,基本功能上是互通的。当然两者有着不同的优势方面。

1. 跨平台。这是Java最大的优势。Java开发的应用程序可以同时部署在Windows、Linux、Mac、以及其他的Java JRE环境支持的各种操作系统上。而这是.Net平台最大的瓶颈。作为微软官方的平台,或许微软为了推广自家系统,限制了.Net平台的运行环境,没有提供除windows平台外的Runtime环境。这直接限制了.Net发展。毕竟对于真正大规模的系统,Unix和Linux系统的大型服务器是更可靠地解决方案。于是Java成了唯一选择。虽然现在微软已经意识到这个问题,开始提供.net core的开源项目,积极的适配Linux系统,但是追赶者需要时间来证明自己。

2. 开源性。这是Java第二个巨大的优势,当然也造成了一些不利影响。首先开源性,使得Java语言迅速的在全球产生了众多基于社区的开源框架。这加速了Java的推广。同时对于很多大型项目,提供了众多成功案例(开源项目都是在应用中被提取的)。这使得Java的解决方案在前期被更多的认可,成为行业主流解决方案。当然,由于框架太多,使得能够合理准确的选择合适的框架,成为了项目架构师最头疼的问题。也提高了Java的门槛。但同时,这也提高了Java程序员的薪金水平。Java程序员收益比较高,成为了行业现实。导致众多新人拥入Java的怀抱。.Net平台,由于是微软自己的平台,没有那么多的开源框架,但是由于每一个框架都是“认证过的产品”,使得产品具备微软属性。使用简单,能够进行快速开发。是的,同样的功能,.Net能够节省一半以上的编码时间。但这也间接的导致了对程序员要求的降低,使得程序员收入降低,项目成本降低。导致很多人不希望成为.Net程序员。并且由于成本低,给很多企业造成,使用.Net框架是不稳定的,廉价的,低等的感觉。导致很多无知的企业高层,被开发公司忽悠采用Java开发,因为能赚到更多的钱。

3. 开发环境。这个不好评价,客观的介绍一下。Java有自己的开发环境,免费的Eclipse,收费的JBuilder等很多第三方IDE。对于免费的Eclipse,我个人很讨厌,虽然功能强大,兼容性强,但是使用麻烦,操作复杂,上手难。当然JBuilder等收费IDE还是很好用的。微软的VS IDE就不用说了,用过的都说好。几乎不用配置,各种智能导航,将微软傻瓜化,上手快的理念发挥到了极致。这也是后期我主要走.Net路线的原因。

4. 时间。Java起步早,导致最早的一批程序员都是Java出身,而现在他们都成了公司的CTO或者技术主管。在选择技术路线的时候,谁不会希望使用自己熟悉的技术呢?这也导致很多项目立项之初的技术选择,就是Java。.Net平台自2002年才开始推出,其实完了3~4年的样子,这足够一个初程走上管理岗了,是不可逾越的鸿沟。

综合上述,导致了Java程序员比较多的现状。

但是,我要说的是,其实对于企业来说,其实.Net是一个很好的选择。

首先是成本。同样的功能,.Net平台开发成本要比Java节省30%以上,至少。然后硬件成本,windows服务器虽然稳定性与Linux与Unix服务器有差距,但这个差距正在越来越少。但是微软的admin和linux的admin的成本差距巨大。在管理人员成本上,至少能够省30%。然后,虽然Linux系统免费,但是企业版系统如Redhat还是收费的。当然它还是最便宜的这个我们不说了。对比Unix的IBM服务器和普通x86的windows服务器,其实windows服务器还是便宜的,比AIX服务器便宜巨多。同样的钱,用x86组建服务器场,其实对成本控制以及后期扩展使用的灵活性更高。最后是后期运维,由于Java开源性,一直在更新,每次更新都可能会出现一些问题,同样的问题存在与Linux,这导致后期维护的成本增大。或许你需要经常的技术支持以及技术培训。

所以说,对于企业来说,特别是初创企业,除非你的技术路线是Liunx+PHP,这是目前最低廉的技术路线。但是不适用于中型以上企业。那么.Net平台性价比是最高的。即使你发展快速,5年做到几万人,也能够通过逐步增加服务器扩展的方式,分摊成本。并且总成本绝对不高于JAVA。并且能省下一大笔人力成本。

然后说开发周期。现在的市场,将就时间就是机会就是金钱。同样一个Idea,用.Net平台你可以1个月内上线,Java就可能前后需要2~3个月的时间。当然,如果你需要技术作为宣传的噱头那另说。但总的来说,快速上线,那么.Net是首选。

综合来说,其实.Net真的是适合大多数企业的选择。当然,目前.Net对大数据平台的支撑不是很好,如Hadoop平台,但是其实老外已经发现这些问题,并在逐渐转换支持.Net开发,支持windows平台,未来一定会有所改善。这里笔者建议,对于初创公司,如果没有核心技术(java系)合作伙伴,那么果断走.Net路线吧。


b哈里路亚d

该提问本来就有问题。我以前是主要做.net的,现在搞python居多。但不可否认java的生态要比.net的生态强很多,技术跟工程师的水平有关,基本上与语言无关。

大公司使用java主要是有各种现成成熟的库,框架和架构案例,遇到的坑别人都几乎给你填过了。二是可以部署在稳定的linux服务器上,.net以前也可以通过mongo部署在linux上,但毕竟是非官方支持,遇着问题也不好解决,效率上也得打些折扣,so,我为什么不直接用java,还要这样折腾一翻?虽然现在.net core出到2了,而且是原生支持夸平台,但毕竟java系已经先入为主好久了,.net core能否翻身我不敢评价,因为我并没有多少的使用经验。

当然windows平台的昂贵服务器费用也是一个采用java平台的主要原因。

回到生态系统那问题上,一个系统几乎或多或少地与使用其他的组件,如rabbitmq,redis,mongodb,apache等,这些成熟的组件几乎都系天生linux系的,接口方面从来都是不可能没有java,python而先有.net的。而且在安装支持方面,这些东西都是非常容易安装的,一个apt-get命令就可以了。windows下有可能遇到奇葩的错误。还有就是有大部分这样的组件是java开发的,进行二次开发就肯定用回java了。

小吐槽一下.net后,再来谈谈.net的优势。

再说说.net方面的,大部分人对.net的印象只停留在拖控件上,这些人大部人要么是完全不懂.net的或者只懂个语法的,别人踩时他就跟着踩,瞎起哄。.net最大的优势其实在于单一平台的完整性,微软不仅给.net提供了语言和类库C#和.net framework,在UI框架方面则提供了winform和wpf,工作流方面则有wf,web 框架方面和webform(现在的项目比较少用了,缺点自查),asp.net mvc和asp.net api等。数据库和服务方面则天生偏爱sql server和windows sever了,你要的东西,微软都给齐你了。这样的大统一的好处是,你的学习是一气呵成的,因为你在学习这个框架的东西,其他框架的东西也是十分类似的,无论从方法命名还是类型组件设计上,例如asp.net mvc和asp.net web api这两个东西。

再者不是所有系统都跑着过亿订单,并发量多大多大的啊(看到有些人老拿这个说事,说.net做大型系统不行,我心里就问,你们每次都只做开发这么牛逼的系统?)其实绝大部分的项目都是中小型的项目,还在那里jb地高谈阔论.net这个语言带来性能瓶颈了。能不能反省一下是不是自己水平问题呢?

手打字累不说了。。。。。


IT小技巧

为什么国内的互联网公司都使用的是JAVA呢?

拨开迷雾看本质。

  • 阿里巴巴 1999年成立

  • 腾讯 1998年成立 。

.NET 2002年才发布1.0版本。。你告诉我 他们有的选吗?

有人要提出京东 是从.NET 转的java ?

为什么,因为那个时候 .NET 不开源没有现成的大型电商、分布式、集群的解决方案,而java有大把的电商和互联网人才,注定了会选择JAVA而不是 .NET 。

所以 .NET 错在于它出生的晚了,不支持跨平台。 中国的互联网公司一开始就没有什么选择。


.NET Framework VS Java

甲骨文(Oracle)公司的Java语言和J2ee技术是.NET平台的竞争对手之一。

说起.NET的起源,还得先说到Java。众所周知,Java是一个主打敏捷开发,跨平台的编程语言。而.NET的诞生,与Java有着千丝万缕的联系。

Java的历史可以追溯到20世纪90年代,最初是由Sun公司为了实现电子产品智能化而开发的程序语言,主打的设计思想是敏捷开发和跨平台。1995年Java正式推出之后,立刻受到了包括IBM、Apple、Adobe、HP和微软在内的各大公司的追捧。随后几年Java的发展势如破竹,作为一款收费产品,Java给Sun公司带来了非常可观的盈利(Java已于2006年底宣布免费开源)。而微软作为软件大厂,当然不愿看着Java一家独大,同时也意识到了敏捷开发的巨大前景,由此诞生了Microsoft .NET。

.NET框架作为Visual Studio的组件之一发放,自2002年全新VS .NET搭载.NET 1.0起,.NET至今已更新四个主版本,.NET 4.0于2010年随VS2010发布, 目前最新的 .NET Framework 版本为4.7.1。来源

.NET与Java有非常多的相似之处,二者都是即时编译(JIT)的动态语言。这类语言中,项目编译生成的目标文件并不是机器码,而是需要由运行时环境进行即时编译的特殊代码。在Java中这种特殊代码叫做字节码(bytecode),而.NET中则叫做中间语言(Common Intermediate Language,简称IL)。Java官方的运行时环境叫做JRE(Java Runtime Environment),而.NET官方的运行时环境叫做CLR(Common Language Runtime)。

**而我要吐槽的地方就在这里 ** 经常有很多人唱衰.NET 说BAT都不用 .NET 都是用java的。


角落的白板笔

首先并不觉得.net平台在技术上超过Java,c#和java都是高级语言,各有各的优点和缺点。

其次 .net的限制性太强了,只能部署在windows上,而由于windows系统安全性太差,系统性能也不行,这就是限制了大部分大中型互联网企业弃用.net

一般系统大一点,基本都用linux平台,java跨平台性很好,在linux上也可以在windows上也可以。

另外一般.net系统只适合小型的系统,微软家的这一套不适合分布式、高性能高可用的系统,

大型企业比如淘宝等都用java,还有的用php,但是没听过谁用.net的,貌似只有携程之前用.net,现在也要逐渐转java了。

虽然现在语言种类很多,近些年随着大数据和人工智能的兴起,python也发展很快,但不可否认,目前java仍然是使用最多的。


恭喜大发财呦呦

一种技术的流向,不完全取决于他是否先进,还有其它非技术原因。论技术,论生态链没有人比得过微软。正是微软太强,所以才垄断,专横,才逼出了linux,Java,PHP。

在二十世纪初期,互联网快速发展的时期,微软还沉寝在单机的垄断梦里,微软的服务器非常贵,互联网公司无法承担服务器软件和数据库的费用,才无奈的选择了LINUX,MYSQL,JAVA,PHP。微软的.NET战略全面失败。当大企业都流逝后,开发者自然要流逝。因为JAVA,PHP职位薪水明显高于.NET。


我是大钊

·net主要缺点:

1、跨平台性差,这个有目共睹

2、人少,找人难(做项目的亲身体会)

3、闭源平台,没有形成像Java那么大的生态圈

4、互联网方面的系统、平台用.net的很少,有些企业服务用.net,整体待遇要低。之前京东是.net的,后来也换了

不过用.net做些桌面程序还是不错的选择。


案秀云

有人可能会说盗版用的挺爽也没被查过,那是因为微软查盗版有成本,从你那捞不到钱,大公司肯定是不会用盗版的。


DeveloperPlan

上面那个回答,说java就是因为插件多,程序员低级,所以用的人多,也太扯蛋了。

为啥用java多,就是因为跨平台。服务器,大家都知道吧,有几台服务器用windows的,都是unix或者linux平台,.net能在上面跑吗?这就是问题关键。

行业都是这些服务器,你软件要在这些服务器上跑,你要能能用才行,所以java普及率很高。

但是在硬件平台,还是C或者C++天下,这也是因为C的语言优势在里面。


分享到:


相關文章: