精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java編譯與執行全揭秘:宏觀到微觀開啟java的奇幻之旅

開發 前端
沙箱是一個限制程序運行的環境。沙箱機制就是將Java代碼限定在虛擬機特定的運行范圍中,并且嚴格限制代碼對本地系統資源訪問。

1.宏觀上分析java代碼的執行流程

圖片圖片

編譯階段:代碼編譯是從.java源文件通過編譯器轉換形成.calss字節碼文件的過程(javac編譯器)。

執行階段:.class字節碼文件會通過JVM中的解釋器,翻譯成特定機器上的機器碼,并執行對應的指令。

問題:這兩個階段會操作內存嗎?什么時候操作內存?

  • 編譯階段僅僅只是將源文件代碼轉換為對應的字節碼,該過程不會執行指令,因此不會操作內存。
  • 執行階段會將字節碼文件解釋為機器碼(解釋執行),并執行指令(編譯執行),因此該過程會頻繁操作內存。

圖片圖片

2.編譯階段執行流程

編譯階段僅僅只是把源文件轉換成對應的字節碼,那我們可以知道,Java代碼首先一定會經過javac編譯器編譯一次。

Javac編譯java源文件轉換為字節碼文件的過程如下圖所示:

圖片圖片

2.1 javac執行步驟分析

javac的組件如下圖:

圖片圖片

源代碼執行流程如下圖:

圖片圖片

詞法分析:把源代碼中的單個字符(各關鍵字、變量等)轉為Token序列,token是編譯過程的最小單元,ScannerFactoryParserFactory用于生成ScannerJavacParser對象,JavacParser用于規定哪些詞符合java語言規范,Scanner用于逐步讀取和歸類不同的詞法操作,解析出Token序列,Names用于存儲和表示解析后的詞法。

語法分析:將Token流構造成為抽象語法樹,語法樹的每一個節點都代表代碼中的一個語法結構(包、類型、接口、修飾符等)。

填充符號表:符號表是一組符號地址和符號信息構成的表格,符號表會填充每個抽象語法樹和package-info.java的頂級節點,生成一個待處理列表。

插入式注解處理器處理注解:注解處理器可以增刪改抽象語法樹中的任意元素,因此每當注解處理器對語法樹進行修改時,都會從詞法分析重新開始執行,直到注解處理器不再修改語法樹為止,每一次的循環過程稱為一次Round。

語義分析:對語法樹結構上正確的源程序進行上下文有關的審查,分為標注檢查和數據及控制流分析兩個步驟,參數不變性由編譯器在編譯期保障。

  • 標注檢查:檢查的內容包括變量使用前是否被聲明,變量與賦值的數據類型是否能匹配等,以及常量折疊:int i=1+2;,會被折疊成字面量3。
  • 數據及控制分析:數據及控制分析是對程序上下文邏輯更進一步的驗證,例如:檢查變量是否初始化,方法的每個執行分支是否都有返回值,是否所有的異常都被正確處理等,這個階段并不會對變量賦值。

解語法糖

  • 語法糖的定義:在計算機語言中(如java)添加某種語法,這種語法對整個語法的功能并沒有影響,但是更方便程序員使用,增加程序的可讀性,減少程序出錯的機會。
  • 解語法糖就是將java中的語法(語法糖)還原回基礎語法結構,例如:泛型、變長參數、自動裝箱/拆箱、遍歷循環、內部類、斷言等JVM不支持的語法結構還原回最基礎的語法結構,這個過程叫解語法糖。

生成字節碼:將前面步驟生成的語法樹、符號表等信息轉化為字節碼,然后寫入磁盤.class文件。

ClassFile {
    u4             magic; //Class 文件的標志
    u2             minor_version;//Class 的小版本號
    u2             major_version;//Class 的大版本號
    u2             constant_pool_count;//常量池的數量
    cp_info        constant_pool[constant_pool_count-1];//常量池
    u2             access_flags;//Class 的訪問標記
    u2             this_class;//當前類
    u2             super_class;//父類
    u2             interfaces_count;//接口
    u2             interfaces[interfaces_count];//一個類可以實現多個接口
    u2             fields_count;//Class 文件的字段屬性
    field_info     fields[fields_count];//一個類可以有多個字段
    u2             methods_count;//Class 文件的方法數量
    method_info    methods[methods_count];//一個類可以有個多個方法
    u2             attributes_count;//此類的屬性表中的屬性數
    attribute_info attributes[attributes_count];//屬性表集合
}

3.執行階段執行流程

Java文件通過編譯后生成的class字節碼文件,會加載到JVM中執行,JVM執行過程主要分為加載和執行兩個階段。

  • 加載:會將Java文件通過javac執行后的ClassFile通過類加載器(ClassLoader)加載到內存區域,類加載器會對ClassFile進行加載、鏈接、初始化(也就是進行解析)。
  • 執行:將初始化后的數據根據類型的不同分別存放在不同的內存區域,并通過執行引擎運行字節碼指令對棧進行操作(執行引擎運行的字節碼指令只會操作當前棧幀(指令流--基于棧的指令集架構))。

執行階段,Java虛擬機對class字節碼文件進行的操作如下圖所示:

圖片圖片

具體操作參考下圖:

圖片圖片

類的定義分為三類保存

  • initCode:保存需要初始化執行的實例變量和非static修飾的塊。
  • clinitCode:保存需要初始化執行的類變量和static修飾的塊。
  • methodDefs:保存方法定義符號。

把initCode中的定義插入到實例構造器init()中。

  • 如果程序中定義有構造函數,它在解析的語法分析階段就會被重命名為init()。
  • 如果程序中定義沒有構造函數,則實例構造器init()就是作為默認構造函數,在填充符號表時被添加。
  • 如果程序中定義的構造函數沒有顯式調用super()或this(),會添加super()的父類構造函數調用。
  • 如果程序中定義沒有構造函數,則填充符號表時添加的默認構造函數會自帶super()。

把clinitCode中的定義插入到類構造器clinit()中。

  • init()是在每次實例化對象時執行。
  • clinit()是在類加載器加載該類時執行。

4. 擴展內容-沙箱安全機制

  • Java安全模型的核心是Java沙箱(sandbox)。
  • 什么是沙箱:沙箱是一個限制程序運行的環境。沙箱機制就是將Java代碼限定在虛擬機特定的運行范圍中,并且嚴格限制代碼對本地系統資源訪問。
  • 作用:保證對代碼的有效隔離,限制系統資源的訪問、防止對本地系統造成破壞--系統資源包括:CPU、內存、文件系統、網絡等。
  • Java安全模型:在Java中將執行程序分為本地代碼和遠程代碼兩種,本地代碼默認視為可信任的,而遠程代碼則被看作是不受信任的。對于授信的本地代碼可以訪問一切本地資源(例如:創建文件夾、修改文件內容等),而對于非授信的遠程代碼在早期的Java實現中,安全依賴于沙箱機制(1.0版本完全隔離)。

圖片圖片

1.1版本針對安全機制做了改進,增加了安全策略,允許用戶指定對本地資源的訪問權限。

圖片圖片

1.2版本再次改進安全機制,增加了代碼簽名,不論是本地代碼或是遠程代碼,都會按照用戶的安全策略設定,由類加載器加載到虛擬機中權限不同的運行空間,來實現差異化代碼的執行權限控制。

圖片圖片

  • 當前的是最新的安全機制,引入了域(Domain)的概念。虛擬機會把所有代碼加載到不同的系統域或應用域,系統域部分專門負責與關鍵資源進行交互,而各個應用域部分則通過系統域的部分代理來對各種需要的資源進行訪問。虛擬機中不同的受保護域(Protected Domain),對應不一樣的權限(Premission)。存在于不同的域中的類文件就具有了當前域的全部權限。

圖片圖片

  • 沙箱的基本組件:

Java.security下的類和擴展包下的類,允許用戶為自己的應用增加新的安全特性,包括:

  • 安全提供者
  • 消息摘要
  • 數字簽名
  • 加密
  • 鑒別
  • 是核心API和操作系統之間的主要接口,實現權限控制,比存取控制器優先級高。
  • 存取控制器可以控制核心API對操作系統的存取權限,而這個控制的策略設定,可以由用戶指定
  • 它防止惡意代碼干涉善意的代碼(雙親委派機制)
  • 它守護了被信任的類庫邊界
  • 它將代碼歸入保護域,確定了代碼可以進行哪些操作
  • 字節碼校驗器(bytecode verifier):確保Java類文件遵循Java語言規范。這樣可以幫助Java程序實現內存保護,但并不是所有的類文件都會經過字節碼校驗,比如核心類。
  • 類裝載器(ClassLoader):其中類裝載器在三個方面對Java沙箱起作用
    虛擬機為不同的類加載器載入的類提供了不同的命名空間,命名空間由一系列唯一的名稱組成,每個被裝載的類將有一個名字,這個命名空間是由Java虛擬機為每一個類裝載器維護的,它們互相之間甚至不可見
  • 存取控制器
  • 安全管理器
  • 安全軟件包
責任編輯:武曉燕 來源: 愛編程的杰尼龜
相關推薦

2017-12-07 09:07:15

數據中心宏觀微觀

2020-02-22 13:42:03

在線教育網課教育

2024-12-30 10:03:11

2023-09-04 09:12:10

設計業務耦合

2025-02-05 11:43:28

2024-09-26 19:39:23

2024-09-24 10:36:29

2014-11-12 13:22:34

2019-03-19 15:30:42

程序員JVM虛擬機

2022-11-18 16:02:11

博睿數據可觀測性APM

2017-02-20 13:54:14

Java代碼編譯

2021-11-30 09:00:00

TypeScriptJ??avaScrip開發

2016-03-01 22:21:26

IBM

2010-09-25 11:23:15

Java內存泄露

2019-03-08 15:15:21

AI零售業人工智能

2021-05-21 14:25:45

人工智能電腦醫療

2010-07-02 13:22:25

UML交互圖

2025-04-30 02:00:00

Dify開源AI

2025-03-20 14:50:24

2021-12-09 22:27:30

云計算云計算環境云安全
點贊
收藏

51CTO技術棧公眾號

日本精品一二三区| 中文字幕av久久| 国产女主播喷水视频在线观看| 久久99精品久久久久久园产越南| 欧美色图一区二区三区| 欧美日韩dvd| 青青草免费在线视频| 奇米色777欧美一区二区| 麻豆国产va免费精品高清在线| 91视频在线免费| 亚洲成av在线| 亚洲国产日产av| 亚洲 日韩 国产第一区| 你懂的网站在线| 蜜臀国产一区二区三区在线播放 | 亚洲图片欧美另类| 666av成人影院在线观看| 亚洲美女视频一区| 日本一区二区不卡高清更新| 性猛交富婆╳xxx乱大交天津| 性欧美videos另类喷潮| 欧美大片免费看| 99久久99久久精品免费看小说.| 大陆精大陆国产国语精品| 欧美午夜一区二区三区免费大片| 欧美无砖专区免费| 午夜免费福利在线观看| www激情久久| 不卡的av一区| 国产一区二区波多野结衣| 亚洲一区二区三区高清| 九九热精品视频| 九九热免费在线| 天天久久夜夜| 亚洲第一天堂av| 97免费公开视频| 久久久免费人体| 日韩欧美主播在线| 国产综合中文字幕| 天堂av在线电影| ●精品国产综合乱码久久久久| 欧美性大战久久久久| 欧美熟妇另类久久久久久不卡| 国产一区二区在线观看免费| 国产第一区电影| 亚洲天堂男人av| 国产亚洲精品自拍| 91精品国产九九九久久久亚洲| 国产波霸爆乳一区二区| 亚洲影视一区| 精品国产一区二区三区在线观看 | 亚洲人午夜精品天堂一二香蕉| 日韩精品大片| 国产精品视频二区三区| 国产日韩欧美激情| 亚洲高清在线观看一区| 国产一级免费在线观看| 久久精品一区八戒影视| 欧美日韩一区在线观看视频| 青青草av免费在线观看| 久久精品视频免费| 日本在线观看一区二区| 成av人电影在线观看| 国产亚洲一二三区| 亚洲乱码一区二区三区| 午夜视频成人| 一区二区三区资源| 99在线观看视频免费| 97在线视频免费观看完整版| 精品动漫一区二区| 日本久久久精品视频| 九九热线视频只有这里最精品| 色噜噜狠狠一区二区三区果冻| 能在线观看的av网站| 国产福利亚洲| 欧美一级欧美三级| 国产xxxxxxxxx| 亚洲最大在线| 色婷婷久久一区二区| 亚洲 欧美 变态 另类 综合| 午夜天堂精品久久久久| 久久人人爽人人| 欧美a视频在线观看| 另类小说综合欧美亚洲| 91久久精品一区二区别| 少妇一区二区三区四区| 久久精品人人爽人人爽| 天堂v在线视频| 久草在线视频资源| 色成人在线视频| 三日本三级少妇三级99| 天堂99x99es久久精品免费| 一区二区三区美女xx视频| 精品国产视频在线观看| 国产精品日韩欧美一区| 国产精品一区二区性色av| 亚洲黄色在线观看视频| 久久日韩粉嫩一区二区三区| 中文字幕一区二区三区四区五区| 欧美性猛片xxxxx免费中国| 日韩欧美精品免费在线| 久久综合在线观看| 免费一区二区三区视频导航| 精品激情国产视频| 亚洲天堂视频网站| 国产一区欧美日韩| 欧美一区1区三区3区公司 | 国产精品免费99久久久| 美日韩精品视频免费看| aaa在线视频| 成人在线视频首页| 中文一区一区三区免费| 中文字幕人成乱码在线观看| 欧美一区二区三区免费观看视频| av在线网站观看| 中文字幕免费一区二区三区| 国产精品成人一区二区| 午夜小视频在线播放| 综合在线观看色| 一级黄色香蕉视频| 狼人精品一区二区三区在线| www.午夜精品| 国产一级片免费视频| 不卡在线观看av| 中文字幕乱码免费| 2019年精品视频自拍| 日韩av影院在线观看| 色婷婷国产精品免| 久久青草久久| 美女亚洲精品| free性m.freesex欧美| 日韩欧美中文一区| 成人在线观看高清| 激情成人综合网| 在线一区亚洲| 黄色精品视频网站| 中文字幕亚洲情99在线| 日韩国产成人在线| 国产亚洲一二三区| 日日摸天天爽天天爽视频| 日韩精品免费一区二区三区竹菊| 九色精品美女在线| 精品国产av 无码一区二区三区| 国产精品国产三级国产普通话蜜臀 | 欧美日韩不卡一区二区| 欧美丰满老妇熟乱xxxxyyy| 久久久噜噜噜| 免费国产在线精品一区二区三区| 国产高清中文字幕在线| 亚洲国产一区二区三区在线观看| 午夜偷拍福利视频| 北条麻妃国产九九精品视频| 国产av人人夜夜澡人人爽麻豆| 国产福利资源一区| 久久久久久成人精品| 黑人精品一区二区三区| 亚洲一级电影视频| 丝袜熟女一区二区三区| 日韩午夜在线电影| 欧美污视频久久久| 成人日韩av| 久久综合电影一区| 精品国产伦一区二区三| 亚洲第一狼人社区| 91av在线免费| 日本亚洲天堂网| 吴梦梦av在线| 999久久精品| 欧洲亚洲免费在线| 国产高清视频在线| 69堂国产成人免费视频| 免费日韩在线视频| 91香蕉视频mp4| 日本在线观看免费视频| 一区二区中文| 国外成人免费视频| 韩国成人在线| 久久6免费高清热精品| 日本高清视频免费看| 色噜噜夜夜夜综合网| 精品国产视频在线观看| av不卡一区二区三区| 91网址在线播放| 欧美另类视频| 欧美精品中文字幕一区二区| 国产精品高潮久久| 久久久亚洲影院你懂的| 欧美熟妇另类久久久久久不卡| 91极品美女在线| 青青草原国产视频| 久久久99久久| 国内精品国产三级国产aⅴ久| 亚洲黄色天堂| 亚洲综合五月天| 乱中年女人伦av一区二区| 国产成人一区三区| 草美女在线观看| 一区二区亚洲精品国产| 国产福利第一视频| 欧洲视频一区二区| 国产真实的和子乱拍在线观看| 欧美韩国一区二区| 一边摸一边做爽的视频17国产| 麻豆精品一区二区av白丝在线| 日本丰满少妇xxxx| 天天av综合| 欧美久久综合性欧美| 九九99久久精品在免费线bt| 日韩免费视频在线观看| 国产第一页在线| 日韩天堂在线视频| 美国一级片在线免费观看视频| 日韩欧美在线网站| 中文字幕乱码视频| 精品国产91久久久久久老师| 免费在线观看一级片| 国产情人综合久久777777| 成熟妇人a片免费看网站| 狠狠色丁香久久婷婷综| 无码人妻丰满熟妇区毛片18| 欧美视频成人| 中文字幕在线中文| 欧美高清在线| 丝袜足脚交91精品| 岳的好大精品一区二区三区| 成人欧美一区二区三区在线观看 | 欧美天堂一区二区三区| 亚洲影院在线播放| 精品国产91久久久久久老师| 国产一级一级片| 一区二区成人在线| 日韩在线观看视频一区二区| 国产精品麻豆欧美日韩ww| 全黄一级裸体片| 95精品视频在线| 亚洲精品第二页| 国产69精品久久久久毛片 | 蜜臀99久久精品久久久久小说| 午夜精品视频一区| 日本一区二区欧美| 亚洲成人av一区二区| 日韩精品成人在线| 亚洲va欧美va人人爽午夜| xxxx 国产| 黄色精品在线看| 国产成人无码精品| 黑人巨大精品欧美一区免费视频 | 中文字幕欧美一区| a级在线观看视频| 99精品国产91久久久久久| 图片区偷拍区小说区| 丁香天五香天堂综合| 亚洲欧美综合视频| 成人国产在线观看| 水蜜桃av无码| 97久久超碰精品国产| 在线免费观看a级片| 99精品久久99久久久久| 免费污网站在线观看| 国产欧美日韩激情| 免费黄色激情视频| 亚洲激情欧美激情| 久久久久久久伊人| 日韩欧美国产成人| 日本一区二区三区久久| 欧美日韩成人在线一区| 国产成人精品一区二三区四区五区 | 欧美在线观看成人| 日韩精品一级中文字幕精品视频免费观看| 国产免费视频传媒| 麻豆国产一区二区| 日本黄色www| 92国产精品观看| 免费看91的网站| 亚洲免费在线观看视频| 日本在线小视频| 欧美在线影院一区二区| 97超碰人人草| 日韩成人在线观看| 91xxx在线观看| 欧美极品欧美精品欧美视频| 自拍一区在线观看| 91视频免费网站| 久久精品论坛| 亚洲一区二区三区精品视频| 合欧美一区二区三区| 久草精品在线播放| 国产在线精品视频| 久久人人爽人人爽人人片| 国产精品久久久久久亚洲伦| 久草视频在线资源| 色国产精品一区在线观看| 99热精品在线播放| 精品一区二区三区四区| 乱人伦中文视频在线| 97视频在线观看免费高清完整版在线观看 | 欧美美女性视频| 成人激情校园春色| 国产精品www爽爽爽| 亚洲18女电影在线观看| 亚洲天堂网在线观看视频| 亚洲国产精品字幕| 欧美激情二区| 日韩av电影手机在线| 天堂久久av| 亚洲欧美丝袜| 亚洲综合电影一区二区三区| 日本一二三四区视频| 国产亚洲精品中文字幕| 久久久久久欧美精品se一二三四 | 精品久久久中文字幕人妻| 亚洲欧美变态国产另类| 污污网站在线看| 国产精品视频在线播放| 欧美aaaaa级| 日本老太婆做爰视频| 欧美a一区二区| www.超碰97| 亚洲成av人片在线观看无码| a天堂在线观看视频| 中文字幕av一区| 成人美女视频| 国外成人免费视频| 激情视频一区| 佐山爱在线视频| 中文字幕一区二区三| 波多野结衣影片| 亚洲欧美在线磁力| 亚洲女同志freevdieo| 岛国视频一区| 欧美日韩一区二区国产| 交换做爰国语对白| 日韩一区日韩二区| ,一级淫片a看免费| 日韩在线视频线视频免费网站| japanese23hdxxxx日韩 | 91高清一区| 日本77777| 国产精品久久久久久一区二区三区| 少妇一级淫片日本| 国产亚洲福利一区| 欧美xxxx做受欧美护士| 品久久久久久久久久96高清| 另类亚洲自拍| 30一40一50老女人毛片| 日本久久一区二区三区| 国产中文字幕在线| 国产精品久久久久久久久久三级 | 欧美亚洲精品天堂| 亚洲精品电影网在线观看| 日韩激情电影免费看| 欧美日韩在线一二三| 久久精品动漫| 五月激情四射婷婷| 91麻豆精品国产无毒不卡在线观看| 日本a级在线| 亚洲一区二区三区成人在线视频精品| 亚洲精品888| 国产精品偷伦视频免费观看了| 亚洲尤物视频在线| 亚州视频一区二区三区| 国产suv精品一区二区三区88区| 亚洲第一二三区| 色哟哟精品视频| 综合欧美一区二区三区| av网站在线免费看| 97视频在线观看免费| 精品国产一区二区三区小蝌蚪 | 久久久午夜影院| 亚洲欧美日韩天堂一区二区| 欧美成人免费全部网站| 中国女人做爰视频| 99麻豆久久久国产精品免费| 不卡av电影在线| 久久影视免费观看| 里番精品3d一二三区| 午夜视频在线瓜伦| 亚洲精品你懂的| 日韩一级片免费看| 国产精品视频久久| 欧美日本三区| 亚洲精品成人无码| 日韩三级视频中文字幕| 英国三级经典在线观看| 亚洲一二三区在线| 不卡av在线免费观看| 成人免费一区二区三区| 欧美激情日韩图片| 欧美色蜜桃97| 蜜臀av粉嫩av懂色av| 在线亚洲一区二区| 韩国成人免费视频| 日本免费高清一区| 懂色av一区二区在线播放| 波多野结衣mp4| 久久久久久久久久久人体| 成人女性视频| 国产精品嫩草av| 91麻豆精品国产91久久久| 免费福利视频一区二区三区|