版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章Java導(dǎo)論
*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程2主要內(nèi)容1.1Java語(yǔ)言的特點(diǎn)1.1.1簡(jiǎn)單的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言1.1.2健壯安全的分布式語(yǔ)言1.1.3結(jié)構(gòu)中立、可移植性強(qiáng)的解釋型語(yǔ)言1.1.4高效能1.1.5支持多線程的動(dòng)態(tài)語(yǔ)言1.1.6Java與幾種常用語(yǔ)言的比較1.2Java執(zhí)行環(huán)境1.2.1JVM機(jī)制——Java平臺(tái)的基礎(chǔ)1.2.2自動(dòng)垃圾收集1.2.3保護(hù)域機(jī)制與沙箱模型1.2.4類加載器——啟動(dòng)引擎的點(diǎn)火器1.3JDK的組成與安裝設(shè)置1.3.1Java平臺(tái)的組成結(jié)構(gòu)1.3.2SETPATH和SETCLASSPATH的作用1.3.3Java開發(fā)平臺(tái)簡(jiǎn)介1.4典型例子及常見問(wèn)題1.4.1編譯器、解釋器、小程序觀察器和反編譯器1.4.2簡(jiǎn)單的“HelloWorld!”例子1.4.3應(yīng)用程序的主方法1.4.4小程序的運(yùn)行1.1Java語(yǔ)言的特點(diǎn)*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程4Java的由來(lái)1991年初,SunMicrosystems公司設(shè)立一項(xiàng)較大規(guī)?!跋M(fèi)者電子產(chǎn)品先進(jìn)軟件發(fā)展項(xiàng)目”,該項(xiàng)目是為了發(fā)展小型、可靠、可移植、分布式、實(shí)時(shí)的嵌入式系統(tǒng)。
項(xiàng)目小組開發(fā)了一種與平臺(tái)無(wú)關(guān)的新語(yǔ)言,命名為“Oak”。其靈感來(lái)源于項(xiàng)目主持人JamesGosling辦公室外的一棵橡樹(Oak),它就是Java語(yǔ)言的前身。
但因Oak名稱與其它產(chǎn)品雷同,最后將開發(fā)的新語(yǔ)言取名為“Java”。據(jù)說(shuō)是項(xiàng)目小組成員經(jīng)常在公司附近一家咖啡廳喝咖啡,因此把咖啡原產(chǎn)地Java作為新語(yǔ)言的名稱。1995年,SunMicrosystems公司正式發(fā)布Java產(chǎn)品。
*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程5與Java有關(guān)的一些圖片Java的標(biāo)識(shí)Java的吉祥物DukeJava之父JamesGosling*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程6Java語(yǔ)言的特點(diǎn)
在Java語(yǔ)言白皮書中,Java被描述為“是一種簡(jiǎn)單、面向?qū)ο?、分布式、解釋、健壯、安全、結(jié)構(gòu)中立、可移植、高效能、多線程、動(dòng)態(tài)的語(yǔ)言。Asimple,object-oriented,network-savvy,interpreted,robust,secure,architectureneutral,portable,high-performance,multithreaded,dynamiclanguage。
—JamesGosling,HenryMcGilton.TheJava?LanguageEnvironment,AWhitePaper.
*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程7簡(jiǎn)單的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言
“爪哇”——Java總給人以小巧玲瓏
和C++很相近,但刪除許多極少被使用、不容易理解和令人混淆的C++功能,主要包括運(yùn)算符重載、多重繼承以及廣泛的自動(dòng)強(qiáng)迫同型。
自動(dòng)垃圾收集(Automaticgarbagecollection)功能,這不僅簡(jiǎn)化了Java程序的內(nèi)存分配與釋放工作,而且能大幅度減少程序中的漏洞。
Java程序非常小,對(duì)于在嵌入式的系統(tǒng)中使用是很重要的,同時(shí)也可以通過(guò)網(wǎng)絡(luò)輕易下載。
*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程8健壯安全的分布式語(yǔ)言
Java擁有廣泛的能輕易處理TCP/IP協(xié)議(如HTTP與FTP等)的類庫(kù),更容易創(chuàng)建網(wǎng)絡(luò)連接。
除了運(yùn)行時(shí)異常檢查外,Java提供了廣泛的編譯時(shí)異常檢查,以便盡早的發(fā)現(xiàn)可能存在的錯(cuò)誤。同時(shí),在Java中對(duì)象的創(chuàng)建機(jī)制(只能用new操作符)和自動(dòng)垃圾收集機(jī)制大大減少了因內(nèi)存管理不當(dāng)引發(fā)的錯(cuò)誤。
Java的驗(yàn)證技術(shù)是以公鑰加密算法為基礎(chǔ)。
*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程9結(jié)構(gòu)中立、可移植性強(qiáng)的解釋型語(yǔ)言
為了讓Java應(yīng)用程序能夠在網(wǎng)絡(luò)上任何地方執(zhí)行,其編譯器會(huì)產(chǎn)出一種結(jié)構(gòu)中立的字節(jié)代碼(Bytecode)。字節(jié)代碼可以在提供Java運(yùn)行時(shí)系統(tǒng)的多種不同處理器上面執(zhí)行。
Java嚴(yán)格定義了基本數(shù)據(jù)類型的大小和算術(shù)運(yùn)算符的行為,因此不存在軟硬件平臺(tái)不兼容的情況。
Java系統(tǒng)本身具備相當(dāng)好的移植性。它的編譯器用Java寫成,而Java運(yùn)行時(shí)程序則是參照POSIX(一個(gè)可移植接口工業(yè)標(biāo)準(zhǔn))規(guī)格使用ANSIC寫成的。
*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程10高效能
字節(jié)代碼可以動(dòng)態(tài)地為執(zhí)行應(yīng)用程序的特定CPU解釋成機(jī)器碼。字節(jié)代碼格式在設(shè)計(jì)上即顧及機(jī)器碼的產(chǎn)生,因此實(shí)際的機(jī)器碼產(chǎn)生程序相當(dāng)簡(jiǎn)單。
解釋器運(yùn)行時(shí)不需檢查運(yùn)行環(huán)境,自動(dòng)垃圾收集器設(shè)為優(yōu)先級(jí)最低后臺(tái)線程,以保證內(nèi)存得到更有效的應(yīng)用。
對(duì)于運(yùn)算量很大的程序可以采用原生代碼編寫,再經(jīng)由Java平臺(tái)轉(zhuǎn)換。Just-In-Time(JIT)編譯技術(shù)更是讓字節(jié)代碼的執(zhí)行速度大幅度提升。
*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程11支持多線程的動(dòng)態(tài)語(yǔ)言
在Java核心類庫(kù)中包含Thread類,同時(shí)Java運(yùn)行時(shí)系統(tǒng)提供了線程監(jiān)視器和同步鎖定機(jī)制。多線程的其它優(yōu)點(diǎn)包括更好的交互式回應(yīng)能力與實(shí)時(shí)執(zhí)行行為。
Java是一種比C或C++更具動(dòng)態(tài)特性的語(yǔ)言。它在設(shè)計(jì)上強(qiáng)調(diào)為進(jìn)化中的運(yùn)算環(huán)境提供支援。甚至可以在不中斷網(wǎng)絡(luò)服務(wù)的情況下替換相關(guān)的組件。
*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程12Java與幾種常用語(yǔ)言的比較
1.2Java執(zhí)行環(huán)境*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程14Java執(zhí)行環(huán)境
Java源程序(*.java)首先被編譯成字節(jié)代碼(*.class);這些字節(jié)代碼就是Java虛擬機(jī)可以解釋的指令集。經(jīng)過(guò)安全驗(yàn)證后字節(jié)代碼進(jìn)入虛擬機(jī),要么經(jīng)由解釋器解釋執(zhí)行,要么由JIT編譯器(也稱為即時(shí)代碼生成器)轉(zhuǎn)成機(jī)器代碼執(zhí)行,程序中使用到的類則根據(jù)需要?jiǎng)討B(tài)加載到內(nèi)存中。Java執(zhí)行環(huán)境由編譯時(shí)(Compile-time)和運(yùn)行時(shí)(Runtime)環(huán)境兩部分組成。*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程15JREJVM協(xié)同類加載器、字節(jié)代碼校驗(yàn)器和Java類庫(kù)一起,組成了整個(gè)Java運(yùn)行環(huán)境JRE。
一次編寫隨處運(yùn)行
(WriteOnceRunAnywhere,WORA)Java虛擬機(jī)機(jī)制Java虛擬機(jī)(JavaVirtualMachine,JVM)是一個(gè)類似于真實(shí)計(jì)算機(jī)系統(tǒng)的抽象機(jī)(AbstractComputingMachine),它擁有一組指令集,用來(lái)解釋“.class”字節(jié)代碼;也就是說(shuō),JVM并不認(rèn)識(shí)所謂的Java語(yǔ)言,而僅僅能夠讀懂class文件中有限的指令、符號(hào)及其他一些輔助信息。它除了負(fù)責(zé)執(zhí)行指令外,還要管理數(shù)據(jù)、內(nèi)存和寄存器。這臺(tái)虛擬的機(jī)器在任何平臺(tái)上都提供給編譯程序一個(gè)的共同的接口。編譯程序只需要面向虛擬機(jī),生成虛擬機(jī)能夠理解的代碼,然后由解釋器來(lái)將虛擬機(jī)代碼轉(zhuǎn)換為特定系統(tǒng)的機(jī)器碼執(zhí)行。*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程16*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程17JVM的組成執(zhí)行引擎負(fù)責(zé)把字節(jié)代碼導(dǎo)入虛擬機(jī);內(nèi)存管理
負(fù)責(zé)分配內(nèi)存給對(duì)象和數(shù)組,并進(jìn)行垃圾收集;錯(cuò)誤和異常管理
負(fù)責(zé)異常的捕獲或拋出;線程接口
負(fù)責(zé)對(duì)線程的支持;對(duì)原生方法(NativeMethod)的支持
支持調(diào)用C/C++等語(yǔ)言編寫的方法。
*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程18JVM的理解:機(jī)床-數(shù)控機(jī)床-虛擬機(jī)床數(shù)控機(jī)床數(shù)控機(jī)床抽象數(shù)控機(jī)床可以加工各種形狀的物體原因在于它擁有一個(gè)可以能讀懂指令的核心系統(tǒng)MachineVirtualMachine*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程19解釋產(chǎn)品(問(wèn)題域)編程人員是熟悉的!但數(shù)控系統(tǒng)(JVM)是不認(rèn)識(shí)的??!編程人員根據(jù)自己的想法,在相應(yīng)的平臺(tái)上編寫出符合產(chǎn)品形狀要求的程序(.java)*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程20解釋這是程序員可以理解的程序(.java),因其是接近自然語(yǔ)言的。但對(duì)數(shù)控系統(tǒng)(JVM)來(lái)說(shuō)太復(fù)雜,它是讀不懂的!*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程21解釋于是程序員利用相應(yīng)的平臺(tái)把它編譯成數(shù)控系統(tǒng)(JVM)可以理解的程序(.class)于是數(shù)控機(jī)床(JVM)動(dòng)起來(lái)啦!產(chǎn)品也做出來(lái)啦!可是最終數(shù)控機(jī)床(JVM)也沒(méi)有明白它做出的產(chǎn)品是什么,只知道走了許許多多的直線或圓弧(JVM指令集)!*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程22示例虛擬的真實(shí)的實(shí)現(xiàn)代碼移植的一種技術(shù)策略
(為什么要使用Java虛擬機(jī)?)*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程23使用Java虛擬機(jī),其技術(shù)路線的本質(zhì)就是改變了編譯型語(yǔ)言環(huán)境把易變的應(yīng)用和相對(duì)穩(wěn)定的系統(tǒng)平臺(tái)之間直接綁定的做法,通過(guò)增加語(yǔ)言環(huán)境的中介接口,實(shí)現(xiàn)了易變的應(yīng)用和相對(duì)穩(wěn)定的系統(tǒng)平臺(tái)之間的松耦合。*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程24保護(hù)域機(jī)制與沙箱模型
保護(hù)域(Protectiondomain)是有關(guān)系統(tǒng)安全的基本概念和重要模塊。域界定了作為主體的系統(tǒng)實(shí)體對(duì)各種對(duì)象集直接訪問(wèn)的被許可程度。保護(hù)域概念提供一種在受保護(hù)單元中分組和隔離不安全因素的便利機(jī)制。
*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程25類加載器——啟動(dòng)引擎的點(diǎn)火器
加載當(dāng)JVM加載類時(shí),它尋找類或接口的二進(jìn)制表示,并從這個(gè)二進(jìn)制表示(通常是Java編譯器生成的類文件)生成Class對(duì)象。Class對(duì)象封裝類或接口的運(yùn)行時(shí)狀態(tài)。鏈接鏈接是取得加載的類或接口,并將其與JVM運(yùn)行時(shí)環(huán)境結(jié)合起來(lái),以準(zhǔn)備執(zhí)行的過(guò)程。初始化初始化在JVM調(diào)用類或接口初始化方法時(shí)發(fā)生。*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程26類加載器——啟動(dòng)引擎的點(diǎn)火器JVM在啟動(dòng)獨(dú)立Java應(yīng)用程序時(shí)的第一步是生成初始Class對(duì)象,表示包含publicstaticvoidmain(String[]args)方法的Java的類。JVM鏈接與初始化這個(gè)類并調(diào)用main()方法。這個(gè)方法推動(dòng)所需要的其他類和接口的加載、鏈接與初始化。
1.3JDK的組成與安裝設(shè)置*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程28Java平臺(tái)的組成結(jié)構(gòu)
*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程29Java標(biāo)準(zhǔn)版
*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程30Java版本的平臺(tái)信息這些軟件可以從Sun公司的網(wǎng)站/上免費(fèi)下載獲得。值得說(shuō)明的是,這兩個(gè)版本的開發(fā)工具包的縮寫從“J2SDK(或Java2SDK)”改回到“JDK”,運(yùn)行環(huán)境的縮寫從“J2RE”改回到“JRE”,下載時(shí)需要注意。Java版本的服務(wù)期限*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程31GAdate:ReleasefamiliesgeneralavailabilitydateEOL:Javatechnologyendoflife參考網(wǎng)址:/products/archive/eol.policy.html*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程32SETPATH的作用SETPATH=c:\jdk1.5.0\bin含義是告訴操作系統(tǒng)到哪里可以找到Java的編譯器等可執(zhí)行文件的位置。*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程33SETCLASSPATH的作用SETCLASSPATH=.;c:\jdk1.5.0\lib\tools.jar含義是告訴操作系統(tǒng)到哪里可以找到編譯或解釋運(yùn)行時(shí)所需字節(jié)代碼的位置。*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程34在運(yùn)行環(huán)境中的設(shè)置方法如果系統(tǒng)平臺(tái)為Windows9X,則把以上的設(shè)置內(nèi)容加入系統(tǒng)根目錄下的autoexec.bat文件中;如果系統(tǒng)平臺(tái)為WindowsXP、Windows2000及以后版本,則把以上的設(shè)置內(nèi)容加入【控制面板】|【系統(tǒng)】|【高級(jí)】|【環(huán)境變量】中。Java開發(fā)平臺(tái)簡(jiǎn)介集成開發(fā)環(huán)境:
IntegratedDevelopmentEnvironment,IDEJCreatorEclipseNetBeans*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程351.4典型例子及常見問(wèn)題*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程37常用指令簡(jiǎn)介編譯器javac的使用解釋器java的使用小程序觀察器appletviewer的使用反編譯器javap的使用*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程38應(yīng)用程序編程舉例//:ApplicationStyle.java//packageg3ds.joop.ch1;publicclassApplicationStyle{//anapplication publicstaticvoidmain(String[]args){ System.out.println("HelloWorld!"); }}程序保存為ApplicationStyle.java編譯時(shí)執(zhí)行javacApplicationStyle.java得到字節(jié)代碼ApplicationStyle.class。運(yùn)行時(shí)執(zhí)行javaApplicationStyle
*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程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è)計(jì)教程40進(jìn)一步討論*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程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è)計(jì)教程43哪些類被加載了*Java面向?qū)ο蟪绦蛟O(shè)計(jì)教程44使用Java的一些注意事項(xiàng)Java中規(guī)定,在一個(gè).java的源文件中最多只能有一個(gè)(另一個(gè)意思是可以沒(méi)有)publicclass。當(dāng)這個(gè)publicclass存在時(shí),要求該類名必須與.Java源文件的名字一致。如果你想編寫一個(gè)應(yīng)用程序(通常被聲明
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子用品采購(gòu)合同范本
- 企業(yè)消防隊(duì)服務(wù)合同范本
- 福州企業(yè)2024年勞動(dòng)協(xié)議模板
- 2024年某餐廳專屬訂餐服務(wù)協(xié)議
- 買車雅閣合同范本
- 2024特定授權(quán)協(xié)議簽署委托協(xié)議
- 主管聘用合同范本
- 積極向上的演講稿14篇
- 電子廠鏟車租賃合同范本
- 2024鋼管采購(gòu)與銷售協(xié)議
- 主題漫展策劃方案
- 小學(xué)生自主學(xué)習(xí)能力培養(yǎng)及教師指導(dǎo)策略
- 財(cái)務(wù)管理的數(shù)字化轉(zhuǎn)型實(shí)施方案
- 線上廚藝大賽投票方案
- 家長(zhǎng)課程:怎樣提升孩子的自護(hù)技能
- 奧緯咨詢-2023京東營(yíng)銷策略洞察報(bào)告
- 人工智能在醫(yī)療領(lǐng)域的應(yīng)用課件
- 超市管理系統(tǒng)-UML
- 〈教育觀念的轉(zhuǎn)變與更新〉學(xué)習(xí)心得體會(huì)(三)
- 西藏安琪珠峰生物科技有限公司年產(chǎn)200噸高原益生菌綠色制造項(xiàng)目環(huán)評(píng)報(bào)告書
- 期中復(fù)習(xí)備考Unit1-unit6話題補(bǔ)全對(duì)話 人教版九年級(jí)英語(yǔ)全冊(cè)
評(píng)論
0/150
提交評(píng)論