談談你對 Java 平臺的理解?“Java 是解釋執行”,這句話正確嗎?
自己整理的不是轉載也不是原創
Java 本身是一種物件導向的語言,最顯著的特性有兩個方面,一是所謂的“書寫一次,到處執行”(Write once, run anywhere),能夠非常容易地獲得跨平臺能力;另外就是垃圾收集(GC, Garbage Collection),Java 通過垃圾收集器(Garbage Collector)回收分配記憶體,大部分情況下,程式設計師不需要自己操心記憶體的分配和回收。
JRE(Java Runtime Environment)或者 JDK(Java Development Kit)。 JRE,也就是 Java 執行環境,包含了 JVM 和 Java 類庫,以及一些模組等。而 JDK 可以看作是 JRE 的一個超集,提供了更多工具,比如編譯器、各種診斷工具等。
對於“Java 是解釋執行”這句話,這個說法不太準確。我們開發的 Java 的原始碼,首先通過 Javac 編譯成為位元組碼(bytecode),然後,在執行時,通過 Java 虛擬機器(JVM)內嵌的直譯器將位元組碼轉換成為最終的機器碼。但是常見的 JVM,比如我們大多數情況使用的 Oracle JDK 提供的 Hotspot JVM,都提供了 JIT(Just-In-Time)編譯器,也就是通常所說的動態編譯器,JIT 能夠在執行時將熱點程式碼編譯成機器碼,這種情況下部分熱點程式碼就屬於編譯執行,而不是解釋執行了。
Java特性:
物件導向(封裝,繼承,多型)
平臺無關性(JVM執行.class檔案)
語言(泛型,Lambda)
類庫(集合,併發,網路,IO/NIO)
JRE(Java執行環境,JVM,類庫)
JDK(Java開發工具,包括JRE,javac,診斷工具)
Java是解析執行嗎?
不正確!
1,Java原始碼經過Javac編譯成.class檔案
2,.class檔案經JVM解析或編譯執行。
(1)解析:.class檔案經過JVM內嵌的解析器解析執行。
(2)編譯:存在JIT編譯器(Just In Time Compile 即時編譯器)把經常執行的程式碼作為"熱點程式碼"編譯與本地平臺相關的機器碼,並進行各種層次的優化。
(3)AOT編譯器: Java 9提供的直接將所有程式碼編譯成機器碼執行。
相關文章
- Java平臺的理解? Java是解釋執行嗎?Java
- 1.對Java平臺的理解。“Java是解釋執行”對嗎Java
- 面試——談談你對Java 平臺的理解面試Java
- 談談你對Java平臺的理解,你對Java平臺到底瞭解到了什麼程度?Java
- 【Java 容器面試題】談談你對HashMap 的理解Java面試題HashMap
- 面試——談談你對Java 物件導向思想的理解面試Java物件
- JAVA面試題 請談談你對Sychronized關鍵字的理解?Java面試題Zed
- 糾正對“用正確的工具幹活兒”這句話的誤解
- 談談你對Promise的理解Promise
- Java面試題:請談談對ThreadLocal的理解?Java面試題thread
- 老師,你確定Java註釋不會被執行嗎?Java
- 談如何正確理解 IP 資料的覆蓋率,兼談正確率~
- Java高頻面試題:談談你對MySQL索引的瞭解Java面試題MySql索引
- 淺談對java-GC的理解JavaGC
- java基礎(五):談談java中的多執行緒Java執行緒
- 你用對鎖了嗎?淺談 Java “鎖” 事Java
- 大白話聊聊Java併發面試問題之談談你對AQS的理解?【石杉的架構筆記】Java面試AQS架構筆記
- Java如何停止執行緒,確定你知道的都是正確的麼?Java執行緒
- 談談我的「數字文具盒」 - 執行平臺
- Java隨談(六)## 我們真的理解 Java 裡的整型嗎?Java
- java多執行緒的雜談Java執行緒
- 談談你對前端效能優化的理解前端優化
- 談談 Javascript 的執行機制及對同步非同步的理解JavaScript非同步
- 淺談 Java多執行緒Java執行緒
- 從Immutable來談談對於執行緒安全的理解誤區執行緒
- Java開發必讀,談談對Spring IOC與AOP的理解JavaSpring
- 【搞定面試官】談談你對JDK中Executor的理解?面試JDK
- 面試官:這就是你理解的Java多執行緒基礎?面試Java執行緒
- 各位談談對java web start的看法吧JavaWeb
- 談談對中斷的理解
- 談談對BPM的理解(轉)
- 淺談跨平臺框架Flutter的搭建與執行框架Flutter
- Hive SQL語句的正確執行順序HiveSQL
- 跨平臺還是Java的最大優勢嗎?Java
- 談談對Spring IOC的理解Spring
- 談談我對Monad的理解
- 第 15 題:談談你對迴流和重繪的理解?
- 【面試普通人VS高手系列】談談你對Seata的理解面試