-
1 # 技術開發進階
-
2 # 加油闖關
要了解,不必過早了解,畢竟最佳化虛擬機器的場景太少了,大多數加硬體,要再不行改現在流行的分散式就搞定了,誰還花力氣最佳化。不過面試會考,也就應付面試吧。
-
3 # Java武學秘籍
目前的情況遠遠沒到過時的程度!
如果是從事Java開發,我覺得早點深入理解Java虛擬機器一定是正確的選擇,這種核心基礎的功力如果修煉的好,一定會對工作甚至職業有很大的幫助!!
-
4 # 我樂自我高
可以負責任的講,目前沒有過時,未來短期內也不會過時。《深入理解Java虛擬機器》是否過時,首先取決於 Java 語言本身是否過時了。目前Java在絕大多數領域佔有不可忽視的地位。在語言排行榜中,也是長期居於前列。java 本身的可移植性,使得很多伺服器以及web後端開發都青睞有加,而其自身語言的特性,以及豐富的庫,更讓他在眾多語言中經久不衰。而作為Java開發中至關重要的虛擬機器,開發者能夠多大程度上深入理解它的機制,也是區別優秀的Java開發者和普通開發者的標杆之一。所以作為Java的開發者,如果想在技術上有更深入的發展,虛擬機器機制是必須要過的一道坎。而《深入理解Java虛擬機器》這本書是相對比較經典的介紹該方面知識的書籍,還是值得推薦的。
-
5 # 使用者97834075436
其實這個問題需要客觀地看待,我認為只要java虛擬機器不過時,《深入理解java虛擬機器》這本書就不會過時。跑在JVM上的程式語言不止java一種,JPython,JRuby,Groovy等語言都跑在java虛擬機器上,存在即合理,只要這些程式語言有人用,java虛擬機器就不會過時。很多C和C++的程式設計師吐槽java虛擬機器的GC機制導致跑在JVM上的程式語言寫出來的程式效能差,執行慢的缺點。這點我不予否定,GC在垃圾回收時的確會有較長的停頓時間,但是事物總是具有兩面性的,需要客觀看待,C追求效能,那麼就得犧牲可移植性。而java正是在極致效能和跨平臺性兩者的權衡下選擇了後者,而恰恰java虛擬機器正是java跨平臺的核心所在,況且,JVM也是隨著技術的發展不斷演進的,從CMS,G1再到java11目前還在試驗階段的ZGC,java虛擬機器的GC停頓時間也在變得越來越短,官方給出的ZGC的停頓時間不超過10ms,我們在做效能測試的時候ZGC的停頓時間遠遠到不了10ms,大多數情況下都在一兩毫秒之內,況且10ms的停頓對大多數的程式的效能影響都是微乎其微的,相比於以前四五百毫秒的停頓時間,即使是10ms的停頓也算是幾何級的突破了,相信未來的JVM效能還會不斷地提升的,所以,在未來的很長一段內,java虛擬機器不但不會過時的,反而會更加流行。再說《深入理解java虛擬機器》這本書,自出版以來,一直被業界奉為經典之作,也是程式設計師瞭解JVM必看的著作,雖然這本書是基於JavaSE7的規範,但是這並不妨礙我們學習JVM.一般底層的核心內容變化的幅度不是很大的。雖然這本書講到的CMS垃圾收集器目前已放棄維護,官方重點維護G1和ZGC,但是關於原理和思想的東西是永遠都不會變的,之所以長期起來被奉為經典,就是因為有其借鑑的價值。所以《深入理解java虛擬機器》在未來很長一段時間是不會過時的。
-
6 # 紙飛機技術拆解局
本不想來回答這個問題,但看到下面那個Java高階架構獅,只是直接放出了java虛擬機器的記憶體結構圖,覺得還是有必要來說下這個問題的。
先談是不是過時的問題。
《深入理解Java虛擬機器》所針對的是JDK版本和變更現在我們在國內可以讀到的《深入理解Java虛擬機器》應該是它的第2版吧,我沒有去查過,有沒有更新的版本,大致長這樣
它所針對的,主要是JDK7的規範,那麼,從JDK7到現在的JDK 12正式釋出,應該說JDK已經在各方面,都發生了很大的變化。
考慮到目前在整個業界,甚至連JDK8的規範,其實還普及未久,那麼,簡單的就以JDK7和JDK8下,關於PermGen空間的事情,來做個例子。
在《深入理解Java虛擬機器》的2.4.3中,談到了執行時常量池的溢位,其中給出了一個說明,即:
但估計你照此去理解JDK8及其以後的虛擬機器,恐怕要抓瞎,因為,從JDK8開始,已經沒有PermGen空間了,取而代之的是Metaspace。
當然,這不是什麼大的問題,但也說明實際上,這麼多年,JDK也在與時俱進的發展著,所以:
如果你沒有很深的對JDK當前特性的認識,那麼,可能會在一些方面,走入到知識的誤區——不是因為它說的不對,而是它已經過時了考慮到大部分人,是要從事實際的開發工作,而不是考古工作,因此花很多時間,學習一箇舊的知識結構,恐怕並不非常高效。
那麼,這本書能不能讀呢?
答案是:能原因無他,不是因為它不過時,而是因為:
暫無特別好的替代品,它算是所有講類似這一主題的Java書籍中,針對版本最新的一本你可以說是一種無奈,但也折射出另一種現實,就是其實這是一個非常小眾的市場,說白了,其實願意深入學習和研究這個方面的人,是不多的。
我不清楚提問者的背景,但如果你要問我,是不是推薦學習Java語言和其下應用開發的人,去閱讀下《深入理解Java虛擬機器》,那麼,我的答案,則恐怕會是:
不推薦大家讀原因無他,因為關於構建一個虛擬機器的基本的理論,其實在整個Java的世界中,可能沒有你想象的那麼重要,而在實際的工作中:
工程師的思維,很大機率不是從理論,到實踐當我們寫下:
時,這個東西,放在棧中,還是堆中,會怎樣去影響最後的垃圾回收,其實我們不care,很多時候,即便寫出來了非常規範的程式碼,恐怕也並非因為我們已經深入的瞭解了垃圾機制背後的原理,而純粹是一種經驗習得。
而類似的原始碼級別的深入(這本書還不是),如果有人想寫,可以寫無數,比如可以有:深入理解
.Net
虛擬機器,深入理解Nginx原始碼,......我覺得,它們統統可以歸入一類:聽起來虛張,讀起來吃力,讀完了,好像就是讀完了,僅此而已不是說它們不重要,而是對於你的工作來說,可能用不著,而人這玩意兒,竟然有遺忘曲線這樣的大Bug存在。
如果你真的想了解這方面的東西,我到推薦另外的一本書,滿滿的工程師風格:
《自己動手寫Java虛擬機器》:一本用GO實現Java虛擬機器的實操書最後,真心要抨擊一下現在有的公司的招聘:
你就是要招一個Java語言的開發崗,但你一定要在面試時,去逼問他:JVM的底層是什麼?還美其名曰,這體現了這個人,對Java語言的認識程度。
這真的有意義麼?
回覆列表
沒有過時,裡面的東西很經典了,包括虛擬機器記憶體機制。
在一些面試中也會經常問到虛擬機器相關的內容,在書中都可以找到答案。。。