001-爲何Java能這麼流行

閱讀時光

本文首發於公衆號:javaaduhtml

典型回答

這種問題比較籠統,若是我遇到這個問題,我會從下面幾個點闡述個人觀點:java

  1. Java經過JVM實現了「一次編寫,處處運行」的特性,由JVM屏蔽掉了不一樣平臺的差別性,並建立了字節碼語言來做爲Java代碼的「彙編語言」,JVM讀取字節碼文件、解析字節碼文件來運行;
  2. JVM提供了垃圾收集器,大部分狀況下,程序員不須要本身擔憂內存的分配和回收;
  3. Java在企業級開發領域具有殺手級框架Spring全家桶,讓Java在企業服務領域幾無敵手;
  4. Java在客戶端開發領域具有殺手級應用場景——Android開發;
  5. Java開發的生態很是豐富和完整,有無數成熟可靠的開源軟件;
  6. Java是一門面向對象的靜態類型語言,面向對象的特性有助於Java構建大型的、複雜的應用,靜態類型語言使得Java在運行時的速度遠勝於解釋性語言,同時使得Java應用在編譯期能夠發現不少問題,是類型安全的;
  7. Java一直在發展和進化,Java 1.5補充了不少有用的特性、Java 1.8開始引入stream、lambda等特性來擁抱函數式編程範式、Java 1.9開始支持模塊化等等

問題分析

這種問題屬於開放式問題,能夠考察不少方面的內容,例如面試者的基礎知識是否紮實、知識體系是否完整。越是開放的問題,回答越不能發散,要給出系統性、結構性的回答,表現出本身是系統、全面得掌握了Java語言和其所運行的平臺的。程序員

知識點擴展

一、Java知識地圖

首先看一張圖,是Oracle對Java核心概念的一些總結Java核心架構.jpeg面試

這張圖看着密密麻麻的,不太好懂,我整理了一份腦圖出來,看着更清晰一點(利用虛線框表示包含關係):Java核心知識地圖.png編程

  1. JVM虛擬機:按照虛擬化裏面的概念,JVM虛擬機屬於宿主型虛擬機,做爲一個虛擬機,最核心的模塊是:運行時內存管理、類加載、字節碼系統、執行引擎、垃圾收集器等等;
  2. JRE(Java運行時環境):只有JVM,對於普通的Java開發者來講難度過高了,所以Hotspot的開發者還爲普通開發者提供了對應的Java SE API和其餘開發者須要的類庫,這些API、類庫和JVM共同構成了Java運行時環境。
  3. Java語言:JVM之上不單單有Java語言長盛不衰,還培育出了豐富的語言生態,例如Scala、Groovy、Kotlin、等新生代的語言。
  4. JDK:JVM、JRE,在加上輔助工具、Java語言,共同構成了JDK。
二、應用場景

從Java語言的應用場景和生態看,分爲以下幾點:後端

  1. 企業級開發(J2EE):SSM框架、Spring Boot、Spring Cloud、JPA、緩存、批量處理、定時任務等等;
  2. 客戶端開發(J2ME):安卓開發
  3. 大數據開發:Spark、Hadoop、Hbase、ES等等
三、新特性

在將上面的內容講完後,面試官對你的知識體系的完整性應該會比較滿意,接下來還能夠談下Java各個版本的發展,最好能提到某個版本比較重大的新特性,向面試官證實你不只掌握了基礎,還隨時跟進Java語言最新的發展。緩存

  1. Java 1.8
  2. Java 1.9
  3. Java 1.11

參考資料

  1. Description of Java Conceptual Diagram

本號專一於後端技術、JVM問題排查和優化、Java面試題、我的成長和自我管理等主題,爲讀者提供一線開發者的工做和成長經驗,期待你能在這裏有所收穫。安全

javaadu

相關文章
相關標籤/搜索