官术网_书友最值得收藏!

1.2 Java程序設計語言概述

Java語言是一種通用的面向對象程序設計語言,同時還是一種軟件開發環境和軟件運行環境。Java提供了設計優良且易于使用的庫,使設計Java程序更加容易和高效,大多數程序設計就是應用現有的庫對象解決自己的應用問題。

Java程序設計語言于1995年問世,1996年發布了第一個版本。Java語言問世之后,短短一年時間即躍升到TIOBE編程語言社區排行榜的第15位(見表1.1),從2002年至今一直穩居首位(見表1.2和圖1.1),是近二十年來最流行的程序設計語言,是當今最熱門的程序設計語言(見表1.1和表1.2)。

1.2.1 Java程序設計語言的特點

Java語言之所以長期受到人們的追捧,得益于其先進的設計思想和技術特征。

1. 采用了面向對象程序設計思想

首先,Java語言采用了面向對象程序設計思想:從要解決的問題中提取所有概念性的組件,然后在程序中將其表達為一個“對象”;程序是對象的集合,通過對象之間的消息傳遞告知彼此所要做的;可以以現有對象為基礎創建新類型的對象;每個對象都是某個類(一個類即一種類型)的一個實例,而每個類的最重要特性就是可以接收什么樣的消息;某一特定類型的所有對象都可以接收同樣的消息。

可以將對象理解為服務提供者,我們編制的程序向使用者提供服務,程序通過調用對象提供的服務實現目的,編程者的目標就是創建或在現有代碼庫中尋找能夠提供理想服務來解決問題的一系列對象。因此,采用面向對象程序設計方法開發程序時,主要是創建新的類(數據類型)或利用現有類適配待解決的問題,而不再強迫只能使用現有的用來表示機器中的存儲單元的數據類型,從而使軟件開發和維護更為容易和高效。

此外,Java語言還具備了某些面向組件編程的特性。面向組件編程(Component-Oriented Programming)是對面向對象技術的進一步發展,可以進一步簡化程序設計。在軟件開發中,組件通常指可重復使用并且可以和其他對象進行交互的對象,控件則是提供(或實現)用戶界面(UI)功能的組件,即控件是以圖形化的方式顯示在屏幕上并與用戶進行交互的對象。Java組件具有內視的特性,這樣就可以通過工具來實現Java組件的可視化。使用可視化方法設計Java圖形用戶界面程序時,可以將界面組件(如按鈕、菜單、表格、對話框等)以拼積木的方式組合出程序界面。在采用可視化方法設計Java圖形用戶界面程序時,除了用到控件外,還用到不需要顯示任何信息或用戶界面的組件。為了簡化敘述,本書不加區分地統一稱之為組件。

2. 簡單易用

面向對象程序設計的核心是類及類層次的設計和使用,人們對世界的認識也采用了基于共同性的分類和具有層次的分類系統,兩者具有天然的相似性和共通性。因此,對于初學程序設計的人,Java語言采用的面向對象程序設計思想更易理解和掌握,編程者只需采用形象思維,而不必采用程序化思維即可理解和設計程序。

Java語言衍生自C++語言,但是剔除了C++應用中很少使用、難以理解、容易混淆的特性,從而對于有程序設計基礎的人,使Java語言程序的設計變得簡單、更少出錯、程序運行更加穩定。

Java語言自發布之后持續不斷地對語言和功能進行了更新和擴展,其編程思想和語言結構緊跟現代程序設計語言發展潮流,同時持續不斷地擴充其類庫(見表1.3),提供了大量的編程組件(類和接口),為許多程序設計問題提供了現成的實現。此外,還有一些軟件公司(如IBM等)、開源組織(如Apache)及個人開發和提供解決特定(如網絡管理、大數據分析等)問題的Java組件。Java語言的應用編程人員可以直接使用這些組件編寫應用程序,從而使很多問題的Java程序開發十分簡單高效。

表1.3 Java語言的功能革新

3. 跨平臺

Java語言采用了獨特的技術實現了Java程序跨各種硬件平臺和跨各種操作系統運行,Java程序還可以在手機、平板電腦、數碼相機等移動設備,以及各種嵌入式設備中運行,實現“一次編寫,隨處運行”的目標。也就是說,同樣的Java程序既可以在Windows下運行,到了UNIX或者Linux環境也不用修改就直接可以運行了。

4. 網絡性能優異

Java語言網絡編程功能強大且易于使用。首先,Java平臺提供了設計良好的網絡類庫,可以輕松地處理常用網絡協議和網絡編程問題;其次,使用Java語言可以方便地編寫Web應用程序和各類網絡應用程序;第三,使用Java編寫的程序可以很好地運行于網絡環境,甚至可以直接在網頁中運行。

5. 安全健壯

為了使Java程序很好地在網絡和分布式環境中運行,Java語言和平臺的設計者投入了大量的精力進行早期的問題檢測、后期動態的(運行時)檢測,并消除了有出錯傾向的狀態。Java一開始即被設計為能夠防范各種攻擊,如能夠禁止一些病毒常用的攻擊手段(如蠕蟲病毒采用的運行時堆棧溢出)、禁止在自己的處理空間之外破壞內存、禁止未經授權讀寫文件等,從而使用Java可以構建防病毒、防篡改的系統。

6. 高性能

編程者編寫的Java程序首先編譯為針對Java虛擬機(詳見1.2.2節)的字節碼,然后將字節碼解釋為本地計算機的指令運行,這是早期的Java程序的解釋執行方式。現在的Java虛擬機采用了即時編譯技術,將Java程序的“熱點”代碼編譯為本地機器碼執行,因此Java程序的整體執行速度與直接執行本地機器碼的程序基本相同。由于Java程序的執行有一些C++程序沒有的額外開銷,因此早期有一些人抱怨Java程序比C++程序慢。但是,現在的計算機速度遠比人們發出抱怨的時候快,且采用了固態硬盤等技術,因此開銷對Java程序運行速度的影響已經十分微小,當前一個較慢的Java程序的運行速度甚至比幾年前相當快的C++程序的運行速度還要快一些。

人們普遍認為,C++語言具有較高的運行效率——運行速度快且節約內存。Java應用程序與其他的解釋型語言相比具有更高的性能,且隨著Java即時編譯技術的發展,Java程序的運行速度也越來越接近C++程序。

7. 多線程

許多程序設計問題都要求程序能夠同時對多個任務加以控制。一些程序需要在執行一項任務過程中停下手頭的工作,改為處理其他一些問題,之后再返回主進程;還有許多程序設計問題只要求將問題劃分進入獨立運行的程序片斷中,使整個程序能更迅速地響應用戶的請求。在一個程序中,這些獨立運行的片斷稱為線程(Thread),利用線程執行的處理就叫作多線程處理。例如,圖形用戶界面程序運行時,當用戶按下一個按鈕,程序需要花費較長時間從網絡中下載一幅較大尺寸的圖像,此時可以創建一個新線程執行圖像下載任務,程序仍然在原線程中運行以對用戶的后續操作進行響應,而不是讓用戶等待程序完成了下載任務以后才開始響應。因此,程序的多線程運行可以帶來更好的交互響應和實時行為。另一方面,當前的計算機甚至是智能手機都采用了多核多線程技術。充分利用處理器的多個核心是系統設計和程序設計追求的一個重要目標。可以將程序在邏輯上分割為數個線程,各個線程分別在不同的核心上執行會運行得更快。

Java語言通過其精心設計的類庫支持多線程編程,使Java應用程序通過簡單地使用有關類即可創建、調度和同步多個線程。只要操作系統支持,Java程序中的多個線程就可以利用多個核心和多個處理器。盡管主流計算機平臺的線程實現各不相同,但在不同計算機平臺中Java程序使用多線程的代碼完全相同,這樣使Java語言的多線程程序開發既簡單又高效。

8. 資源免費

Java語言最初由Sun公司開發,Sun公司對Java的發展通過一個開放的國際組織JCP(Java Community Process)同時與許多其他的公司一起聯手進行Java技術規范、參考實現(RI)、技術兼容包(TCK)和類庫的發展開發及更新。Java虛擬機及類庫的源代碼可以免費獲取。

2007年,Sun聲稱Java未來版本將在GPL(Generic Public License)下使用。2009年4月20日,甲骨文公司(Oracle)收購Sun公司并獲得Java版權。甲骨文公司一直致力于保持Java開源。目前,任何人都可以免費在桌面和服務器平臺獲取、使用和修改Java,但在嵌入式系統使用Java則需要支付專利費,不過在十年之內這些專利就會到期,那時Java就能完全免費使用。

此外,Java的開發工具JDK,當前主流的兩大Java開發平臺Eclipse和NetBeans都是可以免費獲取和使用的。

1.2.2 Java平臺

Java不只是一種程序設計語言,還是一個完整的平臺——運行在各種終端(如個人計算機、服務器、移動設備、嵌入式設備)上的系統軟件,為Java程序的開發和運行提供了完整的支持。

1. JDK

JDK是Java Development Kit的縮寫,是提供給Java開發人員的一套Java程序開發工具集。JDK是整個Java的核心,包括Java運行環境(Java Runtime Environment),一套Java程序開發工具和Java基礎類庫。

最主流的JDK是Sun公司發布的JDK,2009年之后由Oracle公司開發和維護,也是最常用的JDK。此外還有許多公司和組織都開發了自己的JDK,且各有特色。例如,IBM公司開發的JDK,BEA公司的JRocket,還有GNU組織開發的JDK等。其中,IBM的JDK包含的JVM(Java Virtual Machine)運行效率要比Sun JDK包含的JVM高出許多,而專門運行在x86平臺的JRocket在服務端運行效率也要比Sun JDK好很多。本書介紹Sun/Oracle發布的JDK。

1996年1月,Sun公司發布了Java的第一個開發工具包并命名為JDK 1.0,1997年2月發布了JDK 1.1。1999年6月發布JDK 1.2并簡稱為Java 2,包含J2SE、J2ME和J2EE三大平臺,之后發布的JDK 1.3和JDK 1.4都屬于Java 2。2004年9月,發布了Java語言的重大擴展和改進版本J2SE 1.5,并更名為Java SE 5.0(簡稱Java 5或JDK 5)。2005年6月發布的JDK 1.6稱為Java SE 6,簡稱Java 6或JDK 6;2011年7月發布了Java SE 7,簡稱Java 7或JDK 7;2014年3月發布了Java SE 8(簡稱Java 8或JDK 8),這是又一個具有重大擴展和改進的版本;2017年9月發布了Java SE 9(簡稱Java 9或JDK 9),引入了模塊化系統,一種快速運行Java語句的命令行工具JShell等。在Java 9之后,Oracle調整為每半年發布一個Java的大版本,于是于2018年3月20日正式發布了Java 10,同時有一個基于發布時間的版本號18.3。此外,Java 8和將于18年9月發布的Java 11(18.9 LTS)是長期支持版(LTS),而Java 9和Java 10不是。

進行Java程序開發首先需要安裝和配置JDK,主要步驟如下。

1)下載JDK

訪問網站http://www.oracle.com/technetwork/cn/java/javase/downloads/index.html,在頁面(見圖1.2)中單擊所選版本,例如Java SE 8u144下的圖標,在選定版本下載頁面單擊,然后在下載文件列表中單擊所需要計算機平臺的文件下載鏈接(如,見圖1.3),即可下載到所選的JDK文件(如)。

2)安裝JDK

在Windows系統下雙擊所下載的JDK文件圖標,運行JDK安裝程序,即開始Java SE開發工具包的安裝向導。單擊“下一步”按鈕,選擇要安裝的功能(見圖1.4),必要時可以單擊“更改”按鈕修改JDK的安裝文件夾位置。單擊“下一步”按鈕,安裝程序開始復制文件。之后出現設置JRE安裝目標文件夾的向導頁(見圖1.5),單擊“下一步”按鈕使用默認位置(必要時可以單擊“更改”按鈕以修改JRE的安裝文件夾位置)。最后單擊“關閉”按鈕即完成JDK的安裝過程。

圖1.2 JDK下載網站

圖1.3 JDK下載頁面

圖1.4 Java SE開發工具包的安裝向導——可選功能

圖1.5 設置JRE安裝目標文件夾

3)JDK目錄結構

JDK 8及以前版本采用了基本一致的目錄結構(見圖1.6(a)),JDK_HOME是安裝JDK的目錄。而JDK 9版的目錄結構則有較大變化(見圖1.6(b)),最大的變化就是刪除了JDK和JRE之間的區別,增加了包含平臺模塊的jmods目錄,JDK 10版本與此相同。

圖1.6 JDK目錄結構

4)配置JDK環境變量

在Windows 7操作系統中單擊按鈕,在“開始”菜單中單擊“控制面板”,運行控制面板程序。在“所有控制面板項”窗口單擊“系統”項,在新窗口的左窗格單擊“高級系統設置”項。在新出現的“系統屬性”窗口單擊“環境變量”按鈕,之后在“環境變量”窗口進行設置。

在JDK 1.5之前的版本需要配置JAVA_HOME、CLASSPATH和Path三個環境變量,之后的高版本只需要配置Path即可。Path環境變量的具體配置方法是,在系統變量列表選擇Path變量,單擊下部的“編輯”按鈕,在“變量值”輸入框后添加“;JDK安裝目錄\bin”,例如“;C:\Program Files (x86)\Java\jdk1.8.0_144\bin”,單擊“確定”按鈕,接著單擊“確定”按鈕,最后單擊“確定”按鈕即可完成配置。

在Windows10系統中單擊桌面左下角的“開始”菜單,在“開始”菜單中找到并單擊“Windows系統”菜單下的“控制面板”菜單項。在“控制面板”窗口單擊“系統和安全”項,單擊右邊窗格的“系統”項,之后單擊“系統”窗口左窗格的“高級系統設置”項即可出現“系統屬性”窗口。其余設置過程與Windows 7中的相同。

在Windows 7系統中打開“開始”菜單,單擊“所有程序”|“附件”|“命令提示符”菜單項。在Windows 10系統中打開“開始”菜單,單擊“Windows系統”|菜單項。在“命令提示符”窗口輸入“javac -version”和“java -version”,如果命令輸出類似于如圖1.7所示,則說明JDK的安裝和環境變量的配置是正確的。

圖1.7 JDK環境變量配置測試窗口

2. JRE

JRE為Java Runtime Environment的簡稱,即Java運行時環境,是可以在其上運行、測試和傳輸應用程序的Java平臺,包括Java虛擬機(JVM)、Java核心類庫和支持文件。JRE自帶的基礎類庫主要是JRE\lib\rt.jar文件,包括Java平臺標準版的所有類庫,與JRE的版本一致。Java Plug-in軟件是JRE的重要組成部分,為Java Applet(小應用程序)和JavaBean組件在使用Sun的JRE瀏覽器中的運行提供了支撐。

如果只需運行Java程序或Applet而不開發Java軟件,則只需要下載并安裝JRE即可。在如圖1.2所示頁面中單擊所選版本的圖標,即可打開JRE的下載頁面(見圖1.8),接受許可協議后單擊所需要計算機平臺文件的下載鏈接即可獲得所需的JRE。但是,采用不同版本的JDK開發的Java程序需要在對應版本的JRE下運行,因此Java程序開發者在發布其軟件時都應該帶有適當版本的JRE,而不需要用戶自己下載JRE軟件。事實上,在開發者安裝JDK時已經同時安裝了JRE(見圖1.5),在發布Java程序時帶上這個文件夾及其中的文件(如C:\Program Files (x86)\Java\jre1.8.0_144)即可。

圖1.8 Sun的JRE下載頁面

3. JVM

JVM是Java Virtual Machine的縮寫,中文叫作Java虛擬機,是在實際的計算機系統上仿真模擬各種計算機功能來實現的虛構出來的計算機。Java虛擬機是運行所有Java程序的抽象計算機,是Java程序運行環境的核心。

JVM是一種用于計算設備的規范,這個規范描述了一個指令集、一組寄存器、一個堆棧、一個“垃圾堆”和一個方法區。一旦一個Java虛擬機在給定的平臺上運行,任何Java程序(編譯之后的程序,稱作字節碼)都能在這個平臺上運行。開發者使用Java語言編寫的Java源程序經過JDK的編譯器編譯之后生成字節碼(.class)文件。Java虛擬機以一次一條指令的方式來解釋字節碼并把它映射到實際的處理器指令,也可以將字節碼由即時(Just-In-Time, JIT)編譯器進一步編譯為實際處理器指令執行。

JVM開發者針對各種不同的硬件設備(如Intel計算機、Mac計算機和各類手機等)及不同的操作系統(如Windows、Linux和Mac OS X等)構成的主流平臺,都開發出相應的Java虛擬機軟件系統。這些不同的JVM都實現了共同的JVM規范,任何Java程序都是針對共同的JVM編程和運行(見圖1.9),因而Java語言和Java程序實現了平臺無關性及跨平臺運行,這是Java語言最具吸引力的特性之一。

4. Java類庫

Java官方為Java程序開發者提供了眾多實現各種基本編程任務的功能強大的類,這些類按照功能分類組織在各個包中,隨JDK一起發布,稱為Java類庫或Java API(Application Programming Interface,應用程序編程接口)。

圖1.9 Java程序跨平臺運行原理示意

Java官方同時為Java類庫提供了完善的API文檔。在JDK下載網站頁面(見圖1.2)的右邊單擊Java資源列表中的API鏈接,就會打開Java API規范版本選擇頁面(見圖1.10),單擊頁面中部適當版本的鏈接(如Java SE 8),即可打開Java API文檔首頁(見圖1.11)。在Java API文檔網站可以找到Java標準平臺的類庫使用方法和幫助文檔。

Java類庫是Java平臺的最主要組成部分之一。Java類庫使Java程序設計者可以輕松完成原本有一定難度的編程任務,如數學計算、聯網、多線程編程、圖形用戶界面設計、數據庫操作、數據的輸入輸出、安全加密、圖形圖像處理和聲音處理等。Java類庫系統是Java獲得成功并廣泛流行的主要原因。

圖1.10 Java API規范版本選擇頁面

圖1.11 Java API文檔首頁

1.2.3 Java語言的應用

Java語言是一種通用的程序設計語言,在個人計算機上的桌面圖形用戶界面程序設計,行業和企業信息化、管理自動化以及電子政務等方面的應用程序設計,智能手機等消費類電子產品、嵌入式設備應用程序以及游戲程序的開發等方面都得到了廣泛的應用。

Sun公司于1999年在美國舊金山召開的Java One(Open Net Environment)大會上公布了Java體系架構,該架構根據應用開發的級別將Java應用平臺劃分為三個版本,分別是Java標準版、Java企業版和Java微型版(見圖1.12)。

圖1.12 Java應用平臺

1. 標準版(Java SE)

Java SE是Java平臺標準版的簡稱(Java Platform Standard Edition,舊版本稱為Java 2 Platform),用于開發和部署桌面計算機、服務器以及嵌入設備和實時環境中的Java應用程序。Java SE基于JDK和JRE,包括用于開發Java程序的基礎類庫,也是其他Java技術的基礎。

2. 企業版(Java EE)

Java EE是一種利用Java平臺來簡化企業解決方案的開發、部署和管理相關復雜問題的體系結構。Java EE技術的基礎是核心Java平臺或Java平臺的標準版,對標準版進行功能擴展,提供一系列功能用以解決進行企業應用開發中所面臨的復雜問題,通過中間層集成框架技術滿足無需太多費用而又需要高可用性、高可靠性以及可擴展性的應用開發的需求,使企業開發者大幅縮短其Java應用系統投放市場的時間。

Java EE不僅鞏固了標準版的許多優點,例如“編寫一次,隨處運行”的特性、方便的數據庫存取、分布式計算接口以及能夠在Internet應用中保護數據的安全模式等,同時還提供了對企業Java組件EJB、Web服務器端Java編程接口、Java服務器頁面JSP以及XML技術的全面支持。

3. 微縮版(Java ME)

Java ME是Java微縮版(Java Platform Micro Edition)的簡稱,是對標準版Java SE進行功能縮減后的版本。Sun公司將Java ME定義為“一種以廣泛的消費性產品為目標的高度優化的Java運行時環境,包括尋呼機、移動電話、可視電話、數字機頂盒和汽車導航系統”。為移動設備(包括消費類產品、嵌入式設備、高級移動設備等)提供了基于Java環境的開發與應用平臺。

Java ME目前分為三類配置,一類是面向小型移動設備的CLDC(Connected Limited Device Profile),另一類是面向功能更強大的移動設備如智能手機和機頂盒,稱為CDC(Connected Device Profile)。Java ME有自己的類庫,其中,CLDC使用專用的稱為KVM的Java虛擬機。Java Card技術主要是讓智慧卡或與智慧卡相近的裝置上,以具有安全防護性的方式來執行小型的Java Applet,此技術也被廣泛運用在SIM卡、提款卡上。Java Card VM是標準JVM的子集,負責對Java Applet進行程序直譯、執行及結果回應。

Java ME在開發面向內存有限的移動終端的應用時顯得尤其實用,因為它是建立在操作系統之上的,使得應用的開發無須考慮太多特殊的硬件配置類型或操作系統。因此,開發商也無須為不同的終端建立特殊的應用,制造商也只需要簡單地使它們的操作平臺可以支持Java ME即可。在物聯網領域,Java程序“一次編寫,隨處運行”的特性顯著地降低了成本,使Java語言成為企業級物聯網發展戰略中不可或缺的重要一環。

4. 安卓系統的應用開發采用Java語言

多數智能手機和平板電腦都采用Android(安卓)操作系統,此類產品已經非常普及。隨著移動互聯網的到來和迅猛發展,移動互聯網開發的需求與日俱增。Android應用的開發語言用的是Java語言,并且在Android中也用到了Java核心類庫的大量類,因此,掌握Java程序設計語言是進行Android應用開發的基礎。

此外,Java是大數據平臺解決方案的重要實現語言之一。在大數據處理領域,以Java為基礎的工具群興起,Hadoop是以Java為基礎的架構并以這樣或那樣的方式使用Java。很多有用的軟件和開發工具是用Java開發的,例如Eclipse、IntelliJ、NetBeans IDE。

主站蜘蛛池模板: 汉阴县| 邻水| 交口县| 宁德市| 磴口县| 荥经县| 滕州市| 阿拉善右旗| 灵寿县| 和田市| 上犹县| 清镇市| 财经| 清镇市| 无极县| 寿宁县| 丰都县| 和林格尔县| 和政县| 大连市| 会同县| 民和| 醴陵市| 大足县| 特克斯县| 东至县| 方城县| 雅江县| 麻江县| 宝鸡市| 崇文区| 东莞市| 桐柏县| 邯郸市| 红河县| 镇巴县| 宁强县| 安仁县| 盐山县| 报价| 麻江县|