版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Java技術(shù)與應(yīng)用主講人:孫鑫/1精選2021版課件Java的起源
Java來自于Sun公司的一個(gè)叫Green的項(xiàng)目,其原先的目的是為家用消費(fèi)電子產(chǎn)品開發(fā)一個(gè)分布式代碼系統(tǒng),這樣我們可以把E-mail發(fā)給電冰箱、電視機(jī)等家用電器,對它們進(jìn)行控制,和它們進(jìn)行信息交流。開始,準(zhǔn)備采用C++,但C++太復(fù)雜,安全性差,最后基于C++開發(fā)了一種新的語言O(shè)ak(Java的前身),Oak是一種用于網(wǎng)絡(luò)的精巧而安全的語言,Sun公司曾以此投標(biāo)一個(gè)交互式電視項(xiàng)目,但結(jié)果被SGI打敗??蓱z的Oak幾乎無家可歸,恰巧這時(shí)MarkArdreesen開發(fā)的Mosaic和Netscape啟發(fā)了Oak項(xiàng)目組成員,他們用Java編制了HotJava瀏覽器,得到了Sun公司首席執(zhí)行官ScottMcNealy的支持,觸發(fā)了Java進(jìn)軍Internet。Java的取名也有一則趣聞,有一天,幾位Java成員組的會員正在討論給這個(gè)新的語言取什么名字,當(dāng)時(shí)他們正在咖啡館喝著Java(爪哇)咖啡,有一個(gè)人靈機(jī)一動說就叫Java怎樣,得到了其他人的贊賞,于是,Java這個(gè)名字就這樣傳開了。Java的起源
Download:2精選2021版課件我們?yōu)槭裁匆肑ava因?yàn)镴ava是簡單的面向?qū)ο蟮慕训陌踩慕忉尩呐c平臺無關(guān)的多線程的動態(tài)的語言
Download:3精選2021版課件我們?yōu)槭裁匆肑ava簡單的
Java最初是為對家用電器進(jìn)行集成控制而設(shè)計(jì)的一種語言,因此它必須簡單明了。Java語言的簡單性主要體現(xiàn)在三個(gè)方面:
1、Java的風(fēng)格類似于C++,因而C++程序員初次接觸Java語言,就會感到很熟悉。從某種意義上講,Java語言是C及C++語言的一個(gè)變種,因此,C++程序員可以很快地掌握J(rèn)ava編程技術(shù)。
2、Java摒棄了C++中容易引發(fā)程序錯(cuò)誤的一些特性,如指針、結(jié)構(gòu)、枚舉以及內(nèi)存管理等。
3、Java提供了豐富的類庫,可以幫助我們很方便的開發(fā)Java程序。
Download:4精選2021版課件我們?yōu)槭裁匆肑ava面向?qū)ο蟮?/p>
面向?qū)ο罂梢哉f是Java最重要的特性,所以它支持繼承、重載、多態(tài)等面向?qū)ο蟮奶匦?。Java語言的設(shè)計(jì)是完全面向?qū)ο蟮?它不支持類似C語言那樣的面向過程的程序設(shè)計(jì)技術(shù)。
Download:5精選2021版課件我們?yōu)槭裁匆肑ava健壯的
Java致力于檢查程序在編譯和運(yùn)行時(shí)的錯(cuò)誤。Java也是一種強(qiáng)類型的語言,其類型檢查比C++還要嚴(yán)格。類型檢查幫助我們檢查出許多開發(fā)早期出現(xiàn)的錯(cuò)誤。Java自己負(fù)責(zé)內(nèi)存管理,提供了垃圾內(nèi)存回收機(jī)制,有效的避免了C++中最頭疼的內(nèi)存泄漏問題。
Download:6精選2021版課件我們?yōu)槭裁匆肑ava安全的
Java的安全性可從兩個(gè)方面得到保證。一方
面,在Java語言里,刪除了指針和釋放內(nèi)存等C++功能,避免了非法內(nèi)存操作。另一方面,通過Java的安全體系架構(gòu)來確保Java代碼的安全性。當(dāng)我們從網(wǎng)上下載Java代碼在本地執(zhí)行時(shí),Java的安全架構(gòu)能確保惡意的代碼不能隨意訪問我們本地計(jì)算機(jī)的資源,例如:刪除文件,訪問本地網(wǎng)絡(luò)資源等操作都是被禁止的。
Download:7精選2021版課件我們?yōu)槭裁匆肑ava解釋的
Java代碼是解釋執(zhí)行的,我們使用Java編譯器將Java代碼編譯成字節(jié)碼,這是一種中間代碼,然后由Java解釋器解釋執(zhí)行。而C++程序是編譯執(zhí)行的,C++程序代碼被編譯為本地機(jī)器指令,然后執(zhí)行。
Download:8精選2021版課件我們?yōu)槭裁匆肑ava與平臺無關(guān)的
Java作為一種網(wǎng)絡(luò)語言,其源代碼被編譯成一種結(jié)構(gòu)中立的中間文件格式。只要有Java運(yùn)行系統(tǒng)的機(jī)器都能執(zhí)行這種中間代碼。Java源程序被編譯成一種與機(jī)器無關(guān)的字節(jié)碼格式,在Java虛擬機(jī)上運(yùn)行。
Download:9精選2021版課件我們?yōu)槭裁匆肑ava多線程的
Java語言的一個(gè)重要特性就是在語言級支持多線程的程序設(shè)計(jì)。多線程就好像我們做一張桌子,如果你一個(gè)人完成這張桌子—就好像單線程,那么你需要先做桌面,做完桌面后,再做4個(gè)桌子腿,如果現(xiàn)在有5個(gè)人來做桌子—在程序中開辟5個(gè)線程,其中1個(gè)人做桌面,另外4個(gè)人分別做4個(gè)桌子腿,那么這兩種方式效率的高低,相信大家都能區(qū)分出來。
Download:10精選2021版課件我們?yōu)槭裁匆肑ava動態(tài)的
Java的動態(tài)特性是其面向?qū)ο笤O(shè)計(jì)方法的擴(kuò)展。它允許程序動態(tài)地裝入運(yùn)行過程中所需要的類,這是我們采用C++語言進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)所無法實(shí)現(xiàn)的。在C++程序設(shè)計(jì)過程中,每當(dāng)在類中增加一個(gè)實(shí)例變量或一個(gè)成員函數(shù)后,
引用該類的所有子類都必須重新編譯,否則將導(dǎo)致程序崩潰。Java從以下幾個(gè)方面采取措施來解決這個(gè)問題。Java編譯器不是將對實(shí)例變量和成員函數(shù)的引用編譯為數(shù)值引用,而是將符號引用信息在字節(jié)碼中保存下來,傳遞給解釋器,再由解釋器在完成動態(tài)連接類后,將符號引用信息轉(zhuǎn)換為數(shù)值偏移量。一個(gè)在存儲器中生成的對象不在編譯過程中決定,而是延遲到運(yùn)行時(shí)由解釋器確定。這樣,對類中的變量和方法進(jìn)行更新時(shí)就不至于影響現(xiàn)存的代碼。
解釋執(zhí)行字節(jié)碼時(shí),這種符號信息的查找和轉(zhuǎn)換過程僅在一個(gè)新的名字出現(xiàn)時(shí)才進(jìn)行一次,隨后代碼便可以全速執(zhí)行。在運(yùn)行時(shí)確定引用的好處是可以使用已被更新的類,而不必?fù)?dān)心會影響原有的代碼。如果程序連接了網(wǎng)絡(luò)中另一系統(tǒng)中的某一類,該類的所有者也可以自由地對該類進(jìn)行更新,而不會使任何引用該類的程序崩潰。Java還簡化了使用一個(gè)升級的或全新協(xié)議的方法。如果你的系統(tǒng)運(yùn)行Java程序時(shí)遇到了不知怎樣處理的程序,Java能自動下載你所需要的功能程序。
Download:11精選2021版課件Java跨平臺的原理
Java的跨平臺是通過Java虛擬機(jī)(JVM)來實(shí)現(xiàn)的。
Download:12精選2021版課件Java跨平臺的原理Java源文件的編譯過程Java應(yīng)用程序的開發(fā)周期包括編譯、下載、解釋和執(zhí)行幾個(gè)部分。Java編譯程序?qū)ava源程序翻譯為JVM可執(zhí)行代碼—字節(jié)碼。這一編譯過程同C/C++的編譯有些不同。當(dāng)C編譯器編譯生成一個(gè)對象的代碼時(shí),該代碼是為在某一特定硬件平臺運(yùn)行而產(chǎn)生的。因此,在編譯過程中,編譯程序通過查表將所有對符號的引用轉(zhuǎn)換為特定的內(nèi)存偏移量,以保證程序運(yùn)行。Java編譯器卻不將對變量和方法的引用編譯為數(shù)值引用,也不確定程序執(zhí)行過程中的內(nèi)存布局,而是將這些符號引用信息保留在字節(jié)碼中,由解釋器在運(yùn)行過程中創(chuàng)建內(nèi)存布局,然后再通過查表來確定一個(gè)方法所在的地址。這樣就有效的保證了Java的可移植性和安全性。
Download:13精選2021版課件Java跨平臺的原理Java解釋器的執(zhí)行過程
運(yùn)行JVM字節(jié)碼的工作是由解釋器來完成的。解釋執(zhí)行過程分三步進(jìn)行:代碼的裝入、代碼的校驗(yàn)和代碼的執(zhí)行。裝入代碼的工作由“類裝載器”(classloader)完成。類裝載器負(fù)責(zé)裝入運(yùn)行一個(gè)程序需要的所有代碼,這也包括程序代碼中的類所繼承的類和被其調(diào)用的類。當(dāng)類裝載器裝入一個(gè)類時(shí),該類被放在自己的名字空間中。除了通過符號引用自己名字空間以外的類,類之間沒有其他辦法可以影響其它類。在本臺計(jì)算機(jī)上的所有類都在同一地址空間內(nèi),而所有從外部引進(jìn)的類,都有一個(gè)自己獨(dú)立的名字空間。這使得本地類通過共享相同的名字空間獲得較高的運(yùn)行效率,同時(shí)又保證它們與從外部引進(jìn)的類不會相互影響。當(dāng)裝入了運(yùn)行程序需要的所有類后,解釋器便可確定整個(gè)可執(zhí)行程序的內(nèi)存布局。解釋器為符號引用同特定的地址空間建立對應(yīng)關(guān)系及查詢表。通過在這一階段確定代碼的內(nèi)存布局,Java很好地解決了由超類改變而使子類崩潰的問題,同時(shí)也防止了代碼對地址的非法訪問。隨后,被裝入的代碼由字節(jié)碼校驗(yàn)器進(jìn)行檢查。校驗(yàn)器可發(fā)現(xiàn)操作數(shù)棧溢出,非法數(shù)據(jù)類型轉(zhuǎn)換等多種錯(cuò)誤。通過校驗(yàn)后,代碼便開始執(zhí)行了。
Download:14精選2021版課件Java跨平臺的原理Java字節(jié)碼的兩種執(zhí)行方式1、即時(shí)編譯方式:解釋器先將字節(jié)碼編譯成機(jī)器碼,然后再執(zhí)行該機(jī)器碼。
2、解釋執(zhí)行方式:解釋器通過每次解釋并執(zhí)行一小段代碼來完成Java字節(jié)碼程序的所有操作。
通常采用的是第二種方法。由于JVM規(guī)格描述具有足夠的靈活性,這使得將字節(jié)碼翻譯為機(jī)器代碼的工作具有較高的效率。對于那些對運(yùn)行速度要求較高的應(yīng)用程序,解釋器可將Java字節(jié)碼即時(shí)編譯為機(jī)器碼,從而很好地保證了Java代碼的可移植性和高性能。
Download:15精選2021版課件Java跨平臺的原理JVM規(guī)格描述JVM的設(shè)計(jì)目標(biāo)是提供一個(gè)基于抽象規(guī)格描述的計(jì)算機(jī)模型,為解釋程序開發(fā)人員提供很好的靈活性,同時(shí)也確保Java代碼可在符合該規(guī)范的任何系統(tǒng)上運(yùn)行。JVM對其實(shí)現(xiàn)的某些方面給出了具體的定義,特別是對Java可執(zhí)行代碼,即字節(jié)碼(Bytecode)的格式給出了明確的規(guī)格。這一規(guī)格包括操作碼和操作數(shù)的語法和數(shù)值、標(biāo)識符的數(shù)值表示方式、以及Java類文件中的Java對象、常量緩沖池在JVM的存儲映象。這些定義為JVM解釋器開發(fā)人員提供了所需的信息和開發(fā)環(huán)境。Java的設(shè)計(jì)者希望給開發(fā)人員以隨心所欲使用Java的自由。
JVM是為Java字節(jié)碼定義的一種獨(dú)立于具體平臺的規(guī)格描述,是Java平臺獨(dú)立性的基礎(chǔ)。
Download:16精選2021版課件Java跨平臺的原理Java程序執(zhí)行與C/C++程序執(zhí)行的對比分析如果把Java源程序想象成我們的C++源程序,Java源程序編譯后生成的字節(jié)碼就相當(dāng)于C++源程序編譯后的80x86的機(jī)器碼(二進(jìn)制程序文件),JVM虛擬機(jī)相當(dāng)于80x86計(jì)算機(jī)系統(tǒng),Java解釋器相當(dāng)于80x86CPU。在80x86CPU上運(yùn)行的是機(jī)器碼,在Java解釋器上運(yùn)行的是Java字節(jié)碼。Java解釋器相當(dāng)于運(yùn)行Java字節(jié)碼的“CPU”,但該“CPU”不是通過硬件實(shí)現(xiàn)的,而是用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 吉林工商學(xué)院《音樂圖像學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南女子學(xué)院《綜藝主持》2023-2024學(xué)年第一學(xué)期期末試卷
- 黑龍江農(nóng)墾職業(yè)學(xué)院《草書》2023-2024學(xué)年第一學(xué)期期末試卷
- 高考物理總復(fù)習(xí)《電容器帶電粒子在電場中的運(yùn)動》專項(xiàng)測試卷含答案
- 鄭州城市職業(yè)學(xué)院《管理科學(xué)與工程學(xué)科論文寫作指導(dǎo)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院《影視攝像技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 小學(xué)學(xué)校微信公眾號信息發(fā)布工作制度
- 浙江財(cái)經(jīng)大學(xué)《基礎(chǔ)醫(yī)學(xué)概論Ⅱ3(微生物學(xué))》2023-2024學(xué)年第一學(xué)期期末試卷
- 張家口職業(yè)技術(shù)學(xué)院《法務(wù)談判與技巧》2023-2024學(xué)年第一學(xué)期期末試卷
- 缺陷管理與風(fēng)險(xiǎn)評估實(shí)施細(xì)則
- AQ 6111-2023個(gè)體防護(hù)裝備安全管理規(guī)范知識培訓(xùn)
- 老干工作業(yè)務(wù)培訓(xùn)
- 基底節(jié)腦出血護(hù)理查房
- 高中語文《勸學(xué)》課件三套
- 人教版八年級物理-第二章:聲現(xiàn)象復(fù)習(xí)完整課件
- 直播代運(yùn)營服務(wù)合同范本版
- 2024年江蘇蘇州中考數(shù)學(xué)試卷及答案
- 2024年山東省高中自主招生數(shù)學(xué)模擬試卷試題(含答案)
- 算術(shù)平方根2課件
- 【人教版】九年級化學(xué)上冊期末試卷及答案【【人教版】】
- 四年級數(shù)學(xué)上冊期末試卷及答案【可打印】
評論
0/150
提交評論