【正文】
e r a t i n g S y s t e m硬 件 環(huán) 境H a r d w a r e E n v i r o n m e n tJ a v a 運(yùn) 行 時(shí) 環(huán) 境J a v a R u n t i m e E n v i r o n m e n tJ a v a 虛 擬 機(jī) J V MJ a v a V i r t u a l M a c h i n e運(yùn) 行 環(huán) 境R u n t i m e E n v i r o n m e n t Java應(yīng)用程序執(zhí)行過程 ?加載就是把二進(jìn)制形式的字節(jié)碼讀入虛擬機(jī)中。加載過程是由類加載器完成的,該加載器是ClassLoader的子類。 ?鏈接是取得加載的類或接口,并將其與 JVM運(yùn)行時(shí)環(huán)境結(jié)合起來,以準(zhǔn)備執(zhí)行的過程,這個(gè)過程包括檢驗(yàn),準(zhǔn)備和解析三個(gè)步驟。 ?如果類存在對(duì)非 final靜態(tài)變量的賦值,或者 static代碼段,在編譯時(shí)會(huì)隱式生成一個(gè) cinit()方法,即初始化執(zhí)行的方法體。 開 始結(jié) 束H e l l o W o r l d A p p類 裝 載 了 嗎C l a s s L o a d e r順 利 嗎鏈 接初 始 化拋 出 異 常調(diào) 用 H e l l o W o r l d A p p . m a i n ( )NYNY Java虛擬機(jī) 不同的操作系統(tǒng)有不同的虛擬機(jī)。它類似一個(gè)小巧而高效的 CPU。 Bytecode代碼是與平臺(tái)無關(guān)的是虛擬機(jī)的機(jī)器指令。Java字節(jié)代碼運(yùn)行的兩種方式 : ?Interpreter(解釋方式 ) ?Justintime(即時(shí)編譯 ):有代碼生成器將字節(jié)代碼轉(zhuǎn)換成本機(jī)的機(jī)器代碼,然后可以以較高速度執(zhí)行 . 類 加 載 器C l a s s L o a d e r字 節(jié) 代 碼 解 釋 器安 全 管 理 器垃 圾 收 集 器操 作 系 統(tǒng)線 程 管 理圖 形虛擬機(jī)的任務(wù) ?提供垃圾回收功能 ?提供運(yùn)行時(shí)環(huán)境 ?提供中立的體系結(jié)構(gòu) JVM運(yùn)行時(shí)的數(shù)據(jù)區(qū)結(jié)構(gòu) 方法區(qū) ?方法區(qū)是由所有 JVM線程共享的一個(gè)公共存儲(chǔ)區(qū)。方法區(qū)存儲(chǔ)類的裝基本信息、常量池、靜態(tài)變量、字段信息、方法信息、一個(gè)到類 ClassLoader的引用,一個(gè)到 Class類的引用。 類 加 載 器C l a s s L o a d e r方 法 區(qū)堆執(zhí) 行 引 擎棧寄 存 器常 量 池運(yùn) 行 時(shí) 數(shù) 據(jù) 區(qū)堆 堆是一個(gè)自由內(nèi)存區(qū)域,常用于內(nèi)存的動(dòng)態(tài)分配或臨時(shí)分配。堆是一種運(yùn)行時(shí)數(shù)據(jù)區(qū),為類和數(shù)組對(duì)象提供內(nèi)存。JVM在啟動(dòng)時(shí)創(chuàng)建堆,然后當(dāng) Java中創(chuàng)建類或數(shù)組對(duì)象時(shí),就從堆中分配所需內(nèi)存。當(dāng)對(duì)象或數(shù)組不再存在后,由一個(gè)稱為垃圾收集的自動(dòng)存儲(chǔ)管理系統(tǒng)來回收堆內(nèi)存 。 棧 每一個(gè)線程都有自己私有的一個(gè) JAVA棧,任何線程不能調(diào)用其它線程的棧, Java的棧幀用于存儲(chǔ)方法調(diào)用的狀態(tài)。 當(dāng)線程調(diào)用一個(gè)方法的時(shí)候, JVM會(huì)在該線程的 JAVA棧上壓入一個(gè)新幀。自然該幀成為當(dāng)前幀,在執(zhí)行該方法期間,線程用該幀來儲(chǔ)存參數(shù),局部變量和中間運(yùn)算結(jié)果等。 JAVA方法執(zhí)行有兩種情況,一種是正常執(zhí)行完成 return,另一種是異常拋出中止。虛擬機(jī)都會(huì)將當(dāng)前的棧幀出棧。 常用開發(fā)工具 常用開發(fā)工具 ?Eclipse(MyEclipse) ?BEA WorkShop ?Intellij IDEA ?Sun NetBeans ?Borland JBuilder 作業(yè) ?Java應(yīng)用程序從那個(gè)方法開始執(zhí)行? ?()有什么作用? ?參考 Dog的類,嘗試定義一個(gè) Car類 復(fù)習(xí)要點(diǎn) Java的特性 ?體系結(jié)構(gòu)中立 ?字節(jié)碼 (ByteCodes), JVM+OS ?健壯 ?去掉了指針 ?安全 ?加入了垃圾回收、異常處理機(jī)制、透明的類的內(nèi)存分配和布局等 ?可移植性 ?自身重力的代碼結(jié)構(gòu) 應(yīng)用平臺(tái) ?Java SE、 Java EE、 Java ME JDK開發(fā)工具 ?可以完成開發(fā)、部署和執(zhí)行 Java應(yīng)用程序 ?由 Java程序語言、工具及工具的 API、 Java的平臺(tái), Java的標(biāo)準(zhǔn)版類庫(kù)、部署技術(shù)、 JVM ?掌握 、 、 、 javadoc和 jar等主要工具的用法 Java語言 ?基本構(gòu)造單位是類 ?程序庫(kù)的主要類型包括:用戶接口工具組 (GUI)、整合程序庫(kù) (RMI、JDBC、 JNDI等 )、其他基本程序庫(kù) (安全、國(guó)際化等 )以及語言和工具基本程序庫(kù) (lang和 util屬于核心類庫(kù) ) ?了解程序庫(kù)中主要 package的作用以及包下典型的類 JDK的部署技術(shù) ?Java plugin(Applet)和 Java Web Start( Java Network Launching Protocol)部署桌面程序 JVM ?JVM是可運(yùn)行 Java字節(jié)碼的虛擬計(jì)算機(jī),由一些編譯好的class組成。 ?不同的硬件或操作系統(tǒng)平臺(tái)上有不同的 JVM ?三個(gè)主要任務(wù):裝載程序 (類裝載器,本地類有先 )、檢驗(yàn)程序 (字節(jié)碼檢驗(yàn)器 )和執(zhí)行程序 Java HotSpotTM虛擬機(jī) ?第一代的 JVM解釋執(zhí)行字節(jié)碼 ?現(xiàn)在的 JVM支持動(dòng)態(tài)編譯,而且可動(dòng)態(tài)識(shí)別那些被稱為HotSpot的可重復(fù)執(zhí)行的代碼,并對(duì)他們加以優(yōu)化,提高程序執(zhí)行速度、縮短啟動(dòng)時(shí)間和優(yōu)化內(nèi)存分配 JRE ?他是 JDK的子集,不包含 JDK中的部署技術(shù) CLASSPATH和 PATH的設(shè)置 ?理解系統(tǒng)環(huán)境變量的作用和配置過程 ?.的作用 ?命令行中的對(duì)應(yīng)參數(shù) 簡(jiǎn)單 Java應(yīng)用程序的結(jié)構(gòu) ?有類構(gòu)成 ?包含 main()方法 ?程序的基本格式以及規(guī)則 ?編譯