世界上最好的語言是java,不服來戰!😎java
據說啊,在程序員中一直有這樣的一個鄙視鏈:C 語言工程師鄙視 C++ 工程師,C++ 工程師鄙視 Java 和 C# 工程師,Java 工程師和 C# 工程師則互相鄙視,全部的工程師都鄙視PHP工程師。程序員
哈哈,PHP的各位是否是尷了個大尬了😁,沒事,反正「PHP是世界上最好的語言」算法
咱們先來看看這個:編程
不過做爲常年霸榜的java可不是你說想取代就取代的,並且java還有很多猛料,天下第一豈是你能撼動的!😎後端
做爲一名java愛好者,我就很是自信的說,java可不是你想動就動的了的,再說了,java好像也從不害怕被任何一門語言所取代,畢竟人家是「實力派」,可不是那些所謂的「流量小生」數據結構
咱們知道java語言自己有不少的優勢,固然啦,這些優勢可能其餘語言也有,甚至其餘語言還有一些特點是java語言所沒有的,其實啊,java也不在意這些,由於對於java來講,人家除了優秀的語言自己以外,還有很是活躍和龐大的生態,這個是真的猛。併發
說個最直接的例子,你就看吧,培訓機構能夠沒有Android或者其餘,可是必定會有java,那些在線教程網站,必定會有java的課程,並且還偏多,你要是想在網上找個學習資源,你能夠對比一下,java相關的資源是真的多。oracle
因此啊,簡而言之,java人家這猛的一批的生態,不是其餘語言說取代就取代的,因此想學編程的,java必定是個不錯的選擇,另外在學習java的,好好學習吧,前景必須能夠滴!app
固然,科技在進步,社會在發展,不少語言都在不斷的迭代,變得愈來愈猛,不少優秀的功能特性不斷髮布,做爲天下第一的java必須不能落後啊,可能你只知道本身如今還在用JDK7或者8嘞,可人家已經13了,可是,java的猛料可不止這些。jvm
來,跟着慶哥一塊兒漲姿式吧!😂
第一看到,這啥啊,VM不就是虛擬機嗎?那這個?能夠的,你知道了那麼一丟丟!
Graal VM但是個好東西,它是Oracle Labs在2018年4月的時候對外公開的一個黑科技,瞭解了以後,驚呆了,這玩意真猛!
可能有人對Oracle Labs不太瞭解:
Oracle Labs的任務很簡單:識別,探索和轉讓具備極大改善Oracle業務潛力的新技術。
能夠去官網看看:Oracle Labs
給你先截個圖吧,你瞅瞅:
GraalVM是Java虛擬機的新運行時,它爲多種語言(包括Java,JavaScript和Ruby)提供了高性能的執行環境
大眼一看,有點猛(懵😂),咱們都知道java很是經典的一句名言吧:
Write Once,Run Anywhere
學習java的都知道咋回事,java強大的跨平臺特性,就是依賴JVM,也就是java虛擬機來實現的,這句標誌性口號但是1995年java誕生時就提出來的,這是java的一大特色,實現了跨平臺。(公衆號:編碼以外,後續會出java虛擬機系列原創教程,保證通俗易懂)
而這個Graal VM也提出來了一個口號:
Run Programs Faster Anywhere
用我蹩腳的英語給你們翻譯一下就是:以更快的速度運行程序
怎麼樣,有沒有一種和 Write Once,Run Anywhere 惺惺相惜,互相愛護的趕腳😂
若是你學習過java虛擬機的話應該知道,咱們如今廣泛談論的JVM通常是指的HotSpot,爲啥,人家牛,因此流行唄,而這個Graal VM其實就是在HotSpot的基礎上擴展而來的,既然是擴展,那擴展後確定比原來的牛X啊,咱們知道HotSpot只是針對java語言實現跨平臺的虛擬機,也就是專門爲java服務的。
而Graal VM通過一擴展以後可不得了,人家不知足於只服務於java了,人家如今但是要作 全棧虛擬機 啊,啥是全棧知道吧,就是你啥都要會,先後端一塊兒搞😂,因此這幾個全棧虛擬機也就好理解了,人家的目標是要爲絕大部分流行的語言服務,不僅僅是java本身了。
在此以前,咱們知道,像java,Scala,Groovy和Kotlin都是能夠運行在java虛擬機之上的,啥意思,也就是這麼個意思:
你HotSpot只是爲java體系這些語言服務,統一輩子成字節碼文件來運行,可是咱就不一樣,你支持的我支持的更好,你不支持的我也支持,好比像C/C++、JS、Python和R語言等,咱都支持。
想一下,根據java虛擬機的原理,能夠猜測一下Graal VM的基本工做原理,咱們知道不管是java仍是Kotlin都須要通過編譯後生成字節碼文件交給jvm來運行,也就是說對於jvm,它是與字節碼打交道的,因此啊,字節碼文件至關於一箇中間表示,那對於Graal VM是否是也同樣,要想實現對更多的語言的支持,那就須要把這些語言,好比JS,須要把它編譯後的特定格式代碼或者直接源代碼經過一種特定的解釋器轉換成Graal VM能夠認識的中間代碼,就好比jvm中的字節碼文件同樣。
不過在Graal VM中能夠定的是它的中間代碼再也不是字節碼文件了。固然,Graal VM自己就是在HotSpot之上發展而來,因此徹底能夠做爲一個java虛擬機來使用,
那麼,可能有人有疑問了,那做爲java虛擬機來講,有什麼區別呢,他們倆啊,主要的區別就是在即時編譯技術上,另外啊,針對Oracle Labs目前最新的即時編譯技術的研究可都是遷移在Graal VM來進行的哦。
因此啊,Graal VM不可忽視啊,很猛的一個傢伙啊!
看到這個名字就知道這傢伙和上面說的Graal VM有關係啊,是的,這個Graal編譯器就是來自Graal VM,它是從jdk10開始,在HotSpot中加入的一個全新的即時編譯器。
這是幹啥的啊,咱們知道,咱們編寫的應用,有的時候須要長時間有運行,另外,你必定據說過熱點代碼,對於那些須要長時間運行的代碼而言,通過必定的預熱,熱點代碼就會被HotSpot中的探測機(目前知道這麼一回事便可)捕獲到,而後這些熱點代碼就會被編譯成硬件能夠直接執行的機器碼,那麼這樣的應用,他們的效率主要就是看即時編譯器輸出的代碼質量了。
目前啊,對於HotSpot虛擬機來講,它的裏面有兩個主要的即時編譯器,簡稱C1和C2:
那麼這個新的Graal 編譯器天然就要集衆家之長了,Graal 編譯器實際上是用來代替C2編譯器的,Graal 編譯器實際狀況是輸出代碼的質量保持和C2的一致,另外在開發效率和擴展性上都要強於C2,固然,它的編譯時長也獲得了很大優化。
其實C2也很優秀,可是因爲C2時間有點長,代碼真的太複雜了,擴展起來有點難,畢竟沒有完美的,須要不斷的優化迭代,可是過於複雜的C2維護起來着實有點困難,因此必須搞個替代品,這個替代品必須整體設計上和C2接近,而且擴展性強,這樣就能夠把C2優秀的特性給移植過來,除此以外,能夠增長更多優化和新的特性,可是若是想要在原有的C2上進行優化和新增那就有點困難了。
因此Graal 編譯器就來了!值得一說的,Graal 編譯器的效率已經追上了老牌C2,並且有些方面比C2還要強!
不過嘞,Graal 編譯器仍是有點年輕,多以啊,它仍是個實驗狀態,所以要想使用它,須要使用開關激活,也就是須要指定參數來開啓它,否則默認是不會使用Graal 編譯器的。
總的來講啊,Graal 編譯器頗有潛力啊,相信將來必定會做爲主要的即時編譯器來使用,這樣的話就會使用HotSpot和Graal VM更牛X了。
你們好,我是ithuangqing,一路走來積累了很多的學習經驗和方法,並且收集了大量的精品學習資源,如今維護了一個公衆號【編碼以外】,寓意就是在編碼以外也要不停的學習,主要分享java技術相關的原創文章,如今主要在寫數據結構與算法,計算機基礎,線程和併發以及虛擬機這塊的原創,另外針對小白還在連載一套《小白的java自學課》,力求通俗易懂,由淺入深。同時我也是個工具控,常常分享一些高效率的黑科技工具及網站。
對了,公衆號還分享了不少個人學習心得,能夠一塊兒探討探討!
關注公衆號,後臺回覆「慶哥」,2019最新java自學資源立馬送上!更多原創精彩盡在【編碼以外】
感謝各位大大的閱讀🥰