近日網絡上出現了一些關於Oracle將要放棄Java EE的說法,在Java行業引發不小的關注,甚至有些人開始擔憂Java會不會就此消亡,但事實上這不過是杞人憂天,《瘋狂Java講義》圖書李剛根據多年來Java行業的從業經驗,對此提出如下幾點分析拋磚引玉,供廣大Java從業者參考。編程
自從Java發展壯大以來,不管是之前的Sun公司,仍是後來Oracle公司,一直都無力左右Java的發展:實際上Java的規範制定,都須要經過JCP審覈,一些新機制、新功能每每並非Oracle想加就加的,Java是一個龐大的生態圈,由龐大的社區力量在推進Java的發展。安全
Java自己有太多的規範都是來自社區的。世界上大量開源組織和公司,爲Java貢獻了很是多的專利和代碼,每次JavaOne大會都是全世界Java界的聖會,匯聚一堂討論、決定Java的走向和發展。網絡
Java世界,能夠說正左右着全球的發展,全球全部頂級的、核心的項目,絕大部分都是基於Java作的,即便不是徹底基於Java,也和Java有千絲萬縷的關係。深刻最深的是美國。美國軍方絕大部分的控制系統、甚至航天控制系統,都是基於Java或者和Java相關的。併發
除此以外,包括世界上全部的銀行、通信、航空、電力、交通、公共安全等領域的核心繫統,也都是基於Java的,若是徹底放棄Java,等同於把世界上全部的這些應用系統所有要替換掉,哪一個公司、哪一個團體有這個能力?若是這些系統所有不能運行,人類社會等同於重回到傳統時代!框架
若是放棄Java,你不能從銀行取錢、不能在線買飛機票、火車票、不能在線購買商品、不能刷公交卡、不能打電話……甚至連你的×××信息都不復存在!編程語言
有人說:Java不賺錢,由於Java規範是開放的,因此Oracle纔想要放棄。但若是真的不賺錢,那麼Oracle爲什麼要和谷歌由於Java的專利而打官司呢?ide
先說如今正在和Oracle打官司的谷歌,正是由於Java的各類專利糾紛,若是Oracle真的願意放棄Java,那麼谷歌將首先表示歡迎、並不是常樂意繼續領導Java的發展。工具
即便谷歌不想要Java,光是國內的那些巨頭,個個都想要Java,以便對本身的產品進行更深度的定製,如今由於要定製本身的產品。此外,能肩負扛起Java大旗的風光,國內軟件巨頭都不差錢,他們絕對很是樂意去作這件事情。不過話說回來,美國政府應該不會容許Java主導權落入中國,因此這一點咱們只能是空想。oop
Java剛開始的時候,由於各類應用和生態不成熟,不少東西須要有人牽頭制定強制規範引導Java的發展,因而Java EE曾經引領了企業級應用的開發。spa
但隨着時代的進步,以及愈來愈多的公司和組織參與到Java世界,出現了各類各樣的Java EE組件的代替者,好比Hibernate、Spring就是其中兩個典型。相反,Java官方制定的各類Java EE規範反而不太受歡迎,他們制定了JSF規範,但實際企業開發喜歡用Struts 2、Spring MVC;他們制定了EJB規範,但實際企業開發每每仍是喜歡用Spring;他們制定了JPA規範,但實際企業開發每每仍是喜歡直接用Hibernate、MyBatis。
現代企業級應用經常使用的各類框架和工具,好比Struts 2、Spring、Hibernate、jBPM、Activiti、Lucene、Hadoop、Drools、CXF等這些你們耳熟能詳的組件,所有都不是來自Oracle官方,可是卻在企業應用中開發常常用到的。
如今企業裏面,真正經常使用的Java EE規範有什麼?Servlet、JSP、JMS、JNDI。這些技術都只是充當了一個程序的入口而已。
Oracle之因此可能考慮放棄Java EE,正體現了Oracle對喪失Java控制權的無奈。企業的本質是逐利,Oracle每一年爲制定Java EE規範投入很多人力、財力,但制定的規範最終並無得到市場的青睞,因此Oracle可能放棄這種吃虧不討好的事情。
但Java不一樣,2016年6月,Java在商業語言排行榜上的市場份額將近21%,龐大到恐怖的市場份額,背後隱藏着巨大各類專利使用費和盈利商機,任何一個理智的公司都不會放棄這個會下金蛋的母雞。
C語言是一個誕生於上個世紀70年代的編程語言,在AT&T的貝爾實驗室裏面,由一個想玩遊戲的老夥伴整出來的。
後來隨着社區力量的介入,C造成了國際標準,參與其中的廠商、開發者不可勝數。貝爾實驗室早已不復存在,連AT&T也早已解體,但C語言依然堅挺,偶爾還跑到Java的前面,排名第一!
C發展到如今,已經造成了整個軟件、硬件產業上下級紐帶,絕大部分硬件設備的固件、驅動程序都是C語言寫的。我所知道的操做系統的內核,也都是基於C語言。若是換掉C語言,如今電腦會變成裸機,可能還不如一堆廢鐵。
Java如今的情形,和C很是類似:Java已經深刻到世界的骨髓。正如前文指出的:從美國的航空航天、軍方控制系統,到平常生活的銀行、通信、電力、交通、公共安全等領域的核心繫統,絕大部分都是基於Java開發。正如世界沒法淘汰C同樣,世界也沒法淘汰Java。
常常有人會問我,Java是最好的編程語言嗎?我會告訴他:應該不是。我知道的不少語言,若是僅就語言功能來講確實優於Java,就好比日趨沒落的C#,因爲不少特性都模仿了Java,有在某些方面作出了改進,所以語言特性要優於Java;再好比Apple新推出的Swift,編寫起來簡潔、優雅……然而並無什麼用,它們都無力、也不可能取代Java。就像世界上比C優秀的語言多如牛毛,但C依然、也將一直堅挺。
Java可能不是最好的語言,但Java必定是最成熟的總體解決方案。舉幾個業內公開事實:taobao最初使用了PHP,發展、壯大起來不得不所有換成Java實現;京東最初使用了dot Net實現,發展起來以後整個後臺不得不換成Java實現;小米服務端的消息系統最初使用Erlang開發,當時消息推送系統的初版是基於Erlang的,隨着小米用戶數量的增加,後來開發團隊不得不選擇使用Java從新開發……還有無數中小型的企業「迷途知返」的案例,我就不想一一列舉了。從這些事實能夠發現,對於一個併發量小、穩定性要求不高的系統來講,可供選擇的方案看似不少:PHP、dot Net、Erlang……,但公司發展壯大以後,最成熟的解決方案卻只能是Java。
Java的成熟並不是體如今Java語言特性多麼簡介、優雅,而是來自它龐大的社區和開發者,以及各類各樣框架、類庫和工具。軟件行業的各類新理論,新方法,幾乎最早都是用Java實現的。選擇Java做爲企業級應用的解決方案,能夠避免地「重複造輪子」,不少開發中面臨的棘手難題,每每都有開源的解決方案;幾乎全部行業,都有很是成熟的Java應用案例,可供後來的開發者做爲參考。選擇Java,並非簡單地選擇了一門語言,而是選擇了一個成熟、穩定的解決方案。
Java的成熟更體如今包容氣度上,有人說Java語法臃腫、更喜歡Ruby,OK,那就JRuby吧;有人說我喜歡Python,OK,那就Groovy、Jython吧;有人說我喜歡Lisp,OK,那就Clojure吧……各類語言的開發者均可在JVM上大展拳腳,Java以海納百川的方式包容、融匯着各類語言的特性,最終成就了Java的「夫惟不爭,故天下莫能與之爭」。