面試——談談你對Java 平臺的理解

言技發表於2018-12-20

經典回答

Java語言是一種物件導向的高階語言,它最顯著的有兩個特性,一是通過平臺中立的class檔案格式和遮蔽底層硬體差異的jvm實現‘一次編寫,到處執行’;二是通過‘垃圾收集器’管理記憶體的分配和回收。

Java 是一種簡單、嚴謹並且適合編寫的語言,它不像C/C++ 那樣有很多晦澀難懂的內容,如標頭檔案、指標、結構等等。我們編寫java 會接觸到 JRE(Java Runtime Environment)或者 JDK(Java Development Kit)。 JRE,也就是 Java 執行環境,包含了JVM 和豐富的 Java 類庫,比如集合,泛型,反射,併發,網路,IO/NIO等。而 JDK 可以作是 JRE 的一個超集,提供了更多工具,比如編譯器、各種診斷工具等,讓java 語言更加安全、健壯。還有更多第三方類庫的支援,如spring、springmvc、mybatis等讓java 非常適合開發。

很多對Java 的影響是它很慢,因為它是解釋執行。其實不是這樣的,Java 是解釋執行+編譯執行混合型。一般JVM 是直接解釋執行.class檔案,當出現高頻程式碼時JVM 會通過JIT 即時編譯器把經常執行的程式碼作為"熱點程式碼"編譯與本地平臺相關的機器碼,並進行各種層次的優化。

知識點

1、Java是純物件導向的語言。《Java程式設計思想》中提到Java語言是一種“Everything is object”的語言,它能夠直接反映現實生活中的物件,例如車、動物等,因此通過它編寫程式更容易。

2、平臺無關性。Java語言可以“一次編譯,到處執行”。無論是在Windows平臺還是在Linux、MacOS等其他平臺上對Java程式進行編譯,編譯後的程式在其他平臺上都可以執行。由於Java是解釋性語言,編譯器會將Java程式碼變成“中間程式碼”,然後在Java虛擬機器(Java Virtual Machine,JVM)上解釋執行。由於中間程式碼與平臺無關,因此Java語言可以很好的跨平臺執行,具有很好的可移植性。

3、Java提供了很多內建的類庫,通過這些類庫,簡化了開發人員的程式設計工作,同時縮短了專案的開發時間,例如,Java語言提供了對多執行緒的支援,提供了對網路通訊的支援,最主要的是提供了垃圾回收器,這使得開發人員從記憶體的管理中解脫出來。

4、提供了對Web應用開發的支援。例如,Applet、Servlet和JSP可以用來開發Web應用程式;Socket、RMI可以用來開發分散式應用程式。

5、具有較好的安全性和健壯性。Java語言經常被用在網路環境中,為了增強程式的安全性,Java語言提供了一個防止惡意程式碼攻擊的安全機制(陣列邊界檢測和Bytecode校驗等)。Java的強型別機制、垃圾回收器、異常處理和安全檢查機制使得用Java語言編寫的程式具有很好的健壯性。

6、去除了C++語言中難以理解、容易混淆的特性,如標頭檔案、指標、結構、單元、運算子過載、虛擬基礎類、多重繼承等,使得程式更加嚴謹簡潔。

相關文章