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

1.1 Java技術

Java既是編程語言也是軟件平臺,作為編程語言的Java有一套自己的機制,實現源程序到處理器可執行程序間的過渡與轉換,作為軟件平臺,Java為程序員提供了編程接口和Java虛擬機(Java Virtual Machine,JVM),下面將依次介紹。

1.1.1 認識Java語言

Java作為一種高級語言具有許多優良特性,如跨平臺、面向對象、分布式、多線程、安全性、健壯性、簡單性等,這些優良的特性在讀者學習完本書后會深有體會。

在Java語言中所有源代碼都可以通過無格式的記事本編寫,并保存為.java文件,因為通過該擴展名,Java編譯器會知道該文件是自己可以處理的文件。經過編譯后的文件為.class文件,該文件是字節碼文件,此時.class文件不能被處理器直接讀取執行,必須通過虛擬機轉換成二進制文件,才可以被處理器執行。圖1-1是Java程序的開發過程,整個過程說明了上面敘述的內容。

圖1-1 Java程序的開發過程

Java是跨平臺的高級編程語言,這里的平臺是指操作系統平臺,如Windows、UNIX、Mac、Linux等。使用Java語言編寫的程序一次編譯就可以在所有平臺上運行,就是因為有Java虛擬機的存在。Sun公司(已被Oracle公司收購)提供了在各種操作系統平臺上安裝、運行的Java虛擬機,Java虛擬機可以執行.class文件。這樣也就實現了眾所周知的“一次編譯,隨處運行”的理想。圖1-2演示了在不同平臺上通過Java虛擬機執行Java程序的過程,從中可以清楚地理解Java虛擬機的作用。

圖1-2 不同平臺上通過JVM執行Java程序

注意 圖1-2中的“HelloWorld.class”也代表一個應用程序,應用程序本身就是經過打包的.class文件的集合。并且在不同的平臺上安裝的JVM是不同的,需要到官方網站上下載適合自己機器操作系統平臺的虛擬機。

1.1.2 認識Java平臺

Java語言也是一種軟件平臺。平臺可以理解為軟件運行所需的軟件或硬件環境,如操作系統可以看作軟件平臺,它提供了應用程序運行的環境,如在Windows操作系統上運行Word字處理程序。當然如果從用戶的角度看,操作系統其實是軟件和硬件相結合的綜合平臺,因為操作系統對硬件的操作用戶是看不見的,但是操作系統又確實管理并運行在硬件平臺上。

而Java語言作為軟件平臺,為Java源程序編寫和運行提供了完善的環境。但是該Java提供的軟件平臺不與硬件發生任何關系,該平臺是純軟件平臺,運行在操作系統上。不同的操作系統編寫了相應的JVM。作為軟件平臺的Java由兩部分組成:

Java虛擬機:Java虛擬機是Java軟件平臺的基礎,不同的操作系統平臺對應不同的虛擬機。

Java應用編程接口(Java API):API是一套編寫好的軟件組件的集合,這些API按照功能通過包(package)來提供,包就是一系列具有相似功能的類和接口的集合。圖1-3是Java虛擬機和應用編程接口與各種操作系統的軟件層次關系。

圖1-3 Java API和Java虛擬機

1.1.3 Java語言的功能

Java語言作為完善而強大的軟件平臺,每個版本都會提供如下的功能或組件。

1.開發工具

開發工具提供了諸如編譯、執行、調試、文檔化等功能,開發人員可以使用這些工具來編譯、調試自己的程序。初學者經常使用的Java工具有Javac源程序編譯工具、Java程序執行工具和Javadoc源程序文檔化工具等,具體的功能將在本章后面介紹。讀者將會了解如何使用Javac和其他Java工具。

說明 Javac編譯工具其實就是在DOS下運行的一個命令,而DOS命令不區分大小寫,所以本章有時候在DOS窗口中輸入命令的時候,也直接說是javac命令。

2.應用編程接口

Java API提供了Java語言的核心功能,開發人員可以直接調用這些方法或實現其中的接口來滿足自己程序設計的需要,如需要對數據進行排序或搜索,Java提供了具體的類來實現,開發人員只要了解這些類的基本功能和類中的方法就可以調用這些功能。讀者可以翻閱JDK的HTML文檔來搜索自己需要的功能。

3.用戶接口工具集

其實這個工具集就是提供如何編寫圖形用戶界面程序(即GUI程序),為應用程序提供一個友好的用戶界面,任何復雜的程序界面都可以通過該工具集中的類或接口實現,具體請參看本書的第20章。

4.集成類庫

該類庫提供了集成工具來完成復雜的行為,如Java為訪問數據庫提供了JDBC API;為實現遠程方法提供了Java RMI,該方法實現了對網絡遠端的Java程序的調用,是Java實現分布式計算的重要基礎。

1.1.4 Java語言的優點

Java語言與其他語言(如C++、Delphi、C#等)相比,有自己的優勢,無論你學習Java的初衷如何,Java語言確實使你的程序更友好,并且減少了你的工作量。下面將介紹Java語言的優點以證實上述說法。

1.入門更快

因為Java語言是一門強大的面向對象語言,所以只要理解面向對象技術(符合人類處理事情的思維方式),就很容易學習這門語言。如果讀者已經學習過C++語言或C語言,將更容易進入Java世界。

2.代碼量少,開發速度更快

同C++語言比較,同樣的程序使用Java語言編寫只需要較少的類和方法。Java語言比C++語言簡單,相同功能的程序需要更少的代碼行。

3.編碼更容易

Java語言提供良好的編碼規范,使得Java語言編寫的程序具有統一的“外表”,并且Java支持垃圾回收機制(GC),所以不會像C++中那樣出現內存泄漏的問題,這樣開發人員就可以集中精力編寫程序所需的類,而不用考慮何時、如何回收這些類對象了,只要在需要時創建對象即可,其他操作都由GC處理。Java的面向對象特性、JavaBeans組件架構和功能強大的API,都使得開發人員可以容易地重用經過嚴格測試的代碼,這些API的使用也減少了程序中Bug的數量。

4.避免平臺依賴,程序的平臺獨立性

Java語言編寫的類庫可以在其他平臺上的Java應用程序中使用,而不像C++語言那樣必須依賴于Windows平臺。Java源程序被編譯成字節碼,字節碼通過操作系統平臺上的JVM來解釋而獲得運行,這樣使用Java語言編寫的程序不依賴于特定的平臺,實現“一次編寫,隨處運行”。

1.1.5 Java分布式應用和多線程的特點

本節講述Java程序的分布式和多線程的特點。分布式包括數據分布和操作分布。數據分布是指數據可以分散在網絡的不同主機上,操作分布是指把一個計算分散在不同的主機上處理。

Java支持客戶端/服務器計算模式,因此它支持這兩種分布。對于數據分布,Java提供了一個叫作URL的對象,利用這個對象,可以打開并且訪問具有相同URL的對象,訪問方式與訪問本地文件系統相同。對于操作分布,Java的Applet小程序可以從服務器下載到客戶端,即部分計算在客戶端進行,提高系統執行效率。有關分布式的原理如圖1-4所示。

圖1-4 分布式示意圖

Java提供了一整套網絡類庫,開發人員可以利用這些類庫進行網絡程序設計,方便地實現Java的分布式特性。

線程是操作系統的一種新概念,線程又被稱作輕量進程,是比傳統進程更加小的并且可以并發執行的單位。Java提供了多線程的支持。

Java在兩方面支持多線程。一方面,Java環境本身就是多線程的。若干個系統線程運行,負責必要的無用單元回收、系統維護等系統級操作;另一方面,Java語言內置多線程控制,可以大大簡化多線程應用程序的開發。

Java提供了一個Thread類,由它負責啟動、運行、終止線程,并且可以檢查線程狀態。Java線程還包括一組同步原語,這些原語負責對線程實行并發控制。利用Java的多線程編程接口,開發人員可以方便地寫出支持多線程的應用程序,從而提高程序執行的效率。Java的多線程在一定程度上受運行時所在平臺的限制,如果操作系統不支持多線程,那么Java程序的多線程特性就不能表現出來。

1.1.6 Java程序的可靠性、安全性

本節將詳細講述Java的可靠性和安全性。Java最初的設計目的是針對電子類消費品中的應用,因此要求較高的可靠性。Java雖然源于C++,但它消除了C++的許多不可靠的因素,可以防止許多編程錯誤。

它的可靠性和安全性表現在如下幾點:

Java是強類型的語言,要求顯式的方法聲明。這保證了編譯器可以發現方法調用錯誤,保證程序更加可靠。

Java不支持指針,這杜絕了內存的非法訪問。

Java的自動單元收集功能,可以防止內存“丟失”等動態內存分配導致的問題。

Java解釋器運行時實施檢查,可以發現數組和字符串訪問越界的問題。

Java提供了異常處理機制。

由于Java主要用于網絡應用程序開發,因此對安全性有較高的要求。如果沒有安全保證,用戶從網絡下載執行程序就非常危險。Java通過自己的安全機制,防止了病毒程序的產生,以及下載程序對本地系統的威脅破壞。

當Java字節碼進入解釋器時,首先必須經過字節碼校驗器的檢查,然后Java解釋器將決定程序中類的內存布局。隨后,類裝載器負責把來自網絡的類裝載到單獨的內存區域,避免應用程序之間相互干擾和破壞。最后,客戶端用戶還可以限制從網絡上裝載的類只能訪問某些文件系統。上述幾種機制結合起來,使得Java成為安全的編程語言。

主站蜘蛛池模板: 巴青县| 阳山县| 临沭县| 兴和县| 南康市| 临夏县| 承德县| 濉溪县| 涡阳县| 延庆县| 修水县| 社旗县| 湘乡市| 宾阳县| 陆河县| 天峨县| 米脂县| 犍为县| 金塔县| 伊金霍洛旗| 玉溪市| 昌宁县| 宁远县| 宜都市| 京山县| 五河县| 北宁市| 吴川市| 保靖县| 镇安县| 武安市| 双辽市| 岫岩| 南溪县| 大姚县| 贵州省| 凌海市| 临汾市| 长葛市| 偏关县| 贵阳市|