您好,登錄后才能下訂單哦!
近日網絡上出現了一些關于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的專利而打官司呢?
先說現在正在和Oracle打官司的谷歌,正是因為Java的各種專利糾紛,如果Oracle真的愿意放棄Java,那么谷歌將首先表示歡迎、并非常樂意繼續領導Java的發展。
即使谷歌不想要Java,光是國內的那些巨頭,個個都想要Java,以便對自己的產品進行更深度的定制,現在因為要定制自己的產品。此外,能肩負扛起Java大旗的風光,國內軟件巨頭都不差錢,他們絕對非常樂意去做這件事情。不過話說回來,美國政府應該不會允許Java主導權落入中國,所以這一點我們只能是空想。
Java剛開始的時候,因為各種應用和生態不成熟,很多東西需要有人牽頭制定強制規范引導Java的發展,于是Java EE曾經引領了企業級應用的開發。
但隨著時代的進步,以及越來越多的公司和組織參與到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的“夫唯不爭,故天下莫能與之爭”。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。