转自 http://www.zhihu.com/question/25908953/answer/32119971

因为这是一个商业问题,不是技术问题。

我在面试时探讨过这个问题,对方创业期,问我如果有需要的话我能不能从.NET转Java或者PHP。我说,客观地跟你说,要选择哪个平台,是个商业问题,不是技术问题。

决定技术选型的,抛去逗比领导二产品那不知道那里来的“Java比.NET好,Linux比Windows强”的技术信仰,是个商业问题,三点:反应速度、实施成本、技术梯队。

1. 反应速度

商场无大不破,唯快不破。技术基本都是新兴市场,谁吃第一口蛋糕谁就是大哥,无谓技术好坏。你们还记得大明湖畔的IE6,还有它的好基友Flash吗?还有OpenSSL呢?
在做企业站,Java和.NET都是渣渣,1块钱5000套淘宝模板的PHP才是王道呢。如果是一些企业开发,成型的Java生态系统可谓比.NET多不少参照物。就像SSH说到底不过是MVC、IoC、ORM,大家都有这些东西,只是Java的成型产品更多,复制黏贴就能解决很多问题。
不过在这个时代,个性化的开发更加有开发市场,拼的就是框架能力、资源量、开发工具,Java并不比.NET具有明显优势。至少从创业公司或者传统公司转互联网的这个市场里,个人见到.NET比Java多。

2. 实施成本

很多人有开源崇拜,我倒觉得这里混杂了很多圣母病和共产病,得治。
事实基本上是人力和正版化。许多影响成本判断的就是对工具功能的忽视,这在中国是严重现象,说到底能是软件工程管理能力太低,没办法把投资变现。一套宇宙第一IDE才多少钱,一条内存条才多少钱,但对码农的攻击力加成有多少管理人员能变现?你花钱买IOE不就是因为花钱能解决问题么?
其实关乎.NET来说通常是Windows Server和Linux、IDE、SQL Server和MySQL的问题。在这个泡沫时代,能Build Linux优化MySQL的有几个?微软的那套东西又已经进步了多少了?没理由做技术的不相信科技的生产力吧?
实施成本在后期会放大化,在服务集群的时候。IOE不说,Windows Server确实贵,不过这个成本差异在多少台服务器的时候会体现有多少人真的算过?
在这里不得不补充一句,Mono确实是.NET的希望,虽然不一定是微软的希望。

3. 技术梯队

在IT届,牛人和渣渣是类似的。牛人要换平台,成本很低,渣渣也是。在牛人和渣渣中间的这批人,就是广大的中产,也是IT届主要“纳税人”。但稀缺领域渣渣会被当牛人用。
人脑的进步是有限的,再牛的牛人都砸不过钞票,当产品发展,你需要在合适的时候请到合适的人。在你就缺个敲代码的时候招个能敲代码的,在你到花钱请人帮你搞定的时候你要请到人。
这个时候你就要考虑人才市场的情况了。Java那么老了,加上Android带起的风,人才琳琅满目,给得起钱就有人来。.NET由于Windows不年轻,人才市场分布情况也十分乐观,只是少那种互联网式的贵价人才。如果你做两年Python、PHP、前端、iOS、Android能拿15k~25k,作为一个应届生对.NET竖中指也是很正常的。这不代表做企业开发的人弱,我想中国人都应该知道“如果当初买了房”的故事。
只是企业必须考虑人才市场对技术梯队的影响,这个领域现在花钱能不能请到我要请的人,将来花钱又能不能请得到。因为最可悲的是有钱花不出,然后渣渣当牛人用。作为企业是觉得Android拉高了Java价格而倾向.NET,还是打算未来等移动互联网泡沫破灭抄底,这是企业实际的考虑情况了。
去年的薪酬调查如果数据真实,那么反应的情况还是非常明显的:

Java狗确实比.NET狗多。你可以认为吹嘘Java的比吹嘘.NET的人多1.5倍,拍马屁的Java狗比拍马屁的.NET狗多1.5倍,需要自信的Java狗比需要自信的.NET狗多1.5倍,Java在二货领导耳边出现的次数比.NET高1.5倍......这个世界上还有人相信PHP是世界上最好的语言呢。

以上不过是客观情况的考虑问题,因为我们对理性抱有太天真的想法了,特别是技术领域。你永远应该高估犯二的产品、领导、老员工所能产生的巨大AT力场。你以为他们的所有理由都需要理由?

(转)为什么大公司青睐Java的更多相关文章

  1. 大公司的Java面试题集

    找工作要面试,有面试就有对付面试的办法.以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM, E*Trade, Siebel, Motorola, SUN, 以及其它大小公司. 面试 ...

  2. 大公司最喜欢问的Java集合类面试题

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

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

     分类: 核心JAVA(11)  版权声明:本文为博主原创文章,未经博主允许不得转载. 看了一些所谓大公司的Java面试问题,发现对于JAVA集合类的使用都比较看重似的,而自己在这方面还真的是所真甚少 ...

  4. 大公司c#&.net转型java的原因有哪些?

    历来就听说有编程语言“鄙视链”的说法,而如今月经贴上的那些事儿,还真让我给遇到了. 以下内容来自知乎,纯属扯淡,易引发口水战,看完勿人身攻击. 目的给盲目的公司决策者.开发人员科普下,有个客观清醒的认 ...

  5. Java面试题 BAT 大公司面试题整理总结!

    本文只列出了问题,答案还是需要需要自己的总结,很多时候自己总结出来的语言在面试时比硬背的效果好很多. 这些题目是网友去百度.小米.乐视.美团.58.猎豹.360.新浪.搜狐等一线互联网公司面试被问到的 ...

  6. [转载] JAVA面试题和项目面试核心要点精华总结(想进大公司必看)

    JAVA面试题和项目面试核心要点精华总结(想进大公司必看) JAVA面试题和项目面试核心要点精华总结(想进大公司必看)

  7. 各大公司java后端开发面试题

    各大公司Java后端开发面试题总结 ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量.采用空间换时间,它用于线程间的数据隔离 ...

  8. 大公司面试经典数据结构与算法题C#/Java解答

    几个大公司(IBM.MicroSoft and so on)面试经典数据结构与算法题C#解答 1.链表反转 我想到了两种比较简单的方法 第一种是需要开一个新的链表,将原链表的元素从后到前的插入到新链表 ...

  9. 大公司的PHP面试题

    1. 禁用COOKIE 后 SEESION 还能用吗? 2. 抓取远程图片到本地,你会用什么函数? 4. 你觉得在pV10W的时候, 同等配置下,LUNIX 比WIN快多少? 5. 简述pOST 和G ...

随机推荐

  1. Android 学习笔记之Volley(七)实现Json数据加载和解析...

    学习内容: 1.使用Volley实现异步加载Json数据...   Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ...

  2. python内置模块(3)

    博主所有python文章均为python3.5.1环境. 目录: 1.collections 2.subprocess 3.configparser 4.XML 5.shutil 一. collect ...

  3. Rest(Restful)风格的Web API跟RPC风格的SOAP WebService--这些名词都啥意思?

    经常看到这些词汇,也有baidu或google过,但记忆里总是模糊,不确定,以至于别人问及的时候,总说不清楚.开篇随笔记录下.大家有补充或者意见的尽请留文. 本文顺序: 一.Rest(Restful) ...

  4. mysql: you can't specify target table 问题解决

    首先创建一个表: CREATE TABLE `t1` ( `id` ) NULL DEFAULT NULL, `name` ) NULL DEFAULT NULL ) 插入几条数据: mysql> ...

  5. 领域驱动设计(DDD)实现之路

    2004年,当Eric Evans的那本<领域驱动设计——软件核心复杂性应对之道>(后文简称<领域驱动设计>)出版时,我还在念高中,接触到领域驱动设计(DDD)已经是8年后的事 ...

  6. SQL 批量字符串替换

    --在SQL SERVER中批量替换字符串的方法 update table[表名] set Fields[字段名]=replace(Fields[字段名],'被替换原内容','要替换成的内容') up ...

  7. .net中清理内存,清理占用内存方式方法

    #region 内存回收 [DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize") ...

  8. UGUI之Toggle使用

    Toggle对象是一个开关.一般用于单选,可以用Toggle制作背包的选项卡 在场景中创建Toggle按钮.看看他有Toggle组件

  9. hibernate映射文件one-to-one

    one-to-one 元素 属性: name:映射类属性的名字 class:映射的目标类 cascade:设置操作中的级联策略 可选值为 all所有操作情况均进行级联.none所有操作情况均不进行级联 ...

  10. 使用PowerQuery操作OData数据

             Excel是我们耳熟的办公软件.PowerQuery是一个允许连接多种数据源的Excel插件.它能从一个网页上智能查询数据.使用PowerQuery能合并数据集使用join,merg ...