立即注册
 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广州大学城网业务调整

[自我认知] 关于编程语言的博弈 [复制链接] qrcode

查看: 3665 | 回复: 0

广州邓海燕
发表于: 2013-1-17 17:24:39 | 显示全部楼层

     我虽然是个.NET程序员,也略懂Java,但本文我会尽可能的写得中立些,这篇文章是写给我的一位朋友看的,前两天吃饭他问起是否要转Java(以前他们一直是.NET),当时呢我的观点并不中立,我说了很多.NET的好话(当然我是摆了不少事实的,我朋友也不是这么好忽悠的),但技术人员应该拿数据说话不是吗?其实这个话题是个非常老的话题,很多技术中层也回答过类似的问题,可能这些问题来自从高层、朋友或者网络,但我并没有看到过一篇很中肯的帖子来分析这个问题,于是我斗胆决定给大家开个头。
    首先,引用一份Forrester Research公司的数据(虽然数据比较早),在2004年,Java在生产工具、电信、金融和保险领域比.NET强,而.NET在制造、零售批发、媒体、商业服务和公共服务领域比Java强。报告指出那些在IT方面有高预算的公司更倾向于使用Java,而相对预算较少的则更倾向于使用.NET。但很有意思的一件事情是超过半数的受访公司同时使用.NET和Java,要知道2004年的时候.net 2.0刚出来,就已经有这么多公司同时用两样了,我觉得现在的情况也没有明显变化,比如我现在的公司就是两样都用,当然一个团队通常只用一样,只是不同的团队可能会用不同的语言。
    接着来说说跨平台。说到跨平台很多人可能想都不想就说,那肯定应该选Java,我一开始也是这么想的。其实时代在进步,.NET的跨平台能力正在不断增强,最有代表性的自然是Mono开源项目,相应的开发工具MonoDevelop也做的很出色。当然Mono的使用是存在局限性的,很多Windows固有的特性是没有办法使用的,例如COM, Win32 API等,但同时Mono提供很多上层封装,能够帮助我们忽略平台差异。
    接着是性能比较。说实话如果我在这里给任何一方的语言下一个结论,估计双方的技术人员都要跳起来。性能这个问题在两种语言之间是很难进行比较的,理由很简单,因为平台不同、硬件不同、安装的软件也不同、使用的库也不同,太多的不确定因素导致无法在完全平等的条件下比较单个项目的性能。也许某个性能问题并非语言本身造成的,而是库函数造成的,这都是有可能的。我参考了一些评论认为,.NET程序的启动速度快于Java程序,这应该是有目共睹的,看看Ecllipse和VS的启动速度大家就明白了(虽然VS2010启动速度确实坑爹了点,还好VS2012打了个漂亮的翻身仗)。我个人感觉Java程序的运行速度确实不快,其实你看看很多大公司怎么玩Java的就知道了,他们拿Java做壳,内部全部用C++写,比如Oracle、IBM,要知道Java和C++的组合可是非常有名的。不过么回过头来想想微软也是如此,.NET主要做周边的应用,Windows核心还是C/C++的,不过最近几年微软也开始用.NET做很核心的东西,比如Visual Studio2010和2012就是用WPF 4.0写的。不过这个问题,没有结论,大家自己看着办吧,遇到这种没有标准的问题,适当忽悠也是必要的,其实能反驳.NET或Java性能不好的案例都很多,具体看场景。拿我的亲身经历来说,.NET的XML库的性能真的不是一般的差,相对来说Java的XmlBean更胜一筹。
    再接下来,我们来看一下扩展性。这两种平台扩展性都很好,上层封装都支持最新的SOAP协议和Web service,自身还有自己的通讯协议,如Remoting和RMI。这恐怕是少数几个大家都能达成共识的观点,即Java和.NET扩展性都很好。双方阵营都有优秀的架构师们坐镇,确保了开发人员能够从架构层面对语言和平台进行扩展。只可惜国内现在.NET阵营的架构师不太给力,导致很多决策层放弃选择.NET(各位国内的.NET架构师听了不要不开心哦,我只是说事实,没有别的意思)。国外其实.NET和Java各分秋色吧,因为就语言本身的扩展性而言实在找不出有什么明显限制,关键还是看用它来干什么,还有就是架构怎么搭建。
    最后,从职位上说,各大热门求职网站 的 .Net+C#岗位 略多于 java岗位,这个也是最近两年发生的逆转;大家也不要再纠结win8是否会火,win8最大的缺点在于新界面不是每个人都喜欢,其内核、执行效率、安全性、跨终端等等一系列系统级优势都有大幅度提升。

跳转到指定楼层
快速回复 返回顶部 返回列表