Java技術(shù)與應(yīng)用課件_第1頁
Java技術(shù)與應(yīng)用課件_第2頁
Java技術(shù)與應(yīng)用課件_第3頁
Java技術(shù)與應(yīng)用課件_第4頁
Java技術(shù)與應(yīng)用課件_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論