1. 程式人生 > >Java核心(一):Java平臺的理解

Java核心(一):Java平臺的理解

從事 Java 至今已有6年有餘,再次做一次溫習並記錄於此,記得對 Java 最直觀的印象就是它宣傳的 “Write once, run anywhere”,還是目前看已經有些過於形式主義的語法呢?你對於 Java 平臺到底瞭解到什麼程度?請你先停下來總結思考一下。

今天談談對 Java 平臺的理解?

思路分析

這個問題本身是非常開放的,往往考察的是多個方面,比如,基礎知識理解、 Java 平臺主要模組和執行原理等。

在回答這類的問題時候,我們需要儘量表現出自己對Java 知識理解得比較全面,從思維深入和系統化著手,一定要避免讓面試官覺得你是個“知其然不知其所以然”的人。畢竟明白基本組成和機制,是日常工作中進行問題診斷或者效能調優等很多事情的基礎,相信沒有招聘方會不喜歡“熱愛學習和思考”的面試者。

典型回答

Java 本身是一種面向物件的語言,最顯著的特性有兩個方面:

  • 一是所謂的“書寫一次,到處執行”(Write once, run anywhere),能夠非常容易地獲得跨平臺能力;
  • 另外就是垃圾收集(GC, Garbage Collection),Java 通過垃圾收集器(Garbage Collector)回收分配記憶體,大部分情況下,程式設計師不需要自己操心記憶體的分配和回收。

JRE(Java Runtime Environment)和 JDK(Java Development Kit)是Java開發人員日常接觸到的。 JRE,也就是 Java 執行環境,包含了 JVM 和 Java 類庫,以及一些模組等。而 JDK 可以看作是 JRE 的一個超集,提供了更多工具,比如編譯器、各種診斷工具等。

深入思考

對於 Java 平臺的理解,可以從很多方面簡明扼要地談一下,例如:Java 語言特性,包括泛型、Lambda 等語言特性;基礎類庫,包括集合、IO/NIO、網路、併發、安全等基礎類庫。對於我們日常工作應用較多的類庫,面試前可以系統化總結一下,有助於臨場發揮。

或者談談 JVM 的一些基礎概念和機制,比如 Java 的類載入機制,常用版本 JDK(如 JDK 8)內嵌的 Class-Loader,例如 Bootstrap、 Application 和 Extension Class-loader;類載入大致過程:載入、驗證、連結、初始化(這裡參考了周志明的《深入理解 Java 虛擬機器》,非常棒的 JVM 上手書籍);自定義 Class-Loader 等。還有垃圾收集的基本原理,最常見的垃圾收集器,如 SerialGC、Parallel GC、 CMS、 G1 等,對於適用於什麼樣的工作負載最好也心裡有數。

當然還有 JDK 包含哪些工具或者 Java 領域內其他工具等,如編譯器、執行時環境、安全工具、診斷和監控工具等。這些基本工具是日常工作效率的保證,對於我們工作在其他語言平臺上,同樣有所幫助,很多都是觸類旁通的。

下圖是我總結的一個相對寬泛的藍圖供你參考。在這裡插入圖片描述
今天,我介紹了一下 Java 平臺的理解,主要包括 Java 語言特性、 核心類庫與常用第三方類庫、Java 虛擬機器基本原理和相關工具,希望對你有所幫助。