05 2014 檔案
摘要: 歡迎來到“Under The Hood”第五期。本期我們來看看JVM中處理對象和數組的字節碼。你可能需要閱讀往期的文章才能更好的理解本文。
閱讀全文
摘要: JVM支持IEEE-754浮點數標準(1985)。該標準定義了32位和64位浮點數的格式,以及在此之上的各種運算。在JVM中,浮點運算是基于32位float數和64位double數的。對每個操作float數的字節碼,都有一個對應的操作double數的版本。
閱讀全文
摘要: 字節碼是JVM的機器語言。JVM加載類文件時,對類中的每個方法,它都會得到一個字節碼流。這些字節碼流保存在JVM的方法區中。在程序運行過程中,當一個方法被調用時,它的字節碼流就會被執行。根據特定JVM設計者的選擇,它們可以通過解釋的方式,即時編譯(Just-in-time compilation)的方式或其他技術的方式被執行。
閱讀全文
摘要: Java類文件(.class文件)是一個為已編譯Java程序仔細定義的格式。Java源代碼被編譯成能夠被任何JVM加載和執行的類文件。在被JVM加載之前,類文件可能是由網絡傳輸而來。類文件是獨立于底層平臺的,所以適用于更多的地方。它們由簡潔的JVM字節碼組成,這樣就能輕裝上陣。類文件常常被壓縮,以極快的速度通過網絡,到達世界各地的JVM。
閱讀全文
摘要: JVM(Java虛擬機)是一個運行已編譯Java程序的抽象計算機。之所以說是”虛擬“的,是因為它基于“真正”的硬件平臺和操作系統,一般以軟件的形式實現。所有的Java程序都為JVM而編譯。因此,在特定平臺上運行已編譯Java程序之前,該平臺的JVM必須先要被實現。
閱讀全文
摘要: Java開發者,要想恰當的使用狀態模式和策略模式,必須清楚的理解它們之間的區別。雖然狀態模式和策略模式擁有相似的結構,雖然它們都基于SOLID設計原則中的O(開閉原則),但是,它們的意圖是完全不同的。
閱讀全文
摘要: 上一篇中,你看到了Java中Lambda表達式的一種形式:參數 + “->” + 表達式。如果代碼實現的邏輯一條語句完成不了,你可以寫成類似方法的形式:代碼寫在“{}”中,再加上顯式的return語句。例如:
閱讀全文
摘要: 變量作用域
你經常會想,如果可以在Lambda表達式里訪問外部方法或類中變量就好了。
閱讀全文
摘要: 在上世紀九十年代,Java被設計成了OOP語言,在當時,OOP是軟件開發中的標桿。遠在OOP還沒有出現的時候,已經產生了FP語言,例如Lisp和Scheme,但是它們的益處,并沒有受到學術圈外的人重視。最近,FP的重要性被提升了,因為它非常適合并發編程和事件驅動編程。然而,這并不意味著OO不好,相反,好的策略應該是混用OOP和FP。就算你對并發編程不感興趣,這也很有道理。例如,如果編程語言有一個方便寫函數表達式的語法,集合類庫就能擁有強大的API。
閱讀全文
摘要: 在軟件開發中,好的建議是可遇不可求的。通用設計原則可以指導我們,但現實總是逼著我們,在看起來相互沖突的目標之間妥協,比如,可擴展性和可維護性與規模和復雜性。同樣的,現有代碼庫可以在很大程度上讓我們避免重復造輪子,但想要初級開發者輕松組合那些現有組件來做項目,依然不現實。
閱讀全文