C是王道
C++是正道
erlang是大道
python是歪門邪道
java是無間道
公司網站在用java作了3個版本後,終於選擇要基本廢棄java了。
緣由有如下幾個方面
一、單一堆的內存管理,stop the world的full gc
公司在不少服務層上須要高性能和及時的運算,而且要加載大量的數據到內存中,這些服務都會因full gc帶來錯誤。
二、java打包部署的過程太過痛苦,如今生產環境使用hadson(原來用CC)作CI,每次代碼提交,打包上生產的過程都很麻煩,再加上maven/ivy和ant這類的東西,幾乎得有一個專職的配置管理人員。
三、java程序員是不少,但高水平的就太難找了,熟悉多線程、NIO等特性的更是難尋,對GC,分代管理,回收算法熟悉的更少。
這點上java很適合作外包型的企業應用。找兩個架構師,再找一羣碼工就完成工做。
四、java程序員之間的溝通成本很高,這點在團隊規模大了後尤爲明顯。比之python,ruby,c#都高,並且若是和用其餘語言構建的系統的團隊溝通,彷佛就更難了。
五、java語言自己的發展讓人很不滿意,1.7也就C#2.0->3.0之間的水平。
六、oracle的作法讓人心寒,James Gosling,Doug Lea都離開了,你還留着嗎?
固然還得部分保留java,不然就不是基本放棄了。
一、neo4j:SNS的圖數據庫如今就它能知足要求,只能儘可能精細的控制full gc的發生了
二、hadoop/hbase:hadoop/hbase如今沒有更好的替代方案了,hadoop的full gc到不是什麼大問題,hbase就嚴重的,好在還有MSLAB來緩解一下。
廢掉java後用什麼?下面的部分來逐個分析,大致上會是C++/python/erlang再加部分java,用thrift做爲跨語言調用的規範。
讓每一個技術用在最適合的地方,不要讓語言成爲瓶頸。java