版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Java技術(shù)與應用主講人:孫鑫/1精選2021版課件Java的起源
Java來自于Sun公司的一個叫Green的項目,其原先的目的是為家用消費電子產(chǎn)品開發(fā)一個分布式代碼系統(tǒng),這樣我們可以把E-mail發(fā)給電冰箱、電視機等家用電器,對它們進行控制,和它們進行信息交流。開始,準備采用C++,但C++太復雜,安全性差,最后基于C++開發(fā)了一種新的語言O(shè)ak(Java的前身),Oak是一種用于網(wǎng)絡(luò)的精巧而安全的語言,Sun公司曾以此投標一個交互式電視項目,但結(jié)果被SGI打敗??蓱z的Oak幾乎無家可歸,恰巧這時MarkArdreesen開發(fā)的Mosaic和Netscape啟發(fā)了Oak項目組成員,他們用Java編制了HotJava瀏覽器,得到了Sun公司首席執(zhí)行官ScottMcNealy的支持,觸發(fā)了Java進軍Internet。Java的取名也有一則趣聞,有一天,幾位Java成員組的會員正在討論給這個新的語言取什么名字,當時他們正在咖啡館喝著Java(爪哇)咖啡,有一個人靈機一動說就叫Java怎樣,得到了其他人的贊賞,于是,Java這個名字就這樣傳開了。Java的起源
Download:2精選2021版課件我們?yōu)槭裁匆肑ava因為Java是簡單的面向?qū)ο蟮慕训陌踩慕忉尩呐c平臺無關(guān)的多線程的動態(tài)的語言
Download:3精選2021版課件我們?yōu)槭裁匆肑ava簡單的
Java最初是為對家用電器進行集成控制而設(shè)計的一種語言,因此它必須簡單明了。Java語言的簡單性主要體現(xiàn)在三個方面:
1、Java的風格類似于C++,因而C++程序員初次接觸Java語言,就會感到很熟悉。從某種意義上講,Java語言是C及C++語言的一個變種,因此,C++程序員可以很快地掌握Java編程技術(shù)。
2、Java摒棄了C++中容易引發(fā)程序錯誤的一些特性,如指針、結(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è)計是完全面向?qū)ο蟮?它不支持類似C語言那樣的面向過程的程序設(shè)計技術(shù)。
Download:5精選2021版課件我們?yōu)槭裁匆肑ava健壯的
Java致力于檢查程序在編譯和運行時的錯誤。Java也是一種強類型的語言,其類型檢查比C++還要嚴格。類型檢查幫助我們檢查出許多開發(fā)早期出現(xiàn)的錯誤。Java自己負責內(nèi)存管理,提供了垃圾內(nèi)存回收機制,有效的避免了C++中最頭疼的內(nèi)存泄漏問題。
Download:6精選2021版課件我們?yōu)槭裁匆肑ava安全的
Java的安全性可從兩個方面得到保證。一方
面,在Java語言里,刪除了指針和釋放內(nèi)存等C++功能,避免了非法內(nèi)存操作。另一方面,通過Java的安全體系架構(gòu)來確保Java代碼的安全性。當我們從網(wǎng)上下載Java代碼在本地執(zhí)行時,Java的安全架構(gòu)能確保惡意的代碼不能隨意訪問我們本地計算機的資源,例如:刪除文件,訪問本地網(wǎng)絡(luò)資源等操作都是被禁止的。
Download:7精選2021版課件我們?yōu)槭裁匆肑ava解釋的
Java代碼是解釋執(zhí)行的,我們使用Java編譯器將Java代碼編譯成字節(jié)碼,這是一種中間代碼,然后由Java解釋器解釋執(zhí)行。而C++程序是編譯執(zhí)行的,C++程序代碼被編譯為本地機器指令,然后執(zhí)行。
Download:8精選2021版課件我們?yōu)槭裁匆肑ava與平臺無關(guān)的
Java作為一種網(wǎng)絡(luò)語言,其源代碼被編譯成一種結(jié)構(gòu)中立的中間文件格式。只要有Java運行系統(tǒng)的機器都能執(zhí)行這種中間代碼。Java源程序被編譯成一種與機器無關(guān)的字節(jié)碼格式,在Java虛擬機上運行。
Download:9精選2021版課件我們?yōu)槭裁匆肑ava多線程的
Java語言的一個重要特性就是在語言級支持多線程的程序設(shè)計。多線程就好像我們做一張桌子,如果你一個人完成這張桌子—就好像單線程,那么你需要先做桌面,做完桌面后,再做4個桌子腿,如果現(xiàn)在有5個人來做桌子—在程序中開辟5個線程,其中1個人做桌面,另外4個人分別做4個桌子腿,那么這兩種方式效率的高低,相信大家都能區(qū)分出來。
Download:10精選2021版課件我們?yōu)槭裁匆肑ava動態(tài)的
Java的動態(tài)特性是其面向?qū)ο笤O(shè)計方法的擴展。它允許程序動態(tài)地裝入運行過程中所需要的類,這是我們采用C++語言進行面向?qū)ο蟪绦蛟O(shè)計所無法實現(xiàn)的。在C++程序設(shè)計過程中,每當在類中增加一個實例變量或一個成員函數(shù)后,
引用該類的所有子類都必須重新編譯,否則將導致程序崩潰。Java從以下幾個方面采取措施來解決這個問題。Java編譯器不是將對實例變量和成員函數(shù)的引用編譯為數(shù)值引用,而是將符號引用信息在字節(jié)碼中保存下來,傳遞給解釋器,再由解釋器在完成動態(tài)連接類后,將符號引用信息轉(zhuǎn)換為數(shù)值偏移量。一個在存儲器中生成的對象不在編譯過程中決定,而是延遲到運行時由解釋器確定。這樣,對類中的變量和方法進行更新時就不至于影響現(xiàn)存的代碼。
解釋執(zhí)行字節(jié)碼時,這種符號信息的查找和轉(zhuǎn)換過程僅在一個新的名字出現(xiàn)時才進行一次,隨后代碼便可以全速執(zhí)行。在運行時確定引用的好處是可以使用已被更新的類,而不必擔心會影響原有的代碼。如果程序連接了網(wǎng)絡(luò)中另一系統(tǒng)中的某一類,該類的所有者也可以自由地對該類進行更新,而不會使任何引用該類的程序崩潰。Java還簡化了使用一個升級的或全新協(xié)議的方法。如果你的系統(tǒng)運行Java程序時遇到了不知怎樣處理的程序,Java能自動下載你所需要的功能程序。
Download:11精選2021版課件Java跨平臺的原理
Java的跨平臺是通過Java虛擬機(JVM)來實現(xiàn)的。
Download:12精選2021版課件Java跨平臺的原理Java源文件的編譯過程Java應用程序的開發(fā)周期包括編譯、下載、解釋和執(zhí)行幾個部分。Java編譯程序?qū)ava源程序翻譯為JVM可執(zhí)行代碼—字節(jié)碼。這一編譯過程同C/C++的編譯有些不同。當C編譯器編譯生成一個對象的代碼時,該代碼是為在某一特定硬件平臺運行而產(chǎn)生的。因此,在編譯過程中,編譯程序通過查表將所有對符號的引用轉(zhuǎn)換為特定的內(nèi)存偏移量,以保證程序運行。Java編譯器卻不將對變量和方法的引用編譯為數(shù)值引用,也不確定程序執(zhí)行過程中的內(nèi)存布局,而是將這些符號引用信息保留在字節(jié)碼中,由解釋器在運行過程中創(chuàng)建內(nèi)存布局,然后再通過查表來確定一個方法所在的地址。這樣就有效的保證了Java的可移植性和安全性。
Download:13精選2021版課件Java跨平臺的原理Java解釋器的執(zhí)行過程
運行JVM字節(jié)碼的工作是由解釋器來完成的。解釋執(zhí)行過程分三步進行:代碼的裝入、代碼的校驗和代碼的執(zhí)行。裝入代碼的工作由“類裝載器”(classloader)完成。類裝載器負責裝入運行一個程序需要的所有代碼,這也包括程序代碼中的類所繼承的類和被其調(diào)用的類。當類裝載器裝入一個類時,該類被放在自己的名字空間中。除了通過符號引用自己名字空間以外的類,類之間沒有其他辦法可以影響其它類。在本臺計算機上的所有類都在同一地址空間內(nèi),而所有從外部引進的類,都有一個自己獨立的名字空間。這使得本地類通過共享相同的名字空間獲得較高的運行效率,同時又保證它們與從外部引進的類不會相互影響。當裝入了運行程序需要的所有類后,解釋器便可確定整個可執(zhí)行程序的內(nèi)存布局。解釋器為符號引用同特定的地址空間建立對應關(guān)系及查詢表。通過在這一階段確定代碼的內(nèi)存布局,Java很好地解決了由超類改變而使子類崩潰的問題,同時也防止了代碼對地址的非法訪問。隨后,被裝入的代碼由字節(jié)碼校驗器進行檢查。校驗器可發(fā)現(xiàn)操作數(shù)棧溢出,非法數(shù)據(jù)類型轉(zhuǎn)換等多種錯誤。通過校驗后,代碼便開始執(zhí)行了。
Download:14精選2021版課件Java跨平臺的原理Java字節(jié)碼的兩種執(zhí)行方式1、即時編譯方式:解釋器先將字節(jié)碼編譯成機器碼,然后再執(zhí)行該機器碼。
2、解釋執(zhí)行方式:解釋器通過每次解釋并執(zhí)行一小段代碼來完成Java字節(jié)碼程序的所有操作。
通常采用的是第二種方法。由于JVM規(guī)格描述具有足夠的靈活性,這使得將字節(jié)碼翻譯為機器代碼的工作具有較高的效率。對于那些對運行速度要求較高的應用程序,解釋器可將Java字節(jié)碼即時編譯為機器碼,從而很好地保證了Java代碼的可移植性和高性能。
Download:15精選2021版課件Java跨平臺的原理JVM規(guī)格描述JVM的設(shè)計目標是提供一個基于抽象規(guī)格描述的計算機模型,為解釋程序開發(fā)人員提供很好的靈活性,同時也確保Java代碼可在符合該規(guī)范的任何系統(tǒng)上運行。JVM對其實現(xiàn)的某些方面給出了具體的定義,特別是對Java可執(zhí)行代碼,即字節(jié)碼(Bytecode)的格式給出了明確的規(guī)格。這一規(guī)格包括操作碼和操作數(shù)的語法和數(shù)值、標識符的數(shù)值表示方式、以及Java類文件中的Java對象、常量緩沖池在JVM的存儲映象。這些定義為JVM解釋器開發(fā)人員提供了所需的信息和開發(fā)環(huán)境。Java的設(shè)計者希望給開發(fā)人員以隨心所欲使用Java的自由。
JVM是為Java字節(jié)碼定義的一種獨立于具體平臺的規(guī)格描述,是Java平臺獨立性的基礎(chǔ)。
Download:16精選2021版課件Java跨平臺的原理Java程序執(zhí)行與C/C++程序執(zhí)行的對比分析如果把Java源程序想象成我們的C++源程序,Java源程序編譯后生成的字節(jié)碼就相當于C++源程序編譯后的80x86的機器碼(二進制程序文件),JVM虛擬機相當于80x86計算機系統(tǒng),Java解釋器相當于80x86CPU。在80x86CPU上運行的是機器碼,在Java解釋器上運行的是Java字節(jié)碼。Java解釋器相當于運行Java字節(jié)碼的“CPU”,但該“CPU”不是通過硬件實現(xiàn)的,而是用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年式廚房設(shè)備購買與租賃合同
- 2024年企業(yè)間借貸合同
- 2024年新式企業(yè)融資協(xié)議
- DB4115T 052-2018 信陽傳統(tǒng)風味小吃烹飪技藝 粉條饃
- DB4107T 492-2022 玉米病蟲草害綜合防治技術(shù)規(guī)范
- 2024年房地產(chǎn)中介居間買賣合同
- 2024年文物建筑加固保護施工合同
- 2024年房地產(chǎn)咨詢服務與代理協(xié)議
- 2024年 edition 城市綜合體開發(fā)投資合同
- 2024年新式商業(yè)合作條款
- 產(chǎn)前篩查規(guī)范化流程和質(zhì)量控制--ppt課件
- 嬰幼兒傷害預防與處理習題庫
- 百度投訴保證函
- 2.7-植被與自然環(huán)境的關(guān)系(精品課件)-2020-2021學年高一地理(新教材中圖版必修第一冊)
- 清欠工作管理制度管理辦法
- 三甲評審文件盒資料--終稿
- 鐵路項目橋梁墩臺身施工方案
- 工作崗位風險評估工作規(guī)程
- 智能存包柜(儲物柜)產(chǎn)品技術(shù)說明書
- 電鍍技術(shù)資料大全
- 偏拉墻體配筋分析及建議課件
評論
0/150
提交評論