JAVA 程式的一生
從本科開始就一直用Java, 但是基本上只是使用IDE比如eclipse 進行敲程式碼而已, 然後編譯、執行,程式跑通就行,但是隨著學習的深入 ( 雖然還是很渣), 慢慢的想知道我們點選 編譯、執行的時候,系統內部到底做了什麼,今天我們就來看看是什麼魔力讓我們寫的java 原始碼 有了生命。
首先來了解下一些基本的概念。
JAR: jar 包, Java Archive, 就是對一些文字、影象等資源、.class 檔案等的整合壓縮包,用來給我們的Java 程式提供支援的檔案。
JRE: Java Runtime Environment, 就是java程式的執行環境,包括JVM (java 虛擬機器) + JARs + 其他檔案。如下圖
JDK: Java Development Kit, 就是Java 開發組建等。 包含 JRE 和 Compiler + Debugger等.
JVM : Java Virtual Machine. 對於JVM的每個元件。
1. ClassLoader: 1). 裝載 .class 檔案到記憶體中 2). 核實byte code 的操作這就是為什麼說,java 程式相對安全,因為在裝載byte code到記憶體中時,classloader的verifier會核實下這個code中有沒有什麼指令能對我們的系統產生傷害。3). 為程式分配記憶體.
2. Run time data area: JVM 執行程式時所使用的記憶體區域。
2.1 Method area: 儲存class 程式碼和 method 程式碼
2.2 Heap: 物件在Heap(堆)中被建立
2.3 Java Stacks: 用來執行java 方法的frame. 方法在這裡執行
2.4 Program counter registers: 用來存放指令的記憶體地址
2.5 Native Method Stacks: 用來執行 native language method 的地方.
native language: 不需要轉換和解釋,能直接在機器上執行的語言比如C
Managed language: 必須被轉換和解釋才能執行的語言比如Java
Dynamic language: python.
3. Native method interface: 是native method的介面, 用來連線native language libraries 和 JVM
4. Native method library: 儲存native language 的libraries的資訊
5. Execution Engine: 包含 直譯器 和 JIT 編譯器 - 轉換byte code 到 machine code。
以上是瞭解java 程式開發與執行的知識儲備。
Java Source Code< .java file> -------- Compiler -------> Java Byte Code< .class file> --------- JVM ------- 在JVM中由JIT Compiler 將Java Byte Code 轉換成Machine Code然後執行 --------> result
有錯誤歡迎指出。
相關文章
- Java,傳奇的一生!Java
- PHP程式設計師的一生PHP程式設計師
- 程式的一生:從源程式到程式的辛苦歷程
- Flutter的一生Flutter
- 推送——Android程式設計師‘一生的痛’!!Android程式設計師
- 技術公眾號「程式設計一生」程式設計
- Spring Bean 的一生SpringBean
- 計算機系統->Hello World的一生 | 程式如何執行計算機
- 程式設計師的技能樹,決定了一生職業的高度程式設計師
- 程式設計師生涯第一生存法則程式設計師
- 程式設計師的愛情表白(我愛你一生一世)程式設計師
- Spotify CEO推薦:系統思考的一生
- 現實生活:定時器&孔子的一生定時器
- 被嫌棄的程式設計師的一生,一定要看完,會看到你自己程式設計師
- 設計模式,,,一個程式猿應一生追求完美的東西設計模式
- Spring Bean生命週期,好像人的一生。。SpringBean
- Flutter Sliver一生之敵 (ExtendedList)Flutter
- 巧妙排序;及相伴一生分析排序
- bug的一生:如何體現測試專業度?
- OceanBase 原始碼解讀(五):租戶的一生原始碼
- OceanBase 原始碼解讀(三):分割槽的一生原始碼
- 讀 NebulaGraph原始碼 | 查詢語句 LOOKUP 的一生原始碼
- 「Java分享客棧」Nacos配置中心稱王稱霸,我Apollo一生也不弱於人!Java
- Flutter Sliver一生之敵 (ScrollView)FlutterView
- 相伴一生;及構造最大數分析
- 需要怎麼才能過好這一生
- 計算機之父阿蘭·圖靈傳奇的一生計算機圖靈
- 用圖片看盡 IE 瀏覽器的這一生瀏覽器
- 對你一生都有用的15個學習習慣
- 還不懂最新趨勢Flutter?Flutter的一生,最通俗講解!Flutter
- 《寵我一生》安卓二測今日開啟安卓
- [一生一芯筆記]Chisel diplomacy精講筆記Mac
- [Java 基礎]Java 程式的基本結構Java
- Java 中的程式碼塊Java
- 理解Java程式的執行Java
- java程式猿的那些梗Java
- Java中的程式碼塊Java
- java的第一個程式Java