1. 程式人生 > >一步步深入Java底層原理(一)

一步步深入Java底層原理(一)

接觸Java也快半年時間了,但是對Java的底層原理還不是非常清楚,最近在看《Java虛擬機器(第二版)》,深有啟發,順便把Java知識梳理一下,以便更好的進行接下來的學習。

Java技術體系劃分(按照所服務的平臺劃分):

  1. Java Card: 支援一些Java小程式(Applets)執行在小記憶體裝置(如智慧卡)上的平臺。
  2. Java ME(Micro Edition) :支援Java程式執行在移動終端(手機,平板)上的平臺,對Java API有所精簡,並加入了對移動端的支援,原來叫J2ME。
  3. Java SE(Standard Editon ):支援面向桌面級的應用(如Windows下)的Java平臺,提供了完整的Java核心API ,原來叫J2SE。
  4. Java EE(Enterprise Edition):支援多層架構的企業應用(如ERP,CRM應用)的Java平臺,除了提供JavaSE平臺,還對其做了大量補充並提供了部署支援,原來叫J2EE。
Java 語言是一種具有動態性的解釋型程式語言,當指定程式執行的時候, Java 虛擬機器就將編譯生成的 . class 檔案按照需求和一定的規則載入進記憶體,並組織成為一個完整的 Java 應用程式。 javac 是對 .java 檔案進行編譯 ,生成一個.class檔案,具體為(有興趣的讀者可以參見 Java編譯原理
  • 分析和輸入到符號表
  • 註解處理
  • 語義分析和生成class檔案
.class檔案為JVM位元組碼
java 是 執行 .class 檔案  ,是呼叫JVM虛擬機器執行引擎,JVM是基於棧的體系結構來執行class位元組碼的。

相關推薦

步步深入Java底層原理

Java物件的建立: 在建立物件時通常只是一個new關鍵字,但是Java虛擬機器首先會檢查引數是否能在常量池中定位到一個類的符號引用,並檢查這個類是否已經被載入,解析和初始化過,如果沒有,那麼必須先執行類的載入。 類的載入、連線、初始化三個

步步深入Java底層原理

ArrayList的實現原理: 1. ArrayList概述:   ArrayList是List介面的可變陣列的實現。實現了所有可選列表操作,並允許包括 null 在內的所有元素。除了實現 List

步步深入Java底層原理

接觸Java也快半年時間了,但是對Java的底層原理還不是非常清楚,最近在看《Java虛擬機器(第二版)》,深有啟發,順便把Java知識梳理一下,以便更好的進行接下來的學習。 Java技術體系劃分(

Java程序員從笨鳥到菜鳥之九十二深入java虛擬機——java虛擬機底層結構詳解

行為 計數 驗證 堆棧 第一個 精度 amp 語言 eight 本文來自:曹勝歡博客專欄。轉載請註明出處:http://blog.csdn.net/csh624366188 歡迎關註微信賬號:java那些事:csh624366188.每天一篇java相關的文

GIT底層原理

git暫存操作原理:git add 暫存操作會對先每一個檔案計算校驗和checksum(Git 使用SHA-1 演算法計算資料的校驗和,通過對檔案的內容或目錄的結構計算出一個SHA-1 雜湊值,作為指紋字串,該字串由40 個十六進位制字元,並將此結果作為資料的唯一標識和索引)

深入剖析 mybatis 原理

# 前言 在java程式設計師的世界裡,最熟悉的開源軟體除了 Spring,Tomcat,還有誰呢?當然是 Mybatis 了,今天樓主是來和大家一起分析他的原理的。 1. 回憶JDBC 首先,樓主想和大家一起回憶學習JDBC的那段時光: pac

Java繪圖原理 Graphics的各種。。

Graphics 類是所有圖形上下文的抽象基類,允許應用程式在元件(已經在各種裝置上實現)以及閉屏影象上進行繪製。 Graphics類你可以理解就是畫筆,為我們提供了各種繪製圖形的方法:[多看jdk幫

實用篇步步搭建Spring+SpringMVC+MyBatisSSM框架

一、前言 本篇內容是培訓作業的第一個任務,旨在搭建一個SSM框架,做一個HTML頁面,能查詢,能插入資料(新建使用者)、登陸。實現的功能最為基礎,但是要求所有程式碼均為手寫,不能使用Mybatis 自動生成mapping和dao。由於此框架是後面一系列任務的基礎,所以,還是

步步製作根檔案系統

                            開發環境:Ubuntu 12.04                             開發板:mini2440  256M NandFlash   64M SDRAM                              交叉編譯器:arm-

深入Java虛擬機1】:Java內存區域與內存溢出

count 遇到 leak 分析 對象類型 深度 分配內存 解釋執行 尋址 內存區域 Java虛擬機在執行Java程序的過程中會把他所管理的內存劃分為若幹個不同的數據區域。Java虛擬機規範將JVM所管理的內存分為以下幾個運行時數據區:程序計數器、Java虛擬機棧、本地方法

深入Java虛擬機3】:類初始化

不同 main class out pri ref 另一個 字節碼 被動引用 類初始化是類加載過程的最後一個階段,到初始化階段,才真正開始執行類中的Java程序代碼。虛擬機規範嚴格規定了有且只有四種情況必須立即對類進行初始化:遇到new、getstatic、putstati

深入Java虛擬機2」:Class類文件結構

1.5 trac 三種 type 類構造 face 方法 class throw Java是與平臺無關的語言,這得益於Java源代碼編譯後生成的存儲字節碼的文件,即Class文件,以及Java虛擬機的實現。不僅使用Java編譯器可以把Java代碼編譯成存儲字節碼的Class

深入Java虛擬機4」:類加載機制

來講 合並 field 數字 對象 例如 二進制 種類 jar 類加載過程 類從被加載到虛擬機內存中開始,到卸載出內存為止,它的整個生命周期包括:加載、驗證、準備、解析、初始化、使用和卸載七個階段。 其中類加載的過程包括了加載、驗證、準備、解析、初始化五個階段。在這五個階段

深入Java虛擬機6」:Java語法糖

拆裝箱 重載 jdk1 支持 名稱 不存在 語法糖 pub 簽名 語法糖(Syntactic Sugar),也稱糖衣語法,是由英國計算機學家Peter.J.Landin發明的一個術語,指在計算機語言中添加的某種語法,這種語法對語言的功能並沒有影響,但是更方便程序員使用。Ja

Java程式設計師從笨鳥到菜鳥之九十三深入java虛擬機器——類載入器詳解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

深入Java虛擬機器6」:Java語法糖

語法糖(Syntactic Sugar),也稱糖衣語法,是由英國計算機學家Peter.J.Landin發明的一個術語,指在計算機語言中新增的某種語法,這種語法對語言的功能並沒有影響,但是更方便程式設計師使用。Java中最常用的語法糖主要有泛型、變長引數、條件編譯、自動拆裝箱、內部類等。虛擬機器並不支援這些語法

Java程式設計師從笨鳥到菜鳥之九十四深入java虛擬機器——類的生命週期 下類的初始化

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

深入Java虛擬機器5】:多型性實現機制—靜態分派與動態分派

方法解析 Class檔案的編譯過程中不包含傳統編譯中的連線步驟,一切方法呼叫在Class檔案裡面儲存的都只是符號引用,而不是方法在實際執行時記憶體佈局中的入口地址。這個特性給Java帶來了更強大的動態擴充套件能力,使得可以在類執行期間才能確定某些目標方法的直接引

Java程式設計師從笨鳥到菜鳥之九十三深入java虛擬機器——類的生命週期類的載入和連線

         類載入器,顧名思義,類載入器(class loader)用來載入 Java 類到 Java 虛擬機器中。一般來說,Java 虛擬機器使用 Java 類的方式如下:Java 源程式(.java 檔案)在經過 Java 編譯器編譯之後就被轉換成 Java 位元組程式碼(.class 檔案)。類載

Java程式設計師從笨鳥到菜鳥之九十九深入java虛擬機器開發自己的類載入器

                歡迎閱讀本專題的其他部落格:          在大多數情況下,系統預設提供的類載入器實現已經可以滿足需求。但是在某些情況下,您還是需要為應用開發出自己的類載入器。比如您的應用通過網路來傳輸 Java 類的位元組程式碼,為了保證安全性,這些位元組程式碼經過了加密處理。這個時候您