本書以Java SE7.0為基礎,注重可讀性和實用性,全面系統地介紹Java SE的核心技術,通過條理清晰的知識歸納和通俗易懂的實例講解,可以使學習者快速掌握Java SE的核心技術,從而使用Java解決一般問題。本書配套豐富,培訓、教學、自學均可。
第章 1 Java語言概述
Java是一門面向對象的程序設計語言。本章首先介紹Java的發展歷程,讓讀者對Java有基本的認識,了解Java的特點和運行機制;然后詳細講解Java開發環境的搭建和開發流程,包括一些基本的注意事項。 通過本章的學習,達到以下目標。 認識Java,并了解其發展歷程。 熟悉Java語言的特點及應用領域。 掌握安裝并配置Java開發環境的方法。 掌握Java中Path及classpath屬性的作用。 能夠編寫并運行一個簡單的Java程序。 掌握Java的開發流程。 了解常用的Java開發工具。 1.1認識Java〖*2〗1.1.1什么是Java在認識Java之前,先了解幾個基本概念。
1. 軟件開發 軟件開發是根據用戶要求建造軟件系統或者系統中的軟件部分的過程。軟件開發是一項包括需求捕捉、需求分析、設計、實現和測試的系統工程。軟件是一系列按照特定順序組織的計算機數據和指令的集合,分為系統軟件和應用軟件。軟件一般使用某種程序設計語言來實現,通常采用相應的開發工具進行開發。 開發出來的軟件系統可以幫助人們解決和處理各種問題,必然產生人機交互。人機交互方式有兩種: 圖形化界面(Graphical User Interface,GUI)和命令行方式(Command Line Interface,CLI)。*種方式簡單直觀,用戶易于接受,容易上手操作,如Windows操作系統;第二種方式需要一個控制臺,用戶輸入特定的指令,讓計算機完成操作,較為麻煩,需要用戶記住一些命令,如DOS操作系統。
2. 計算機語言 語言是人與人之間用于溝通的一種方式。例如,中國人與中國人用普通話溝通;中國人要和英國人交流,需要學習英語。計算機語言是人與計算機交流的方式。如果人要與計算機交流,需要學習計算機語言。計算機語言有很多種,如C、C++、Java、PHP等。Java程序設計 00第1章 Java語言概述 00Java是Sun公司(全稱Stanford University Network,1982年成立。2009年4月20日,被甲骨文公司以約74億美元收購)開發的一套編程語言,主設計者是James Gosling(見圖11),*早來源于一個叫Green的項目。這個項目*初的目的是為家用電子消費產品開發一個小巧、易用、安全穩定、與平臺無關的分布式代碼系統,以便通過網絡對家用電器進行控制。一開始,Sun公司的工程師們準備采用C++語言來開發,但由于C++過于復雜,安全性差,于是他們決定基于C++開發一種符合自己要求的新語言。1991年4月,歷時18個月,新語言的*個版本誕生了。命名時, James Gosling看到窗口的橡樹(見圖12),遂為其取名為Oak,希望它能夠有橡樹一般堅強的生命力。后來,他發現“Oak”是Sun公司另外一種語言的注冊商標,于是1995年將這種新語言更名為“Java”,即太平洋上一個盛產咖啡的島嶼的名字。Java是一種用于網絡的,精巧而安全的語言,使得程序能夠*大限度地利用網絡資源。 圖11James Gosling 圖12印度橡樹 Java語言發展到今天,有過多個版本。1995年5月23日,Sun公司推出Java JDK 1.0版,標志著Java正式進軍Internet。1998年,Sun公司對JDK 1.0升級,并推出JDK 1.2的開發包,加入大量的輕量級組件包。從此,Java正式命名為Java 2。 Java語言經歷了以下3個發展方向。
(1) J2SE(Java 2 Platform Standard Edition): 包含構成Java語言核心的類,如數據庫連接、接口定義、輸入/輸出和網絡編程,主要用于開發一般個人電腦上的應用軟件。
(2) J2ME(Java 2 Platform Micro Edition): 包含J2SE中的一部分類,用于消費類電子產品的軟件開發,如呼機、智能卡、手機、PDA和機頂盒。
(3) J2EE(Java 2 Platform Enterprise Edition): 即Java企業版,包含J2SE中的所有類,還包含用于開發企業級應用的類,如EJB、Servlet、JSP、XML和事務控制,也是現在Java應用的主要方向,用于開發企業級應用軟件。 上述3項中的核心部分是J2SE,J2ME和J2EE是在J2SE基礎上發展起來的。 【注】 在2005年“Java十周年大會”之后,上述3門技術被重新命名。 (1) J2SE更名為Java SE。 (2) J2ME更名為Java ME。 (3) J2EE更名為Java EE。 1.1.2Java語言的特點 Java總是和C++聯系在一起,而C++是從C語言派生而來的,所以Java語言繼承了這兩種語言的大部分特性。Java的語法從C語言繼承而來,Java許多面向對象的特性都受到C++的影響。事實上,Java中的幾個自定義特性都來自于或可以追溯到它的這些前驅語言。略有不同的是,Java語言完全面向對象,摒棄了C和C++的不足。Java語言的誕生與過去近30年中計算機語言的不斷改進和發展密切相關。 Sun公司在《Java白皮書》中對Java的定義是: “Java: A simple, objectoriented, distributed,interpreted,robust,architectureneutral,secure,portable,highperformance,multithreaded,and dynamic language.”即Java是一種具有簡單、面向對象、分布式、解釋型、健壯、安全、與體系結構無關、可移植、高性能、多線程和動態執行等特性的語言。下面簡述Java的主要特性。
1. 簡單易用 Java語言是一種相當簡潔的面向對象程序設計語言,它省略了C++語言中所有難以理解、容易混淆的特性,如頭文件、指針、結構、單元、運算符重載和虛擬基礎類等,更加嚴謹、簡潔。 Java源代碼的書寫不拘泥于特定的環境,可以使用記事本、文本編輯器等;將源文件編譯后,可直接運行;再通過調試,得到預期的結果。 此外,Java可以自動完成垃圾收集工作,回收不再使用的內存,使用戶無須擔心內存管理之類的事情。
2. 面向對象 面向對象是指以對象為基本粒度,其下包含屬性和方法。對象的說明用屬性表達,通過使用方法來操作這個對象。可以這么說,面向對象是軟件工程學的一次革命,大大提升了人類的軟件開發能力,是一個偉大的進步,是軟件發展重大的里程碑。作為一種現代編程語言,是不能偏離面向對象這一方向的,Java語言也不例外。 Java是一種面向對象的語言,具有面向對象的諸多優點,如代碼擴展、代碼復用等。
3. 分布式 Java語言具有強大的、易于使用的聯網能力,非常適合開發分布式計算的程序。Java應用程序可以像訪問本地文件系統那樣通過URL訪問遠程對象。 使用Java語言編寫Socket通信程序比使用其他任何語言都簡單。它適用于公共網關接口(CGI)腳本的開發,還可以利用Java小應用程序(Applet)、Java服務器頁面(Java Server Page,JSP)、Servlet等手段構建更豐富的網頁。
4. 解釋型 Java是一種解釋型語言,相對于C/C++,用Java語言寫出來的程序效率低,執行速度慢。但它可以通過在不同平臺上運行Java解釋器,解釋Java代碼,實現“一次編寫,到處運行”的目標。為此,犧牲效率是值得的。而且,現在的計算機技術日新月異,運算速度越來越快,用戶不會感到太慢。
5. 健壯 Java語言在偽編譯時做了許多早期潛在問題的檢查,在運行時又做了一些相應的檢查,可以說是一種*嚴格的編譯器。它的這種“防患于未然”的手段將許多程序中的錯誤扼殺在“搖籃”之中,使得許多在其他語言中必須通過運行才會暴露出來的錯誤,在編譯階段就被發現了。 另外,Java語言具備保證程序穩定、健壯的特性,有效地減少了錯誤,使Java應用程序更加健壯。
6. 具有較高的安全性 人們設計Java語言時,在安全性方面考慮得很仔細,做了許多探究,使其成為目前*安全的一種程序設計語言。 對Java來說,安全性分為4個層面,即語言級安全性、編譯時安全性、運行時安全性和可執行代碼安全性。語言級安全性指Java的數據結構是完整的對象,這些封裝過的數據類型具有安全性。編譯時,要進行Java語言和語義的檢查,保證每個變量對應一個值,編譯后生成Java類。運行時,Java類需要使用類加載器載入,由字節碼校驗器校驗之后才可以運行。Java類在網絡上使用時,對其權限進行了設置,以保證被訪問用戶的安全性。
7. 可移植性 對于程序員而言,寫出來的程序如果不需要修改就能夠同時在Windows、Mac OS、UNIX等平臺上運行,簡直就是美夢成真,Java語言讓這個原本遙不可及的事越來越近。使用Java語言編寫的程序,只需較少的修改,甚至有時根本不需修改,即可在不同平臺上運行。
8. 擁有較高的性能 由于Java是一種解釋型語言,其執行效率就會低一些,但采取下述兩種措施,可使其擁有較高的性能。 (1) Java語言源程序編寫完成后,先使用Java偽編譯器進行偽編譯,將其轉換為中間碼(也稱為字節碼)再解釋。 (2) 提供了一種準實時(JustInTime,JIT)編譯器。當需要更快的速度時,使用JIT編譯器將字節碼轉換成機器碼,將其緩沖下來,速度就會更快。
9. 具有多線程處理能力 線程是一種輕量級進程,是現代程序設計中必不可少的一種特性。多線程是指允許一個應用程序同時存在兩個或以上的線程,用于支持事務并發和多任務處理。多線程處理能力使程序具有更好的交互性和實時性。 Java在多線程處理方面性能超群,除了內置的多線程技術之外,還定義了一些類、方法等來建立和管理用戶定義的多線程,具有讓用戶驚喜的強大功能,而且在Java語言中進行多線程處理也很簡單。
10. 是一種動態語言 Java是一種動態的語言,表現在以下兩個方面。 (1) 在Java語言中,可以簡單、直觀地查詢運行時的信息。 (2) 可以將新代碼加入到正在運行的程序中。 1.1.3Java程序的運行機制 在Java中處理代碼的過程如圖13所示。 圖13Java程序的運行機制 從圖13中可以看出,Java源文件名的后綴為.java,通過編譯,生成.class文件,在計算機上執行。此時執行.class的計算機并不是物理上可見的,而是Java自己設計的一臺計算機——Java虛擬機(Java Virtual Machine,JVM)。Java通過JVM進行可移植性操作。 在Java中,所有的程序都在JVM上運行。JVM是在一臺計算機上由軟件或硬件模擬的計算機,它讀取并處理編譯過的、與平臺無關的字節碼*.class文件。Java解釋器負責將Java虛擬機的代碼在特定的平臺上運行。JVM的基本原理如圖14所示。 圖14JVM的基本原理 從圖14中可以發現,所有的.class文件都在JVM上運行,即.class文件只需要認識JVM,由JVM去適應各個操作系統。如果不同的操作系統安裝了符合其類型的JVM,那么程序無論在哪個操作系統上都可以正確執行。 有些讀者可能很難理解以上的解釋。其實這個過程類似于下述情景: 有一位中國富商,同時要和美國、韓國、俄羅斯、日本、法國、德國等幾個國家的客戶洽談生意,可是他不懂這些國家的語言,所以他針對每個國家請了一位翻譯。他只對翻譯說話,不同的翻譯會將他說的話譯給相應的客戶。這樣,富商只需要對各位翻譯說話,就可以同幾個國家的客戶溝通。 【注】 Java的兩種核心機制如下所述。
(1) Java虛擬機(Java Virtal Machine),是一臺利用軟件方法實現的虛擬的計算機,具有指令集,并使用不同的存儲區域,負責執行指令,管理數據、內存、寄存器。對于不同的平臺,有不同的虛擬機。Java虛擬機屏蔽了底層運行平臺的差別,實現了“一次編譯,到處運行”。
(2) 垃圾收集機制(Garbage Collection),即回收不再使用的內存空間。在C/C++等語言中,由程序員負責回收無用內存。Java 語言撤銷了程序員回收無用內存空間的責任,它提供一種系統級線程來跟蹤存儲空間的分配情況,并在JVM空閑時,檢查并釋放那些可被釋放的存儲空間。垃圾回收在Java程序運行過程中自動執行,程序員無法精確控制和干預。
1.1.4Java語言的應用領域 Java技術自1995年問世以來,在我國的應用和開發迅速普及。總體來看,主要集中于企業應用開發。根據有關單位調查顯示,從開發領域的分布來看,Web開發占了一半以上,為57.9%;Java ME移動或嵌入式應用占15%;C/S應用占11.7%;系統編程占15.4%。近30%的開發者用Java從事C/S應用或系統級應用的開發。 Java語言主要應用在下述幾個領域。
1. 行業和企業信息化 由于Sun、IBM、Oracle、BEA等國際廠商相繼推出基于Java技術的應用服務器以及各種應用軟件,帶動了Java在金融、電信、制造等領域日益廣泛的應用。例如,清華大學計算機系利用Java、XML和Web技術研制開發了多個軟件平臺,東方科技的Tong Web、金蝶的Apusic、中創的Inforweb 等J2EE應用服務器,以及和佳ERP和寶信ERP等ERP產品,在許多企業得到應用。
2. 電子政務及辦公自動化 東方科技、金蝶、中創等公司開發的J2EE應用服務器在電子政務及辦公自動化中廣泛應用。例如,金蝶的Apusic在民政部、廣東省市工商局應用;東軟電子政務架構EAP平臺在社會保險、公檢法、稅務系統應用;中創的Inforweb等Infor系列中間件產品在國家海事局、山東省政府及中國建設銀行、民生銀行等金融系統應用;無錫永中科技基于Java平臺開發的國產化集成辦公軟件永中Office在一些省、市政府部門應用。
3. 嵌入式設備及消費類電子產品 無線手持設備、通信終端、醫療設備、信息家電(如數字電視、機頂盒、電冰箱)、汽車電子設備等是近年來比較熱門的Java應用領域。在這方面的應用有中國聯通CDMA 1X網絡中基于Java技術的無線數據增值服務——UniJa。
4. 輔助教學 在輔助教學方面,東南大學與中興通訊公司利用Java語言聯合開發了遠程教學系統,用于本地網上教學、課后學習和異地遠程教育;清華大學利用Java語言進行了計算機軟件基礎課教學改革,分析、研究Java教學軟件BlueJ的漢化方案;電子科技大學應用Java RMI技術進行遠程教育;西安電力高等專科學校采用Java技術開發了交互式電站仿真系統,實現電站鍋爐仿真、鍋爐膛火焰仿真,為實現網上仿真進行了有益的探索。
1.2Java開發環境與開發工具〖*2〗1.2.1Java開發環境一臺計算機上安裝了JVM,即可運行Java程序。但是要開發Java程序,還需建立Java開發環境。不同領域的Java開發應用所需的版本不同,本書使用Java SE開發環境。 1. Java SE的組成 Java SE是一個包含Java開發環境和運行環境的套件,由以下3項組成。
(1) Java Development Kit(JDK): Java應用程序開發環境。 Java不僅提供了豐富的語言和運行環境,還提供了一個免費的Java開發工具集(Java Development Kit,JDK),以便程序員開發Java 開發工具包。Java 2 SDK開發工具集如表11所示。表11Java 2 SDK開發工具集 工具名稱說明JavacJava編譯器,用于將Java源程序編譯成字節碼JavaJava解釋器,用于解釋、執行Java字節碼Appletviewer小應用程序查看器,用于測試和運行Java Applet程序JavadocJava文檔生成器JdbJava調試器JavapJava類文件反匯編器JavahC文件生成器,實現在Java類中調用C++代碼JDK中除了包括Java開發工具以外,還包括JRE,所以安裝了JDK,就不用單獨安裝JRE了。
(2) Java Runtime Environment(JRE): Java應用程序運行環境,包括Java虛擬機和Java程序所需要的核心類庫等。如果僅需運行開發好的Java程序,計算機只需要安裝JRE。
(3) Java Plugin: Java插件。 JVM、JRE與JDK的關系如圖15所示。 圖15JVM、JRE與JDK的關系 2. 建立Java SE開發環境 步驟1: 安裝JDK(本書使用JDK 1.6版本)。 (1) 準備好JDK的安裝文件jdk6u18windowsi586se版.exe。從Oracle公司的網站(http://www.oracle.com/technetwork/java/javase/downloads/indexjsp138363.html)下載JDK工具包。 (2) 運行.exe文件,安裝JDK。默認安裝在C:\\Program Files\\Java目錄下,本書更改安裝在D:\\Java目錄下。 (3) 按照安裝向導的提示,完成安裝,即可看到如圖16所示文件夾。 圖16安裝JDK后的文件夾 ① bin: 一些執行文件,包括Java的編譯器、解釋器和工具。 ② demo: 各種演示的實例。 ③ lib: 保存的庫文件。 ④ include: Win32子目錄,都是本地文件。 ⑤ jre: Java程序運行環境的根目錄。 其中,bin文件夾包含將來要使用的各種Java命令,但是這些命令本身并不在Windows環境之中。要想使用這些命令,必須先在Windows中注冊。 步驟2: 設置環境變量。 在JDK安裝完畢后,需設置path和classpath這兩個環境變量。這是程序編譯和運行的重要保證。 path指示Java命令的路徑,如javac、java、javaw等。這樣,在控制臺下面編譯、執行程序時就不需要再輸入路徑了。 由于JDK的安裝路徑多次使用,在此先新建環境變量JAVA_HOME,操作步驟如下。 (1) 選擇“我的電腦”→“屬性”命令,在打開的窗口中選擇“高級系統設置”命令,打開“系統屬性”對話框,如圖17所示。 (2) 選擇“高級”選項卡,然后單擊“環境變量”按鈕,打開“環境變量”對話框,如圖18所示。
(3) 單擊“系統變量”欄中的“新建”按鈕,彈出“編輯系統變量”對話框。在“變量名”文本框中輸入JAVA_HOME,在“變量值”文本框中輸入C:\\Java\\jdk1.7.0_03,如圖19所示。 path環境變量包含在Windows系統里,修改一下,使其指向JDK的bin目錄,即在“環境變量”對話框中單擊“系統變量”欄中的“編輯”按鈕,彈出“編輯系統變量”對話框,然后在“變量值”文本框的*前面加上路徑,再用“;”將后面的路徑分隔開,如“%JAVA_HOME%\\bin;”,如圖110所示。 注意: 環境變量的各變量值之間需用分號分隔。 圖17“系統屬性”對話框 圖18“環境變量”對話框