天天看點

Java這些冷知識你知道嗎?

1)jvm有很多種,其實jvm是一個标準,sun做的那個叫hotspot,作者就是後來v8的作者lars bak,其他公司也做過jvm,其中做得比較好的有bea的jrockit,其他的包括ibm的r9,apple的jvm等在内,都做得不行,是以jvm主要是整合淘汰掉這些做得不好的jvm(s),整合成一個統一的openjdk。

2)java是典型的oop語言,其執行效率的優化,最早就是lars bak等人從smalltalk等長期優化的經驗中總結出來并apply到hotspot上去滴,而smalltalk在早期apple機上搞出了那種拖拖拽拽就開發出app的做法,後來vc,delphi之類的其實都是抄襲或者說借鑒apple的smalltalk的做法,jobs說微軟從頭到尾都在抄襲apple是空穴來風,這裡空穴來風跟王垠使用的空穴來風是一個意思,有趣的是,java的gui并沒有繼承這種搞法,反而對這種拖拖拽拽就作出app的做法批判有加,到今天,其實java的gui都還不能真正做到拖拖拽拽就作出來,問題很多,個人建議對于純java的gui開發,還是以寫代碼為主。

3)jee也是一個或者說是一堆标準,知乎上有些人把maven,jenkins都算做jee是不對滴,jee的标準核心是ejb,其實就是一個xml配置化的java檔案,這個标準在4的時候,達到了頂峰狀态,幾乎所有的挨踢大廠都主動支援該标準,之後開始走下坡路,支援的廠越來越少。

4)java和javascript的關系比很多人認為的要密切,javascript裡面的java這四個字母可不是白叫的,比如js的版權和商标都控制在oracle手裡,oracle對于js的支援甚至超過其對java的支援,并且喜歡捆綁銷售,比如jvm裡面就有一個js引擎。

5)jvm裡面除了js engine以外還有一個浏覽器排版引擎webkit,就是apple safari和google chrome用的那個那個。

6)java支援絕大多數腳本語言,你能叫得上名字的腳本語言,幾乎都可以在jvm上執行,比如常見的js,ruby,python,甚至php,lua,隻不過除了js以外你需要找到相關的腳本引擎。

7)spring的版權被控制在vmware手裡,其實spring的那一大堆東西,本質上是一個非标準的jee實作,比如在jee裡面用的inject,在spring裡面就是autowire,當然spring曾經深刻滴影響了jee,是以有些東西比如di标準,是spring影響下制定出來的,是以spring的做法會比較特例一點。

8)maven上的jars數量前兩天突破800萬,其他語言的類庫,排名第二的是npm,大概數量是maven的十分之一,也就是幾十萬,不知道現在突破100萬沒有,然後是gem,也就是ruby那個,大概是十幾萬,下來是python的module,大概數量級是幾萬,沒突破十萬。

9)java的标準是由一個叫做jcp的組織制定的,所有标準需要經過jcp的執行委員會通過方可執行,jcp幾乎包括了你所知道的絕大多數知名挨踢公司群組織,比如google,apple,ibm,intel,arm,red hat,twitter等,還有一些教育機構,比如我國的北京大學,阿裡最近一次申請jcp執行委員會成員資格,似乎投票不通過,最近一次執行委員會新增兩個成員是arm和jetbrains。

10)微軟也曾經是jcp甚至是java的主要貢獻者,但是利益驅使下,想擴充java,進而破壞java跨平台的特性,是以跟sun鬧翻,其本質原因就是想讓客戶寫的java代碼跟windows綁定,sun堅決不同意,鬧翻,今天回頭看這個結果,隻能說:雙輸,sun挂了,微軟的ria也離挂不太遠了,silverlight已經放棄了,比起當年ie自帶有jvm的支援來說,那完全就是兩回事。

11)除了微軟以外,jcp還缺少一個重要組織apache,因為apache跟oracle也鬧翻了,oracle似乎并不在乎開源組織,而更在意商業公司的支援。

12)java曾經有一個内置的資料庫,9之後被剝離。

13)j2me是j2se的子集。

14)vert.x作者tim fox最早在vmware做spring時候看到了node.js,萌生出了制作支援多核的node.x的想法,并在離開vmware後加入red hat将其實作,vmware看到後開始耍無賴,claim node.x後來改叫vert.x的版權,不惜跟red hat打官司,後來各方妥協,将其交給eclipse foundation。

15)oracle在收購bea之前,一開始的目标并不是bea和bea的weblogic,而是jboss,但是jboss表現出了極為有種的一面,在oracle收購成功之前,投入了red hat的懷抱,因為都是開源組織,從此jboss成了red hat的一個子部門,oracle收購jboss失敗之後,轉向bea,莊思浩氣死了,但是沒用,最後還是被惡意收購。

16)sun在玩不下去之前最早嘗試接觸的目标是ibm,ibm嫌太貴,放棄之後,被轉手給了oracle。(Java學習交流QQ群:589809992 我們一起學Java!)

17)vert.x的作者tim fox在離開red hat之前曾經發過twitter抱怨,外人比如我們,猜測是因為red hat内部已經有了一個jboss,是以跟vert.x在應用上有了重疊,是以導緻tim fox的出走,但是出走之後,red hat答應對vert.x做持續性的戰略投入,是以vert.x core的幾個developers,其實拿的是red hat的工資,但是vert.x的版權并不在red hat手裡,而在eclipse foundation手裡。

18)vert.x的幾個核心開發人員都是google summer of code的導師,每年年初時候會招收在校大學生搞項目。

19)教育機構相關:scala的作者馬丁是德國人,eth的博導,groovy的主要上司人是法國人,jruby背後是東京大學,jboss的作者是法國大學校x的校友,x就是伽羅瓦考不進去的那所大學,伽羅瓦進不了x,是以改讀巴黎高師,tim fox畢業于帝國理工,主席去的那個,netty作者trustin lee是acm銀牌,現在line工作,畢業于sky裡面的延世大學,kotlin是毛子公司jetbrains的作品,看linkedin,很多人畢業自聖彼得堡大學,spring作者rod johnson是悉尼大學的音樂博士,hibernate作者gavin king是澳洲莫那什大學的數學大學畢業生,james gosling這種cmu和calgory的估計爛大街了,sun是斯坦福大學網絡的意思,夾帶兩個私貨,aspectj有一個維護小組在mcgill,hbase跟waterloo關系密切。

20)java早期被人認為慢,跟java堅持不用硬體加速渲染有關,死活就是不肯接入directx和opengl,7之後總算開竅,搞了一個圖形引擎接入了directx/opengl。

21)casssandra是facebook做失敗的項目,被貢獻給了apache之後老樹開花。

22)groovy被貢獻給了apache,現在叫做apache groovy,ceylon被貢獻給了eclipse,現在叫做eclipse ceylon。

23)netflix現在是java shop,之前是用.net的。

先想到這麼多,有空再寫。

我有一個微信公衆号,經常會分享一些Java技術相關的幹貨。如果你喜歡我的分享,可以用微信搜尋“Java團長”或者“javatuanzhang”關注。