C是王道
C++是正道
erlang是大道
python是歪门邪道
java是无间道
公司网站在用java做了3个版本后,终于选择要基本废弃java了。
原因有以下几个方面
1、单一堆的内存管理,stop the world的full gc
公司在很多服务层上需要高性能和及时的运算,并且要加载大量的数据到内存中,这些服务都会因full gc带来错误。
2、java打包部署的过程太过痛苦,现在生产环境使用hadson(原来用CC)做CI,每次代码提交,打包上生产的过程都很麻烦,再加上maven/ivy和ant这类的东西,几乎得有一个专职的配置管理人员。
3、java程序员是很多,但高水平的就太难找了,熟悉多线程、NIO等特性的更是难寻,对GC,分代管理,回收算法熟悉的更少。
这点上java很适合做外包型的企业应用。找两个架构师,再找一群码工就完成工作。
4、java程序员之间的沟通成本很高,这点在团队规模大了后尤其明显。比之python,ruby,c#都高,而且如果和用其他语言构建的系统的团队沟通,似乎就更难了。
5、java语言本身的发展让人很不满意,1.7也就C#2.0->3.0之间的水平。
6、oracle的做法让人心寒,James Gosling,Doug Lea都离开了,你还留着吗?
当然还得部分保留java,否则就不是基本放弃了。
1、neo4j:SNS的图数据库现在就它能满足要求,只能尽量精细的控制full gc的发生了
2、hadoop/hbase:hadoop/hbase现在没有更好的替代方案了,hadoop的full gc到不是什么大问题,hbase就严重的,好在还有MSLAB来缓解一下。
废掉java后用什么?下面的部分来逐个分析,大体上会是C++/python/erlang再加部分java,用thrift作为跨语言调用的规范。
让每个技术用在最适合的地方,不要让语言成为瓶颈。