關(guān)于我們
書單推薦
新書推薦
|
Java程序設(shè)計(jì)
本書主要介紹了Java開發(fā)環(huán)境和開發(fā)工具、Java語法基礎(chǔ)、程序流程控制、數(shù)組與字符串、類與對(duì)象、類的繼承與多態(tài)、抽象類與接口、異常處理、Java SE API常用類、泛型與集合、圖形用戶界面GUI、JDBC數(shù)據(jù)庫編程、多線程和網(wǎng)絡(luò)編程。
本書以Java SE7.0為基礎(chǔ),注重可讀性和實(shí)用性,全面系統(tǒng)地介紹Java SE的核心技術(shù),通過條理清晰的知識(shí)歸納和通俗易懂的實(shí)例講解,可以使學(xué)習(xí)者快速掌握J(rèn)ava SE的核心技術(shù),從而使用Java解決一般問題。本書配套豐富,培訓(xùn)、教學(xué)、自學(xué)均可。
前言
Java是一種完全面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,具有卓越的通用性、高效性、平臺(tái)移植性和安全性,得到廣泛的應(yīng)用。在全球云計(jì)算和移動(dòng)互聯(lián)網(wǎng)產(chǎn)業(yè)高速發(fā)展的環(huán)境下,Java具備顯著的優(yōu)勢(shì)和廣闊前景。本書以Java SE 7.0為基礎(chǔ),注重可讀性和實(shí)用性,全面、系統(tǒng)地介紹Java SE的核心技術(shù)。通過條理清晰的知識(shí)歸納和通俗易懂的實(shí)例講解,幫助學(xué)生快速掌握J(rèn)ava SE的核心技術(shù),并能夠使用Java解決一般問題。
全書共分15章。第1章主要介紹Java語言的特點(diǎn)、運(yùn)行機(jī)制和應(yīng)用領(lǐng)域,以及Java開發(fā)環(huán)境與開發(fā)工具。第2~4章介紹Java基本語法: 標(biāo)識(shí)符與關(guān)鍵字,變量,運(yùn)算符與表達(dá)式,順序、選擇、循環(huán)三種流程控制,Java方法,數(shù)組與字符串。第5章主要介紹類和對(duì)象的關(guān)系、類的定義、構(gòu)造方法、成員變量和局部變量、對(duì)象的創(chuàng)建等知識(shí)點(diǎn)。第6章主要介紹類的繼承與多態(tài)。第7章主要介紹抽象類與接口的概念,以及包的使用。第8章探討如何解決Java的異常處理問題。第9章主要介紹Java標(biāo)準(zhǔn)程序庫中各種處理I/O操作的類的用途及使用方法。第10章介紹Java SE API文檔中一些常用類和接口的用法。第11章介紹泛型,講解常見的集合框架用法。第12章主要講述Java的圖形界面技術(shù),包括窗口、組件和菜單設(shè)計(jì)、布局管理器等。第13章介紹Access數(shù)據(jù)庫、JDBC的概念、Java中數(shù)據(jù)庫的常用連接方式、數(shù)據(jù)庫訪問,以及數(shù)據(jù)庫的查詢、添加、更新和刪除操作。通過簡(jiǎn)單的數(shù)據(jù)庫操作實(shí)例,介紹Java中使用JDBC訪問數(shù)據(jù)庫的編程基礎(chǔ)。第14章主要介紹線程的概念、創(chuàng)建、常用方法及同步等知識(shí)。第15章介紹網(wǎng)絡(luò)編程中的URL類、InetAddress類、TCP程序設(shè)計(jì)、UDP程序設(shè)計(jì),并通過案例Echo程序加強(qiáng)對(duì)上述知識(shí)的應(yīng)用。
本書的例題全部在JDK 1.7環(huán)境下編譯通過。
本書由廣東理工學(xué)院多年從事計(jì)算機(jī)教學(xué)的一線教師編寫,由廣東理工學(xué)院李代平教授主審了教材的內(nèi)容。其中,第1章和第5~7章由賴小平編寫;第2~4章由梁玉英編寫;第8章和第9章由向志華編寫;第10章和第11章由郭銳編寫;第12章和第13章由陳雪娟編寫;第14章和第15章由彭雄新編寫。
由于編者水平有限,書中難免有不足之處,懇請(qǐng)廣大師生、讀者批評(píng)、指正。
編者
2016年11月
作者:賴小平、梁玉英、向志華、陳雪娟、郭銳、彭
目錄
第1章Java語言概述001
1.1認(rèn)識(shí)Java001
1.1.1什么是Java001
1.1.2Java語言的特點(diǎn)002
1.1.3Java程序的運(yùn)行機(jī)制004
1.1.4Java語言的應(yīng)用領(lǐng)域005
1.2Java開發(fā)環(huán)境與開發(fā)工具006
1.2.1Java開發(fā)環(huán)境006
1.2.2Java開發(fā)工具010
1.2.3Java程序開發(fā)過程013
1.3Java程序舉例015
案例1簡(jiǎn)單控制臺(tái)應(yīng)用程序015
案例2簡(jiǎn)單GUI應(yīng)用程序017
案例3Java Applet小應(yīng)用程序017
本章小結(jié)019
習(xí)題019
第2章Java語法基礎(chǔ)020
2.1標(biāo)識(shí)符與關(guān)鍵字020
2.1.1標(biāo)識(shí)符020
2.1.2關(guān)鍵字020
2.1.3Java命名規(guī)范022
2.2變量024
2.2.1變量的概念024
2.2.2變量的聲明與初始化024
2.2.3變量的作用域026
2.2.4變量的分類028
2.3數(shù)據(jù)類型028
2.3.1數(shù)據(jù)類型的分類029
2.3.2基本數(shù)據(jù)類型029
2.3.3基本數(shù)據(jù)類型的轉(zhuǎn)換030Java程序設(shè)計(jì)
2.4運(yùn)算符與表達(dá)式031
2.4.1表達(dá)式的概念031
2.4.2運(yùn)算符的分類031
2.4.3運(yùn)算符的優(yōu)先級(jí)與結(jié)合性038
2.5Java程序舉例039
案例簡(jiǎn)易計(jì)算器039
本章小結(jié)039
習(xí)題040
第3章Java程序流程控制042
3.1程序基本控制結(jié)構(gòu)042
3.2選擇結(jié)構(gòu)042
3.2.1if選擇結(jié)構(gòu)042
3.2.2ifelse選擇結(jié)構(gòu)043
3.2.3多重if選擇結(jié)構(gòu)044
3.2.4嵌套if選擇結(jié)構(gòu)045
3.2.5switch選擇結(jié)構(gòu)046
3.3循環(huán)結(jié)構(gòu)047
3.3.1while語句048
3.3.2dowhile語句049
3.3.3for語句050
3.3.4break語句和continue語句052
3.3.5多重循環(huán)054
3.4Java方法055
3.4.1方法的定義055
3.4.2方法的重載058
3.4.3方法的參數(shù)059
3.5應(yīng)用實(shí)例060
案例猜數(shù)游戲060
本章小結(jié)061
習(xí)題062
第4章數(shù)組與字符串066
4.1數(shù)組的概念066
4.2一維數(shù)組067
4.2.1一維數(shù)組的聲明067
4.2.2一維數(shù)組的初始化068
4.2.3一維數(shù)組的引用069
4.3二維數(shù)組070
4.3.1二維數(shù)組的聲明070
4.3.2二維數(shù)組的初始化071
4.3.3二維數(shù)組的引用072
4.4數(shù)組操作常用方法073
4.4.1數(shù)組遍歷073
4.4.2數(shù)組復(fù)制074
4.4.3數(shù)組排序076
4.5字符串077
4.5.1String類077
4.5.2StringBuffer類082
4.5.3StringBuilder類085
4.5.4String類、StringBuffer類和StringBuilder類的使用和區(qū)別085
4.6正則表達(dá)式087
4.7應(yīng)用實(shí)例091
案例超級(jí)大樂透彩票開獎(jiǎng)091
本章小結(jié)093
習(xí)題093
第5章類與對(duì)象097
5.1面向?qū)ο蟪绦蛟O(shè)計(jì)概述097
5.1.1面向過程與面向?qū)ο?97
5.1.2面向?qū)ο蟪绦蛟O(shè)計(jì)的特征098
5.2類的定義與對(duì)象的創(chuàng)建100
5.2.1類與對(duì)象的關(guān)系100
5.2.2類的定義101
5.2.3構(gòu)造方法104
5.2.4成員變量與局部變量105
5.2.5對(duì)象的創(chuàng)建106
5.2.6訪問控制修飾符109
5.2.7關(guān)鍵字this110
5.2.8關(guān)鍵字static112
5.3應(yīng)用實(shí)例113
案例1人類的定義與使用113
案例2飲料自動(dòng)售貨機(jī)116
本章小結(jié)120
習(xí)題120
第6章類的繼承與多態(tài)124
6.1類的繼承124
6.1.1繼承與派生124
6.1.2繼承的說明126
6.1.3super關(guān)鍵字128
6.1.4final關(guān)鍵字130
6.2多態(tài)性131
6.2.1多態(tài)性的概念131
6.2.2對(duì)象變量多態(tài)性132
6.2.3方法多態(tài)性135
6.3應(yīng)用實(shí)例136
案例1圖形類的派生136
案例2動(dòng)物多態(tài)性140
本章小結(jié)143
習(xí)題143
第7章抽象類與接口145
7.1抽象類145
7.1.1抽象類與抽象方法145
7.1.2抽象類與*終類147
7.2接口148
7.2.1接口的概念148
7.2.2接口的定義與實(shí)現(xiàn)149
7.2.3接口的多態(tài)153
7.2.4接口的繼承154
7.3包155
7.3.1Java系統(tǒng)API包155
7.3.2包的定義156
7.3.3編譯與執(zhí)行帶包的類157
7.3.4引入包159
7.4應(yīng)用實(shí)例161
案例手機(jī)接口的定義與實(shí)現(xiàn)161
本章小結(jié)163
習(xí)題164
第章 1 Java語言概述 Java是一門面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。本章首先介紹Java的發(fā)展歷程,讓讀者對(duì)Java有基本的認(rèn)識(shí),了解Java的特點(diǎn)和運(yùn)行機(jī)制;然后詳細(xì)講解Java開發(fā)環(huán)境的搭建和開發(fā)流程,包括一些基本的注意事項(xiàng)。 通過本章的學(xué)習(xí),達(dá)到以下目標(biāo)。 認(rèn)識(shí)Java,并了解其發(fā)展歷程。 熟悉Java語言的特點(diǎn)及應(yīng)用領(lǐng)域。 掌握安裝并配置Java開發(fā)環(huán)境的方法。 掌握J(rèn)ava中Path及classpath屬性的作用。 能夠編寫并運(yùn)行一個(gè)簡(jiǎn)單的Java程序。 掌握J(rèn)ava的開發(fā)流程。 了解常用的Java開發(fā)工具。 1.1認(rèn)識(shí)Java〖*2〗1.1.1什么是Java在認(rèn)識(shí)Java之前,先了解幾個(gè)基本概念。 1. 軟件開發(fā) 軟件開發(fā)是根據(jù)用戶要求建造軟件系統(tǒng)或者系統(tǒng)中的軟件部分的過程。軟件開發(fā)是一項(xiàng)包括需求捕捉、需求分析、設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試的系統(tǒng)工程。軟件是一系列按照特定順序組織的計(jì)算機(jī)數(shù)據(jù)和指令的集合,分為系統(tǒng)軟件和應(yīng)用軟件。軟件一般使用某種程序設(shè)計(jì)語言來實(shí)現(xiàn),通常采用相應(yīng)的開發(fā)工具進(jìn)行開發(fā)。 開發(fā)出來的軟件系統(tǒng)可以幫助人們解決和處理各種問題,必然產(chǎn)生人機(jī)交互。人機(jī)交互方式有兩種: 圖形化界面(Graphical User Interface,GUI)和命令行方式(Command Line Interface,CLI)。*種方式簡(jiǎn)單直觀,用戶易于接受,容易上手操作,如Windows操作系統(tǒng);第二種方式需要一個(gè)控制臺(tái),用戶輸入特定的指令,讓計(jì)算機(jī)完成操作,較為麻煩,需要用戶記住一些命令,如DOS操作系統(tǒng)。 2. 計(jì)算機(jī)語言 語言是人與人之間用于溝通的一種方式。例如,中國人與中國人用普通話溝通;中國人要和英國人交流,需要學(xué)習(xí)英語。計(jì)算機(jī)語言是人與計(jì)算機(jī)交流的方式。如果人要與計(jì)算機(jī)交流,需要學(xué)習(xí)計(jì)算機(jī)語言。計(jì)算機(jī)語言有很多種,如C、C++、Java、PHP等。Java程序設(shè)計(jì) 00第1章 Java語言概述 00Java是Sun公司(全稱Stanford University Network,1982年成立。2009年4月20日,被甲骨文公司以約74億美元收購)開發(fā)的一套編程語言,主設(shè)計(jì)者是James Gosling(見圖11),*早來源于一個(gè)叫Green的項(xiàng)目。這個(gè)項(xiàng)目*初的目的是為家用電子消費(fèi)產(chǎn)品開發(fā)一個(gè)小巧、易用、安全穩(wěn)定、與平臺(tái)無關(guān)的分布式代碼系統(tǒng),以便通過網(wǎng)絡(luò)對(duì)家用電器進(jìn)行控制。一開始,Sun公司的工程師們準(zhǔn)備采用C++語言來開發(fā),但由于C++過于復(fù)雜,安全性差,于是他們決定基于C++開發(fā)一種符合自己要求的新語言。1991年4月,歷時(shí)18個(gè)月,新語言的*個(gè)版本誕生了。命名時(shí), James Gosling看到窗口的橡樹(見圖12),遂為其取名為Oak,希望它能夠有橡樹一般堅(jiān)強(qiáng)的生命力。后來,他發(fā)現(xiàn)“Oak”是Sun公司另外一種語言的注冊(cè)商標(biāo),于是1995年將這種新語言更名為“Java”,即太平洋上一個(gè)盛產(chǎn)咖啡的島嶼的名字。Java是一種用于網(wǎng)絡(luò)的,精巧而安全的語言,使得程序能夠*大限度地利用網(wǎng)絡(luò)資源。 圖11James Gosling 圖12印度橡樹 Java語言發(fā)展到今天,有過多個(gè)版本。1995年5月23日,Sun公司推出Java JDK 1.0版,標(biāo)志著Java正式進(jìn)軍Internet。1998年,Sun公司對(duì)JDK 1.0升級(jí),并推出JDK 1.2的開發(fā)包,加入大量的輕量級(jí)組件包。從此,Java正式命名為Java 2。 Java語言經(jīng)歷了以下3個(gè)發(fā)展方向。 (1) J2SE(Java 2 Platform Standard Edition): 包含構(gòu)成Java語言核心的類,如數(shù)據(jù)庫連接、接口定義、輸入/輸出和網(wǎng)絡(luò)編程,主要用于開發(fā)一般個(gè)人電腦上的應(yīng)用軟件。 (2) J2ME(Java 2 Platform Micro Edition): 包含J2SE中的一部分類,用于消費(fèi)類電子產(chǎn)品的軟件開發(fā),如呼機(jī)、智能卡、手機(jī)、PDA和機(jī)頂盒。 (3) J2EE(Java 2 Platform Enterprise Edition): 即Java企業(yè)版,包含J2SE中的所有類,還包含用于開發(fā)企業(yè)級(jí)應(yīng)用的類,如EJB、Servlet、JSP、XML和事務(wù)控制,也是現(xiàn)在Java應(yīng)用的主要方向,用于開發(fā)企業(yè)級(jí)應(yīng)用軟件。 上述3項(xiàng)中的核心部分是J2SE,J2ME和J2EE是在J2SE基礎(chǔ)上發(fā)展起來的。 【注】 在2005年“Java十周年大會(huì)”之后,上述3門技術(shù)被重新命名。 (1) J2SE更名為Java SE。 (2) J2ME更名為Java ME。 (3) J2EE更名為Java EE。 1.1.2Java語言的特點(diǎn) Java總是和C++聯(lián)系在一起,而C++是從C語言派生而來的,所以Java語言繼承了這兩種語言的大部分特性。Java的語法從C語言繼承而來,Java許多面向?qū)ο蟮奶匦远际艿紺++的影響。事實(shí)上,Java中的幾個(gè)自定義特性都來自于或可以追溯到它的這些前驅(qū)語言。略有不同的是,Java語言完全面向?qū)ο,摒棄了C和C++的不足。Java語言的誕生與過去近30年中計(jì)算機(jī)語言的不斷改進(jìn)和發(fā)展密切相關(guān)。 Sun公司在《Java白皮書》中對(duì)Java的定義是: “Java: A simple, objectoriented, distributed,interpreted,robust,architectureneutral,secure,portable,highperformance,multithreaded,and dynamic language.”即Java是一種具有簡(jiǎn)單、面向?qū)ο、分布式、解釋型、健壯、安全、與體系結(jié)構(gòu)無關(guān)、可移植、高性能、多線程和動(dòng)態(tài)執(zhí)行等特性的語言。下面簡(jiǎn)述Java的主要特性。 1. 簡(jiǎn)單易用 Java語言是一種相當(dāng)簡(jiǎn)潔的面向?qū)ο蟪绦蛟O(shè)計(jì)語言,它省略了C++語言中所有難以理解、容易混淆的特性,如頭文件、指針、結(jié)構(gòu)、單元、運(yùn)算符重載和虛擬基礎(chǔ)類等,更加嚴(yán)謹(jǐn)、簡(jiǎn)潔。 Java源代碼的書寫不拘泥于特定的環(huán)境,可以使用記事本、文本編輯器等;將源文件編譯后,可直接運(yùn)行;再通過調(diào)試,得到預(yù)期的結(jié)果。 此外,Java可以自動(dòng)完成垃圾收集工作,回收不再使用的內(nèi)存,使用戶無須擔(dān)心內(nèi)存管理之類的事情。 2. 面向?qū)ο? 面向?qū)ο笫侵敢詫?duì)象為基本粒度,其下包含屬性和方法。對(duì)象的說明用屬性表達(dá),通過使用方法來操作這個(gè)對(duì)象?梢赃@么說,面向?qū)ο笫擒浖こ虒W(xué)的一次革命,大大提升了人類的軟件開發(fā)能力,是一個(gè)偉大的進(jìn)步,是軟件發(fā)展重大的里程碑。作為一種現(xiàn)代編程語言,是不能偏離面向?qū)ο筮@一方向的,Java語言也不例外。 Java是一種面向?qū)ο蟮恼Z言,具有面向?qū)ο蟮闹T多優(yōu)點(diǎn),如代碼擴(kuò)展、代碼復(fù)用等。 3. 分布式 Java語言具有強(qiáng)大的、易于使用的聯(lián)網(wǎng)能力,非常適合開發(fā)分布式計(jì)算的程序。Java應(yīng)用程序可以像訪問本地文件系統(tǒng)那樣通過URL訪問遠(yuǎn)程對(duì)象。 使用Java語言編寫Socket通信程序比使用其他任何語言都簡(jiǎn)單。它適用于公共網(wǎng)關(guān)接口(CGI)腳本的開發(fā),還可以利用Java小應(yīng)用程序(Applet)、Java服務(wù)器頁面(Java Server Page,JSP)、Servlet等手段構(gòu)建更豐富的網(wǎng)頁。 4. 解釋型 Java是一種解釋型語言,相對(duì)于C/C++,用Java語言寫出來的程序效率低,執(zhí)行速度慢。但它可以通過在不同平臺(tái)上運(yùn)行Java解釋器,解釋Java代碼,實(shí)現(xiàn)“一次編寫,到處運(yùn)行”的目標(biāo)。為此,犧牲效率是值得的。而且,現(xiàn)在的計(jì)算機(jī)技術(shù)日新月異,運(yùn)算速度越來越快,用戶不會(huì)感到太慢。 5. 健壯 Java語言在偽編譯時(shí)做了許多早期潛在問題的檢查,在運(yùn)行時(shí)又做了一些相應(yīng)的檢查,可以說是一種*嚴(yán)格的編譯器。它的這種“防患于未然”的手段將許多程序中的錯(cuò)誤扼殺在“搖籃”之中,使得許多在其他語言中必須通過運(yùn)行才會(huì)暴露出來的錯(cuò)誤,在編譯階段就被發(fā)現(xiàn)了。 另外,Java語言具備保證程序穩(wěn)定、健壯的特性,有效地減少了錯(cuò)誤,使Java應(yīng)用程序更加健壯。 6. 具有較高的安全性 人們?cè)O(shè)計(jì)Java語言時(shí),在安全性方面考慮得很仔細(xì),做了許多探究,使其成為目前*安全的一種程序設(shè)計(jì)語言。 對(duì)Java來說,安全性分為4個(gè)層面,即語言級(jí)安全性、編譯時(shí)安全性、運(yùn)行時(shí)安全性和可執(zhí)行代碼安全性。語言級(jí)安全性指Java的數(shù)據(jù)結(jié)構(gòu)是完整的對(duì)象,這些封裝過的數(shù)據(jù)類型具有安全性。編譯時(shí),要進(jìn)行Java語言和語義的檢查,保證每個(gè)變量對(duì)應(yīng)一個(gè)值,編譯后生成Java類。運(yùn)行時(shí),Java類需要使用類加載器載入,由字節(jié)碼校驗(yàn)器校驗(yàn)之后才可以運(yùn)行。Java類在網(wǎng)絡(luò)上使用時(shí),對(duì)其權(quán)限進(jìn)行了設(shè)置,以保證被訪問用戶的安全性。 7. 可移植性 對(duì)于程序員而言,寫出來的程序如果不需要修改就能夠同時(shí)在Windows、Mac OS、UNIX等平臺(tái)上運(yùn)行,簡(jiǎn)直就是美夢(mèng)成真,Java語言讓這個(gè)原本遙不可及的事越來越近。使用Java語言編寫的程序,只需較少的修改,甚至有時(shí)根本不需修改,即可在不同平臺(tái)上運(yùn)行。 8. 擁有較高的性能 由于Java是一種解釋型語言,其執(zhí)行效率就會(huì)低一些,但采取下述兩種措施,可使其擁有較高的性能。 (1) Java語言源程序編寫完成后,先使用Java偽編譯器進(jìn)行偽編譯,將其轉(zhuǎn)換為中間碼(也稱為字節(jié)碼)再解釋。 (2) 提供了一種準(zhǔn)實(shí)時(shí)(JustInTime,JIT)編譯器。當(dāng)需要更快的速度時(shí),使用JIT編譯器將字節(jié)碼轉(zhuǎn)換成機(jī)器碼,將其緩沖下來,速度就會(huì)更快。 9. 具有多線程處理能力 線程是一種輕量級(jí)進(jìn)程,是現(xiàn)代程序設(shè)計(jì)中必不可少的一種特性。多線程是指允許一個(gè)應(yīng)用程序同時(shí)存在兩個(gè)或以上的線程,用于支持事務(wù)并發(fā)和多任務(wù)處理。多線程處理能力使程序具有更好的交互性和實(shí)時(shí)性。 Java在多線程處理方面性能超群,除了內(nèi)置的多線程技術(shù)之外,還定義了一些類、方法等來建立和管理用戶定義的多線程,具有讓用戶驚喜的強(qiáng)大功能,而且在Java語言中進(jìn)行多線程處理也很簡(jiǎn)單。 10. 是一種動(dòng)態(tài)語言 Java是一種動(dòng)態(tài)的語言,表現(xiàn)在以下兩個(gè)方面。 (1) 在Java語言中,可以簡(jiǎn)單、直觀地查詢運(yùn)行時(shí)的信息。 (2) 可以將新代碼加入到正在運(yùn)行的程序中。 1.1.3Java程序的運(yùn)行機(jī)制 在Java中處理代碼的過程如圖13所示。 圖13Java程序的運(yùn)行機(jī)制 從圖13中可以看出,Java源文件名的后綴為.java,通過編譯,生成.class文件,在計(jì)算機(jī)上執(zhí)行。此時(shí)執(zhí)行.class的計(jì)算機(jī)并不是物理上可見的,而是Java自己設(shè)計(jì)的一臺(tái)計(jì)算機(jī)——Java虛擬機(jī)(Java Virtual Machine,JVM)。Java通過JVM進(jìn)行可移植性操作。 在Java中,所有的程序都在JVM上運(yùn)行。JVM是在一臺(tái)計(jì)算機(jī)上由軟件或硬件模擬的計(jì)算機(jī),它讀取并處理編譯過的、與平臺(tái)無關(guān)的字節(jié)碼*.class文件。Java解釋器負(fù)責(zé)將Java虛擬機(jī)的代碼在特定的平臺(tái)上運(yùn)行。JVM的基本原理如圖14所示。 圖14JVM的基本原理 從圖14中可以發(fā)現(xiàn),所有的.class文件都在JVM上運(yùn)行,即.class文件只需要認(rèn)識(shí)JVM,由JVM去適應(yīng)各個(gè)操作系統(tǒng)。如果不同的操作系統(tǒng)安裝了符合其類型的JVM,那么程序無論在哪個(gè)操作系統(tǒng)上都可以正確執(zhí)行。 有些讀者可能很難理解以上的解釋。其實(shí)這個(gè)過程類似于下述情景: 有一位中國富商,同時(shí)要和美國、韓國、俄羅斯、日本、法國、德國等幾個(gè)國家的客戶洽談生意,可是他不懂這些國家的語言,所以他針對(duì)每個(gè)國家請(qǐng)了一位翻譯。他只對(duì)翻譯說話,不同的翻譯會(huì)將他說的話譯給相應(yīng)的客戶。這樣,富商只需要對(duì)各位翻譯說話,就可以同幾個(gè)國家的客戶溝通。 【注】 Java的兩種核心機(jī)制如下所述。 (1) Java虛擬機(jī)(Java Virtal Machine),是一臺(tái)利用軟件方法實(shí)現(xiàn)的虛擬的計(jì)算機(jī),具有指令集,并使用不同的存儲(chǔ)區(qū)域,負(fù)責(zé)執(zhí)行指令,管理數(shù)據(jù)、內(nèi)存、寄存器。對(duì)于不同的平臺(tái),有不同的虛擬機(jī)。Java虛擬機(jī)屏蔽了底層運(yùn)行平臺(tái)的差別,實(shí)現(xiàn)了“一次編譯,到處運(yùn)行”。 (2) 垃圾收集機(jī)制(Garbage Collection),即回收不再使用的內(nèi)存空間。在C/C++等語言中,由程序員負(fù)責(zé)回收無用內(nèi)存。Java 語言撤銷了程序員回收無用內(nèi)存空間的責(zé)任,它提供一種系統(tǒng)級(jí)線程來跟蹤存儲(chǔ)空間的分配情況,并在JVM空閑時(shí),檢查并釋放那些可被釋放的存儲(chǔ)空間。垃圾回收在Java程序運(yùn)行過程中自動(dòng)執(zhí)行,程序員無法精確控制和干預(yù)。 1.1.4Java語言的應(yīng)用領(lǐng)域 Java技術(shù)自1995年問世以來,在我國的應(yīng)用和開發(fā)迅速普及?傮w來看,主要集中于企業(yè)應(yīng)用開發(fā)。根據(jù)有關(guān)單位調(diào)查顯示,從開發(fā)領(lǐng)域的分布來看,Web開發(fā)占了一半以上,為57.9%;Java ME移動(dòng)或嵌入式應(yīng)用占15%;C/S應(yīng)用占11.7%;系統(tǒng)編程占15.4%。近30%的開發(fā)者用Java從事C/S應(yīng)用或系統(tǒng)級(jí)應(yīng)用的開發(fā)。 Java語言主要應(yīng)用在下述幾個(gè)領(lǐng)域。 1. 行業(yè)和企業(yè)信息化 由于Sun、IBM、Oracle、BEA等國際廠商相繼推出基于Java技術(shù)的應(yīng)用服務(wù)器以及各種應(yīng)用軟件,帶動(dòng)了Java在金融、電信、制造等領(lǐng)域日益廣泛的應(yīng)用。例如,清華大學(xué)計(jì)算機(jī)系利用Java、XML和Web技術(shù)研制開發(fā)了多個(gè)軟件平臺(tái),東方科技的Tong Web、金蝶的Apusic、中創(chuàng)的Inforweb 等J2EE應(yīng)用服務(wù)器,以及和佳ERP和寶信ERP等ERP產(chǎn)品,在許多企業(yè)得到應(yīng)用。 2. 電子政務(wù)及辦公自動(dòng)化 東方科技、金蝶、中創(chuàng)等公司開發(fā)的J2EE應(yīng)用服務(wù)器在電子政務(wù)及辦公自動(dòng)化中廣泛應(yīng)用。例如,金蝶的Apusic在民政部、廣東省市工商局應(yīng)用;東軟電子政務(wù)架構(gòu)EAP平臺(tái)在社會(huì)保險(xiǎn)、公檢法、稅務(wù)系統(tǒng)應(yīng)用;中創(chuàng)的Inforweb等Infor系列中間件產(chǎn)品在國家海事局、山東省政府及中國建設(shè)銀行、民生銀行等金融系統(tǒng)應(yīng)用;無錫永中科技基于Java平臺(tái)開發(fā)的國產(chǎn)化集成辦公軟件永中Office在一些省、市政府部門應(yīng)用。 3. 嵌入式設(shè)備及消費(fèi)類電子產(chǎn)品 無線手持設(shè)備、通信終端、醫(yī)療設(shè)備、信息家電(如數(shù)字電視、機(jī)頂盒、電冰箱)、汽車電子設(shè)備等是近年來比較熱門的Java應(yīng)用領(lǐng)域。在這方面的應(yīng)用有中國聯(lián)通CDMA 1X網(wǎng)絡(luò)中基于Java技術(shù)的無線數(shù)據(jù)增值服務(wù)——UniJa。 4. 輔助教學(xué) 在輔助教學(xué)方面,東南大學(xué)與中興通訊公司利用Java語言聯(lián)合開發(fā)了遠(yuǎn)程教學(xué)系統(tǒng),用于本地網(wǎng)上教學(xué)、課后學(xué)習(xí)和異地遠(yuǎn)程教育;清華大學(xué)利用Java語言進(jìn)行了計(jì)算機(jī)軟件基礎(chǔ)課教學(xué)改革,分析、研究Java教學(xué)軟件BlueJ的漢化方案;電子科技大學(xué)應(yīng)用Java RMI技術(shù)進(jìn)行遠(yuǎn)程教育;西安電力高等?茖W(xué)校采用Java技術(shù)開發(fā)了交互式電站仿真系統(tǒng),實(shí)現(xiàn)電站鍋爐仿真、鍋爐膛火焰仿真,為實(shí)現(xiàn)網(wǎng)上仿真進(jìn)行了有益的探索。 1.2Java開發(fā)環(huán)境與開發(fā)工具〖*2〗1.2.1Java開發(fā)環(huán)境一臺(tái)計(jì)算機(jī)上安裝了JVM,即可運(yùn)行Java程序。但是要開發(fā)Java程序,還需建立Java開發(fā)環(huán)境。不同領(lǐng)域的Java開發(fā)應(yīng)用所需的版本不同,本書使用Java SE開發(fā)環(huán)境。 1. Java SE的組成 Java SE是一個(gè)包含Java開發(fā)環(huán)境和運(yùn)行環(huán)境的套件,由以下3項(xiàng)組成。 (1) Java Development Kit(JDK): Java應(yīng)用程序開發(fā)環(huán)境。 Java不僅提供了豐富的語言和運(yùn)行環(huán)境,還提供了一個(gè)免費(fèi)的Java開發(fā)工具集(Java Development Kit,JDK),以便程序員開發(fā)Java 開發(fā)工具包。Java 2 SDK開發(fā)工具集如表11所示。表11Java 2 SDK開發(fā)工具集 工具名稱說明JavacJava編譯器,用于將Java源程序編譯成字節(jié)碼JavaJava解釋器,用于解釋、執(zhí)行Java字節(jié)碼Appletviewer小應(yīng)用程序查看器,用于測(cè)試和運(yùn)行Java Applet程序JavadocJava文檔生成器JdbJava調(diào)試器JavapJava類文件反匯編器JavahC文件生成器,實(shí)現(xiàn)在Java類中調(diào)用C++代碼JDK中除了包括Java開發(fā)工具以外,還包括JRE,所以安裝了JDK,就不用單獨(dú)安裝JRE了。 (2) Java Runtime Environment(JRE): Java應(yīng)用程序運(yùn)行環(huán)境,包括Java虛擬機(jī)和Java程序所需要的核心類庫等。如果僅需運(yùn)行開發(fā)好的Java程序,計(jì)算機(jī)只需要安裝JRE。 (3) Java Plugin: Java插件。 JVM、JRE與JDK的關(guān)系如圖15所示。 圖15JVM、JRE與JDK的關(guān)系 2. 建立Java SE開發(fā)環(huán)境 步驟1: 安裝JDK(本書使用JDK 1.6版本)。 (1) 準(zhǔn)備好JDK的安裝文件jdk6u18windowsi586se版.exe。從Oracle公司的網(wǎng)站(http://www.oracle.com/technetwork/java/javase/downloads/indexjsp138363.html)下載JDK工具包。 (2) 運(yùn)行.exe文件,安裝JDK。默認(rèn)安裝在C:\\Program Files\\Java目錄下,本書更改安裝在D:\\Java目錄下。 (3) 按照安裝向?qū)У奶崾,完成安裝,即可看到如圖16所示文件夾。 圖16安裝JDK后的文件夾 ① bin: 一些執(zhí)行文件,包括Java的編譯器、解釋器和工具。 ② demo: 各種演示的實(shí)例。 ③ lib: 保存的庫文件。 ④ include: Win32子目錄,都是本地文件。 ⑤ jre: Java程序運(yùn)行環(huán)境的根目錄。 其中,bin文件夾包含將來要使用的各種Java命令,但是這些命令本身并不在Windows環(huán)境之中。要想使用這些命令,必須先在Windows中注冊(cè)。 步驟2: 設(shè)置環(huán)境變量。 在JDK安裝完畢后,需設(shè)置path和classpath這兩個(gè)環(huán)境變量。這是程序編譯和運(yùn)行的重要保證。 path指示Java命令的路徑,如javac、java、javaw等。這樣,在控制臺(tái)下面編譯、執(zhí)行程序時(shí)就不需要再輸入路徑了。 由于JDK的安裝路徑多次使用,在此先新建環(huán)境變量JAVA_HOME,操作步驟如下。 (1) 選擇“我的電腦”→“屬性”命令,在打開的窗口中選擇“高級(jí)系統(tǒng)設(shè)置”命令,打開“系統(tǒng)屬性”對(duì)話框,如圖17所示。 (2) 選擇“高級(jí)”選項(xiàng)卡,然后單擊“環(huán)境變量”按鈕,打開“環(huán)境變量”對(duì)話框,如圖18所示。 (3) 單擊“系統(tǒng)變量”欄中的“新建”按鈕,彈出“編輯系統(tǒng)變量”對(duì)話框。在“變量名”文本框中輸入JAVA_HOME,在“變量值”文本框中輸入C:\\Java\\jdk1.7.0_03,如圖19所示。 path環(huán)境變量包含在Windows系統(tǒng)里,修改一下,使其指向JDK的bin目錄,即在“環(huán)境變量”對(duì)話框中單擊“系統(tǒng)變量”欄中的“編輯”按鈕,彈出“編輯系統(tǒng)變量”對(duì)話框,然后在“變量值”文本框的*前面加上路徑,再用“;”將后面的路徑分隔開,如“%JAVA_HOME%\\bin;”,如圖110所示。 注意: 環(huán)境變量的各變量值之間需用分號(hào)分隔。 圖17“系統(tǒng)屬性”對(duì)話框 圖18“環(huán)境變量”對(duì)話框
你還可能感興趣
我要評(píng)論
|