




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第1章Java導(dǎo)論
*Java面向?qū)ο蟪绦蛟O(shè)計教程2主要內(nèi)容1.1Java語言的特點1.1.1簡單的面向?qū)ο蟪绦蛟O(shè)計語言1.1.2健壯安全的分布式語言1.1.3結(jié)構(gòu)中立、可移植性強的解釋型語言1.1.4高效能1.1.5支持多線程的動態(tài)語言1.1.6Java與幾種常用語言的比較1.2Java執(zhí)行環(huán)境1.2.1JVM機制——Java平臺的基礎(chǔ)1.2.2自動垃圾收集1.2.3保護(hù)域機制與沙箱模型1.2.4類加載器——啟動引擎的點火器1.3JDK的組成與安裝設(shè)置1.3.1Java平臺的組成結(jié)構(gòu)1.3.2SETPATH和SETCLASSPATH的作用1.3.3Java開發(fā)平臺簡介1.4典型例子及常見問題1.4.1編譯器、解釋器、小程序觀察器和反編譯器1.4.2簡單的“HelloWorld!”例子1.4.3應(yīng)用程序的主方法1.4.4小程序的運行1.1Java語言的特點*Java面向?qū)ο蟪绦蛟O(shè)計教程4Java的由來1991年初,SunMicrosystems公司設(shè)立一項較大規(guī)模“消費者電子產(chǎn)品先進(jìn)軟件發(fā)展項目”,該項目是為了發(fā)展小型、可靠、可移植、分布式、實時的嵌入式系統(tǒng)。
項目小組開發(fā)了一種與平臺無關(guān)的新語言,命名為“Oak”。其靈感來源于項目主持人JamesGosling辦公室外的一棵橡樹(Oak),它就是Java語言的前身。
但因Oak名稱與其它產(chǎn)品雷同,最后將開發(fā)的新語言取名為“Java”。據(jù)說是項目小組成員經(jīng)常在公司附近一家咖啡廳喝咖啡,因此把咖啡原產(chǎn)地Java作為新語言的名稱。1995年,SunMicrosystems公司正式發(fā)布Java產(chǎn)品。
*Java面向?qū)ο蟪绦蛟O(shè)計教程5與Java有關(guān)的一些圖片Java的標(biāo)識Java的吉祥物DukeJava之父JamesGosling*Java面向?qū)ο蟪绦蛟O(shè)計教程6Java語言的特點
在Java語言白皮書中,Java被描述為“是一種簡單、面向?qū)ο蟆⒎植际?、解釋、健壯、安全、結(jié)構(gòu)中立、可移植、高效能、多線程、動態(tài)的語言。Asimple,object-oriented,network-savvy,interpreted,robust,secure,architectureneutral,portable,high-performance,multithreaded,dynamiclanguage。
—JamesGosling,HenryMcGilton.TheJava?LanguageEnvironment,AWhitePaper.
*Java面向?qū)ο蟪绦蛟O(shè)計教程7簡單的面向?qū)ο蟪绦蛟O(shè)計語言
“爪哇”——Java總給人以小巧玲瓏
和C++很相近,但刪除許多極少被使用、不容易理解和令人混淆的C++功能,主要包括運算符重載、多重繼承以及廣泛的自動強迫同型。
自動垃圾收集(Automaticgarbagecollection)功能,這不僅簡化了Java程序的內(nèi)存分配與釋放工作,而且能大幅度減少程序中的漏洞。
Java程序非常小,對于在嵌入式的系統(tǒng)中使用是很重要的,同時也可以通過網(wǎng)絡(luò)輕易下載。
*Java面向?qū)ο蟪绦蛟O(shè)計教程8健壯安全的分布式語言
Java擁有廣泛的能輕易處理TCP/IP協(xié)議(如HTTP與FTP等)的類庫,更容易創(chuàng)建網(wǎng)絡(luò)連接。
除了運行時異常檢查外,Java提供了廣泛的編譯時異常檢查,以便盡早的發(fā)現(xiàn)可能存在的錯誤。同時,在Java中對象的創(chuàng)建機制(只能用new操作符)和自動垃圾收集機制大大減少了因內(nèi)存管理不當(dāng)引發(fā)的錯誤。
Java的驗證技術(shù)是以公鑰加密算法為基礎(chǔ)。
*Java面向?qū)ο蟪绦蛟O(shè)計教程9結(jié)構(gòu)中立、可移植性強的解釋型語言
為了讓Java應(yīng)用程序能夠在網(wǎng)絡(luò)上任何地方執(zhí)行,其編譯器會產(chǎn)出一種結(jié)構(gòu)中立的字節(jié)代碼(Bytecode)。字節(jié)代碼可以在提供Java運行時系統(tǒng)的多種不同處理器上面執(zhí)行。
Java嚴(yán)格定義了基本數(shù)據(jù)類型的大小和算術(shù)運算符的行為,因此不存在軟硬件平臺不兼容的情況。
Java系統(tǒng)本身具備相當(dāng)好的移植性。它的編譯器用Java寫成,而Java運行時程序則是參照POSIX(一個可移植接口工業(yè)標(biāo)準(zhǔn))規(guī)格使用ANSIC寫成的。
*Java面向?qū)ο蟪绦蛟O(shè)計教程10高效能
字節(jié)代碼可以動態(tài)地為執(zhí)行應(yīng)用程序的特定CPU解釋成機器碼。字節(jié)代碼格式在設(shè)計上即顧及機器碼的產(chǎn)生,因此實際的機器碼產(chǎn)生程序相當(dāng)簡單。
解釋器運行時不需檢查運行環(huán)境,自動垃圾收集器設(shè)為優(yōu)先級最低后臺線程,以保證內(nèi)存得到更有效的應(yīng)用。
對于運算量很大的程序可以采用原生代碼編寫,再經(jīng)由Java平臺轉(zhuǎn)換。Just-In-Time(JIT)編譯技術(shù)更是讓字節(jié)代碼的執(zhí)行速度大幅度提升。
*Java面向?qū)ο蟪绦蛟O(shè)計教程11支持多線程的動態(tài)語言
在Java核心類庫中包含Thread類,同時Java運行時系統(tǒng)提供了線程監(jiān)視器和同步鎖定機制。多線程的其它優(yōu)點包括更好的交互式回應(yīng)能力與實時執(zhí)行行為。
Java是一種比C或C++更具動態(tài)特性的語言。它在設(shè)計上強調(diào)為進(jìn)化中的運算環(huán)境提供支援。甚至可以在不中斷網(wǎng)絡(luò)服務(wù)的情況下替換相關(guān)的組件。
*Java面向?qū)ο蟪绦蛟O(shè)計教程12Java與幾種常用語言的比較
1.2Java執(zhí)行環(huán)境*Java面向?qū)ο蟪绦蛟O(shè)計教程14Java執(zhí)行環(huán)境
Java源程序(*.java)首先被編譯成字節(jié)代碼(*.class);這些字節(jié)代碼就是Java虛擬機可以解釋的指令集。經(jīng)過安全驗證后字節(jié)代碼進(jìn)入虛擬機,要么經(jīng)由解釋器解釋執(zhí)行,要么由JIT編譯器(也稱為即時代碼生成器)轉(zhuǎn)成機器代碼執(zhí)行,程序中使用到的類則根據(jù)需要動態(tài)加載到內(nèi)存中。Java執(zhí)行環(huán)境由編譯時(Compile-time)和運行時(Runtime)環(huán)境兩部分組成。*Java面向?qū)ο蟪绦蛟O(shè)計教程15JREJVM協(xié)同類加載器、字節(jié)代碼校驗器和Java類庫一起,組成了整個Java運行環(huán)境JRE。
一次編寫隨處運行
(WriteOnceRunAnywhere,WORA)Java虛擬機機制Java虛擬機(JavaVirtualMachine,JVM)是一個類似于真實計算機系統(tǒng)的抽象機(AbstractComputingMachine),它擁有一組指令集,用來解釋“.class”字節(jié)代碼;也就是說,JVM并不認(rèn)識所謂的Java語言,而僅僅能夠讀懂class文件中有限的指令、符號及其他一些輔助信息。它除了負(fù)責(zé)執(zhí)行指令外,還要管理數(shù)據(jù)、內(nèi)存和寄存器。這臺虛擬的機器在任何平臺上都提供給編譯程序一個的共同的接口。編譯程序只需要面向虛擬機,生成虛擬機能夠理解的代碼,然后由解釋器來將虛擬機代碼轉(zhuǎn)換為特定系統(tǒng)的機器碼執(zhí)行。*Java面向?qū)ο蟪绦蛟O(shè)計教程16*Java面向?qū)ο蟪绦蛟O(shè)計教程17JVM的組成執(zhí)行引擎負(fù)責(zé)把字節(jié)代碼導(dǎo)入虛擬機;內(nèi)存管理
負(fù)責(zé)分配內(nèi)存給對象和數(shù)組,并進(jìn)行垃圾收集;錯誤和異常管理
負(fù)責(zé)異常的捕獲或拋出;線程接口
負(fù)責(zé)對線程的支持;對原生方法(NativeMethod)的支持
支持調(diào)用C/C++等語言編寫的方法。
*Java面向?qū)ο蟪绦蛟O(shè)計教程18JVM的理解:機床-數(shù)控機床-虛擬機床數(shù)控機床數(shù)控機床抽象數(shù)控機床可以加工各種形狀的物體原因在于它擁有一個可以能讀懂指令的核心系統(tǒng)MachineVirtualMachine*Java面向?qū)ο蟪绦蛟O(shè)計教程19解釋產(chǎn)品(問題域)編程人員是熟悉的!但數(shù)控系統(tǒng)(JVM)是不認(rèn)識的!!編程人員根據(jù)自己的想法,在相應(yīng)的平臺上編寫出符合產(chǎn)品形狀要求的程序(.java)*Java面向?qū)ο蟪绦蛟O(shè)計教程20解釋這是程序員可以理解的程序(.java),因其是接近自然語言的。但對數(shù)控系統(tǒng)(JVM)來說太復(fù)雜,它是讀不懂的!*Java面向?qū)ο蟪绦蛟O(shè)計教程21解釋于是程序員利用相應(yīng)的平臺把它編譯成數(shù)控系統(tǒng)(JVM)可以理解的程序(.class)于是數(shù)控機床(JVM)動起來啦!產(chǎn)品也做出來啦!可是最終數(shù)控機床(JVM)也沒有明白它做出的產(chǎn)品是什么,只知道走了許許多多的直線或圓弧(JVM指令集)!*Java面向?qū)ο蟪绦蛟O(shè)計教程22示例虛擬的真實的實現(xiàn)代碼移植的一種技術(shù)策略
(為什么要使用Java虛擬機?)*Java面向?qū)ο蟪绦蛟O(shè)計教程23使用Java虛擬機,其技術(shù)路線的本質(zhì)就是改變了編譯型語言環(huán)境把易變的應(yīng)用和相對穩(wěn)定的系統(tǒng)平臺之間直接綁定的做法,通過增加語言環(huán)境的中介接口,實現(xiàn)了易變的應(yīng)用和相對穩(wěn)定的系統(tǒng)平臺之間的松耦合。*Java面向?qū)ο蟪绦蛟O(shè)計教程24保護(hù)域機制與沙箱模型
保護(hù)域(Protectiondomain)是有關(guān)系統(tǒng)安全的基本概念和重要模塊。域界定了作為主體的系統(tǒng)實體對各種對象集直接訪問的被許可程度。保護(hù)域概念提供一種在受保護(hù)單元中分組和隔離不安全因素的便利機制。
*Java面向?qū)ο蟪绦蛟O(shè)計教程25類加載器——啟動引擎的點火器
加載當(dāng)JVM加載類時,它尋找類或接口的二進(jìn)制表示,并從這個二進(jìn)制表示(通常是Java編譯器生成的類文件)生成Class對象。Class對象封裝類或接口的運行時狀態(tài)。鏈接鏈接是取得加載的類或接口,并將其與JVM運行時環(huán)境結(jié)合起來,以準(zhǔn)備執(zhí)行的過程。初始化初始化在JVM調(diào)用類或接口初始化方法時發(fā)生。*Java面向?qū)ο蟪绦蛟O(shè)計教程26類加載器——啟動引擎的點火器JVM在啟動獨立Java應(yīng)用程序時的第一步是生成初始Class對象,表示包含publicstaticvoidmain(String[]args)方法的Java的類。JVM鏈接與初始化這個類并調(diào)用main()方法。這個方法推動所需要的其他類和接口的加載、鏈接與初始化。
1.3JDK的組成與安裝設(shè)置*Java面向?qū)ο蟪绦蛟O(shè)計教程28Java平臺的組成結(jié)構(gòu)
*Java面向?qū)ο蟪绦蛟O(shè)計教程29Java標(biāo)準(zhǔn)版
*Java面向?qū)ο蟪绦蛟O(shè)計教程30Java版本的平臺信息這些軟件可以從Sun公司的網(wǎng)站/上免費下載獲得。值得說明的是,這兩個版本的開發(fā)工具包的縮寫從“J2SDK(或Java2SDK)”改回到“JDK”,運行環(huán)境的縮寫從“J2RE”改回到“JRE”,下載時需要注意。Java版本的服務(wù)期限*Java面向?qū)ο蟪绦蛟O(shè)計教程31GAdate:ReleasefamiliesgeneralavailabilitydateEOL:Javatechnologyendoflife參考網(wǎng)址:/products/archive/eol.policy.html*Java面向?qū)ο蟪绦蛟O(shè)計教程32SETPATH的作用SETPATH=c:\jdk1.5.0\bin含義是告訴操作系統(tǒng)到哪里可以找到Java的編譯器等可執(zhí)行文件的位置。*Java面向?qū)ο蟪绦蛟O(shè)計教程33SETCLASSPATH的作用SETCLASSPATH=.;c:\jdk1.5.0\lib\tools.jar含義是告訴操作系統(tǒng)到哪里可以找到編譯或解釋運行時所需字節(jié)代碼的位置。*Java面向?qū)ο蟪绦蛟O(shè)計教程34在運行環(huán)境中的設(shè)置方法如果系統(tǒng)平臺為Windows9X,則把以上的設(shè)置內(nèi)容加入系統(tǒng)根目錄下的autoexec.bat文件中;如果系統(tǒng)平臺為WindowsXP、Windows2000及以后版本,則把以上的設(shè)置內(nèi)容加入【控制面板】|【系統(tǒng)】|【高級】|【環(huán)境變量】中。Java開發(fā)平臺簡介集成開發(fā)環(huán)境:
IntegratedDevelopmentEnvironment,IDEJCreatorEclipseNetBeans*Java面向?qū)ο蟪绦蛟O(shè)計教程351.4典型例子及常見問題*Java面向?qū)ο蟪绦蛟O(shè)計教程37常用指令簡介編譯器javac的使用解釋器java的使用小程序觀察器appletviewer的使用反編譯器javap的使用*Java面向?qū)ο蟪绦蛟O(shè)計教程38應(yīng)用程序編程舉例//:ApplicationStyle.java//packageg3ds.joop.ch1;publicclassApplicationStyle{//anapplication publicstaticvoidmain(String[]args){ System.out.println("HelloWorld!"); }}程序保存為ApplicationStyle.java編譯時執(zhí)行javacApplicationStyle.java得到字節(jié)代碼ApplicationStyle.class。運行時執(zhí)行javaApplicationStyle
*Java面向?qū)ο蟪绦蛟O(shè)計教程39小程序編程舉例//:AppletStyle.java//packageg3ds.joop.ch1;importjava.awt.Graphics;importjavax.swing.JApplet;publicclassAppletStyleextendsJApplet{//anapplet publicvoidpaint(Graphicsg){ g.drawString("HelloWorld!",150,50);}}<HTML><APPLETCODE="AppletStyle.class"WIDTH=300HEIGHT=100></APPLET></HTML>保存為HelloWorldShow.html或HelloWorldShow.htmappletviewerHelloWorldShow.html
“HelloWorld!”的演繹*Java面向?qū)ο蟪绦蛟O(shè)計教程40進(jìn)一步討論*Java面向?qū)ο蟪绦蛟O(shè)計教程42反編譯程序樣式j(luò)avap–cApplicationStyle則可以獲得字節(jié)碼的助記符版本:CompiledfromApplicationStyle.javapublicclassHelloWorldextendsjava.lang.Object{publicHelloWorld();publicstaticvoidmain(java.lang.String[]);}MethodHelloWorld()0aload_01invokespecial#1<Methodjava.lang.Object()>4returnMethodvoidmain(java.lang.String[])0getstatic#2<Fieldjava.io.PrintStreamout>3ldc#3<String"HelloWorld!">5invokevirtual#4<Methodvoidprintln(java.lang.String)>8return*Java面向?qū)ο蟪绦蛟O(shè)計教程43哪些類被加載了*Java面向?qū)ο蟪绦蛟O(shè)計教程44使用Java的一些注意事項Java中規(guī)定,在一個.java的源文件中最多只能有一個(另一個意思是可以沒有)publicclass。當(dāng)這個publicclass存在時,要求該類名必須與.Java源文件的名字一致。如果你想編寫一個應(yīng)用程序(通常被聲明
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)保設(shè)施運維合同樣本
- 專項信托外匯固定資產(chǎn)貸款合作合同
- 玫瑰貸記卡動產(chǎn)質(zhì)押合同協(xié)議
- 員工合同解除合同書
- 贍養(yǎng)義務(wù)履行合同范文
- 聯(lián)合購房按揭貸款合同
- 精簡版商業(yè)租賃合同范本
- 租賃合同季度范本:機械設(shè)備篇
- 南湖區(qū):合同科技創(chuàng)新與合作新機遇
- 出租車股份合作合同條款
- 暑假假期安全教育(課件)-小學(xué)生主題班會
- 《脂肪肝de健康教育》課件
- 2025年外研版小學(xué)英語單詞表全集(一年級起1-12全冊)
- Python爬蟲技術(shù)基礎(chǔ)介紹
- 中華民族共同體概論教案第四講-天下秩序與華夏共同體演進(jìn)
- 《傳媒法律法規(guī)》課件
- 數(shù)據(jù)中心供配電系統(tǒng)概述演示
- TSG11-2020鍋爐安全技術(shù)規(guī)程(現(xiàn)行)
- 人力資源行業(yè)人力資源管理信息系統(tǒng)實施方案
- 歌曲《wake》中英文歌詞對照
- 義務(wù)教育(音樂)課程標(biāo)準(zhǔn)(2022年版)解讀
評論
0/150
提交評論