上節(jié)學習回顧

 

在上一節(jié)當中,主要以自己的工作環(huán)境簡單地介紹了一下自身的一些調(diào)優(yōu)或者說是故障處理經(jīng)驗。所謂百變不離其宗,這個宗就是我們解決問題的思路了。

 

本節(jié)學習重點

 

在前面幾章,我們宏觀地了解了虛擬機的一些運行機制,那么從這一章節(jié)開始,我們將更加深入虛擬機的深處去了解其運行細節(jié)了。例如本章節(jié)的學習重點是類文件的結(jié)構,也就是虛擬機的數(shù)據(jù)入口。既然是數(shù)據(jù)入口,肯定得要符合虛擬機的數(shù)據(jù)定義規(guī)范才能給虛擬機處理,否則它壓根就不認識你。

 

 

概述

 

在學習之前,先拋出一個比較常見的問題:C語言與Java的運行效率如何?其實這個問題隨著技術的發(fā)展越來越不好回答,先看看下圖:

iOS培訓,Swift培訓,蘋果開發(fā)培訓,移動開發(fā)培訓

如果單單看C語言和Java語言的一個運行流程,我會毫無疑問的舉起手腳投C語言運行效率比Java的運行效率高,但隨著技術的進步和發(fā)展(后面章節(jié)會學習到的技術),我只能說Java的運行速度跟其它的高級語言相比只會越來越近,并且某些情況不輸給C語言。當然,這一章節(jié)討論的不是跟其它語言比效率,是先給你和我一個比較宏觀的角度去理解類文件的位置。Java語言最大的優(yōu)勢就是一次編譯到處運行,不像C語言文件在不同的操作系統(tǒng)會有兼容性問題。但凡事有收獲就肯定有付出的,世界上沒有那么完美的事情,Java這跨平臺的優(yōu)勢也卻卻是劣勢。因為多了一層“虛擬機系統(tǒng)”這件“溫暖的棉襖”才得以讓Java可以到處跑,也確實有人用C語言是裸奔而Java是裹著棉襖奔跑來形容兩者的運行效率。C語言編譯后是機器語言文件可以直接執(zhí)行,而Java語言文件編譯后是類文件。類文件還需要在虛擬機運行時(解釋+編譯)轉(zhuǎn)換成機器語言才能執(zhí)行。如果我們直接去查看機器語言文件,里面除了0就是1,這就是計算機唯一認識的兩個字。因為類文件也稱字節(jié)文件,就是以一個字節(jié)(8bit)為單位組成的文件, 用文本打開一樣是全是0和1的二進制樣式,但類文件的二進制規(guī)則和機器語言的二進制規(guī)則又有所不同。例如類文件開頭的前32位(4字節(jié))是定義類文件的標識,前32位字節(jié)如果Java虛擬機不認識,那就不是類文件了。同理,如果計算機硬件不認識這個二進制文件的排版規(guī)則,那就是這個不是機器語言。而這一章節(jié)主要學習的就是類文件是如何組成的?又有哪些規(guī)則?其實說白了,類文件也是一種語言文件,只不過面對的不是我們這些普羅大眾的應用開發(fā)者,而是面向于那些基于Java虛擬機的語言設計者和開發(fā)者看的而已。

 

無關性的基石

&

網(wǎng)友評論