?? 0096.htm
字號:
<html>
<head>
<title>新時代軟件教程:操作系統 主頁制作 服務器 設計軟件 網絡技術 編程語言 文字編輯</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
body, table {font-size: 9pt; font-family: 宋體}
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
.1 {background-color: rgb(245,245,245)}
-->
</style>
</head>
<p align="center"><script src="../../1.js"></script></a>
<p align="center"><big><strong>第一章 Java概述</strong></big></p>
<p align="center"><b>第一章 Java概述</b></p>
<p><font color="#008000">§1.2 Java</font>的特點</font><br>
<br>
Java</font>是一個廣泛使用的網絡編程語言,它是一種新的計算概念。<br>
<br>
首先,作為一種程序設計語言,它簡單、面向對象、不依賴于機器的結構、具有可移植性、魯棒性、安全性、并且提供了并發的機制、具有很高的性能。其次,它最大限度地利用了網絡,Java</font>的小應用程序(applet)</font>可在網絡上傳輸而不受CPU</font>和環境的限制。另外,Java</font>還提供了豐富的類庫,使程序設計者可以很方便地建立自己的系統。<br>
<br>
下面我們分別從這三個方面來討論Java</font>的特點,然后通過把Java</font>與C</font>,C++</font>相比進一步指出它所具有的優點。<br>
<br>
<font color="#008000">一、 </font><font face="Arial" color="#008000"> Java</font><font color="#008000">語言</font><br>
<br>
Java</font>語言有下面一些特點:</font>簡單、面向對象、分布式、解釋執行、魯棒、安全、體系結構中立、可移植、高性能、多線程以及動態性。<br>
<br>
1.</font>簡單性<br>
<br>
Java</font>語言是一種面向對象的語言,它通過提供最基本的方法來完成指定的任務,只需理解一些基本的概念,就可以用它編寫出適合于各種情況的應用程序。Java</font>略去了運算符重載、多重繼承等模糊的概念,并且通過實現自動垃圾收集大大簡化了程序設計者的內存管理工作。另外,Java</font>也適合于在小型機上運行,它的基本解釋器及類的支持只有40KB</font>左右,加上標準類庫和線程的支持也只有215KB</font>左右。庫和線程的支持也只有215KB</font>左右。<br>
<br>
2.</font>面向對象<br>
<br>
Java</font>語言的設計集中于對象及其接口,它提供了簡單的類機制以及動態的接口模型。對象中封裝了它的狀態變量以及相應的方法,實現了模塊化和信息隱藏;</font>而類則提供了一類對象的原型,并且通過繼承機制,子類可以使用父類所提供的方法,實現了代碼的復用。<br>
<br>
3.</font>分布性<br>
<br>
Java</font>是面向網絡的語言。通過它提供的類庫可以處理TCP/IP</font>協議,用戶可以通過URL</font>地址在網絡上很方便地訪問其它對象。<br>
<br>
4.</font>魯棒性<br>
<br>
Java</font>在編譯和運行程序時,都要對可能出現的問題進行檢查,以消除錯誤的產生。它提供自動垃圾收集來進行內存管理,防止程序員在管理內存時容易產生的錯誤。通過集成的面向對象的例外處理機制,在編譯時,Java</font>提示出可能出現但未被處理的例外,幫助程序員正確地進行選擇以防止系統的崩潰。另外,Java</font>在編譯時還可捕獲類型聲明中的許多常見錯誤,防止動態運行時不匹配問題的出現。<br>
<br>
5.</font>安全性<br>
<br>
用于網絡、分布環境下的Java</font>必須要防止病毒的入侵。Java</font>不支持指針,一切對內存的訪問都必須通過對象的實例變量來實現,這樣就防止程序員使用"</font>特洛伊"</font>木馬等欺騙手段訪問對象的私有成員,同時也避免了指針操作中容易產生的錯誤。<br>
<br>
6.</font>體系結構中立<br>
<br>
Java解釋器生成與體系結構無關的字節碼指令,只要安裝了Java運行時系統,Java程序就可在任意的處理器上運行。這些字節碼指令對應于Java虛擬機中的表示,Java解釋器得到字節碼后,對它進行轉換,使之能夠在不同的平臺運行。<br>
<br>
7.可移植性<br>
<br>
與平臺無關的特性使Java程序可以方便地被移植到網絡上的不同機器。同時,Java的類庫中也實現了與不同平臺的接口,使這些類庫可以移植。另外,Java編譯器是由Java語言實現的,Java運行時系統由標準C實現,這使得Java系統本身也具有可移植性。<br>
<br>
8.解釋執行<br>
<br>
Java解釋器直接對Java字節碼進行解釋執行。字節碼本身攜帶了許多編譯時信息,使得連接過程更加簡單。<br>
<br>
9.高性能<br>
<br>
和其它解釋執行的語言如BASIC、TCL不同,Java字節碼的設計使之能很容易地直接轉換成對應于特定CPU的機器碼,從而得到較高的性能。<br>
<br>
10.多線程<br>
<br>
多線程機制使應用程序能夠并行執行,而且同步機制保證了對共享數據的正確操作。通過使用多線程,程序設計者可以分別用不同的線程完成特定的行為,而不需要采用全局的事件循環機制,這樣就很容易地實現網絡上的實時交互行為。<br>
<br>
11.動態性<br>
<br>
Java的設計使它適合于一個不斷發展的環境。在類庫中可以自由地加入新的方法和實例變量而不會影響用戶程序的執行。并且Java通過接口來支持多重繼承,使之比嚴格的類繼承具有更靈活的方式和擴展性。<br>
<br>
<font color="#008000">二、JavaApplet</font><br>
<br>
Java語言的特性使它可以最大限度地利用網絡。Ap-plet是Java的小應用程序,它是動態、安全、跨平臺的網絡應用程序。JavaApplet嵌入HTML語言,通過主頁發布到Internet。網絡用戶訪問服務器的Applet時,這些Applet從網絡上進行傳輸,然后在支持Java的瀏覽器中運行。由于Java語言的安全機制,用戶一旦載入Applet,就可以放心地來生成多媒體的用戶界面或完成復雜的計算而不必擔心病毒的入侵。雖然Applet可以和圖像、聲音、動畫等一樣從網絡上下載,但它并不同于這些多媒體的文件格式,它可以接收用戶的輸入,動態地進行改變,而不僅僅是動畫的顯示和聲音的播放。<br>
<br>
<font color="#008000">三、豐富的類庫</font><br>
<br>
Java提供了大量的類以滿足網絡化、多線程、面向對象系統的需要。<br>
<br>
1.語言包提供的支持包括字符串處理、多線程處理、例外處理、數學函數處理等,可以用它簡單地實現Java程序的運行平臺。<br>
<br>
2.實用程序包提供的支持包括哈希表、堆棧、可變數組、時間和日期等。<br>
<br>
3.輸入輸出包用統一的"流"模型來實現所有格式的I/O,包括文件系統、網絡、輸入<br>
<br>
4.低級網絡包用于實現Socket編程。<br>
<br>
5.抽象圖形用戶接口包實現了不同平臺的計算機的圖形用戶接口部件,包括窗口、菜單、滾動條、對話框等,使得Java可以移植到不同平臺的機器。<br>
<br>
6.網絡包支持Internet的TCP/IP協議,提供了與In-ternet的接口。它支持URL連接,WWW的即時訪問,并且簡化了用戶/服務器模型的程序設計。<br>
<br>
<font color="#008000">四、Java和C、C++</font><br>
<br>
對于變量聲明、參數傳遞、操作符、流控制等,Java使用了和C、C++相同的傳統,使得熟悉C、C++的程序員能很方便地進行編程。同時,Java為了實現其簡單、魯棒、安全等特性,也摒棄了C和C++中許多不合理的內容。<br>
<br>
1.全局變量<br>
<br>
Java</font>程序中,不能在所有類之外定義全局變量,只能通過在一個類中定義公用、靜態的變量來實現一個全局變量。例如:<br>
<br>
ClassGlobalVar{public static global_var;}<br>
<br>
</font>
在類GlobalVar</font>中定義變量global_var</font>為public static</font>,使得其它類可以訪問和修改該變量。Java</font>對全局變量進行了更好的封裝。而在C</font>和C++</font>中,依賴于不加封裝的全局變量常常造成系統的崩潰。<br>
<br>
2.Goto<br>
<br>
</font> Java</font>不支持C</font>、C++</font>中的goto</font>語句,而是通過例外處理語句try</font>,Catch</font>,final</font>等來代替C</font>、C++</font>中用goto</font>來處理遇到錯誤時跳轉的情況,使程序更可讀且更結構化。<br>
<br>
3.</font>指針<br>
<br>
指針是C</font>、C++</font>中最靈活,也是最容易產生錯誤的數據類型。由指針所進行的內存地址操作常會造成不可預知的錯誤,同時通過指針對某個內存地址進行顯式類型轉換后,可以訪問一個C++</font>中的私有成員,從而破壞安全性,造成系統的崩潰。而Java</font>對指針進行完全的控制,程序員不能直接進行任何指針操作,例如把整數轉化為指針,或者通過指針釋放某一內存地址等。同時,數組作為類在Java</font>中實現,良好地解決了數組訪問越界這一C</font>、C++</font>中不作檢查的錯誤。<br>
<br>
4.</font>內存管理<br>
<br>
在C</font>中,程序員通過庫函數malloc()</font>和free()</font>來分配和釋放內存,C++</font>中則通過運算符new</font>和delete</font>來分配和釋放內存。再次釋放已釋放的內存塊或未被分配的內存塊,會造成系統的崩潰;</font>同樣,忘記釋放不再使用的內存塊也會逐漸耗盡系統資源。而在Java</font>中,所有的數據結構都是對象,通過運算符new</font>為它們分配內存堆。通過new</font>得到對象的處理權,而實際分配給對象的內存可能隨程序運行而改變,Java</font>對此自動地進行管理并且進行垃圾收集,有效防止了由于程序員的誤操作而導致的錯誤,并且更好地利用了系統資源。<br>
<br>
5.</font>數據類型的支持<br>
<br>
在C</font>、C++</font>中,對于不同的平臺,編譯器對于簡單數據類型如int</font>,float</font>等分別分配不同長度的字節數,例如:int</font>在IBMPC</font>中為16</font>位,在VAX-11</font>中為32</font>位,這導致了代碼的不可移植性,但在Java</font>中,對于這些數據類型總是分配固定長度的位數,如對int</font>型,它總占32</font>位,這就保證了Java</font>的平臺無關性。<br>
<br>
6.</font>類型轉換<br>
<br>
在C</font>、C++</font>中,可以通過指針進行任意的類型轉換,常常帶來不安全性,而Java</font>中,運行時系統對對象的處理要進行類型相容性檢查,以防止不安全的轉換。<br>
<br>
7.</font>頭文件<br>
<br>
C</font>、C++</font>中用頭文件來聲明類的原型以及全局變量、庫函數等,在大的系統中,維護這些頭文件是很困難的。而Java</font>不支持頭文件,類成員的類型和訪問權限都封裝在一個類中,運行時系統對訪問進行控制,防止對私有成員的操作。同時,Java</font>中用import</font>語句來與其它類進行通訊,以便使用它們的方法。<br>
<br>
8.</font>結構和聯合<br>
<br>
C</font>、C++</font>中的結構和聯合中所有成員均為公有,這就帶來了安全性問題。Java</font>中不包含結構和聯合,所有的內容都封裝在類中。<br>
<br>
9.</font>預處理<br>
<br>
C</font>、C++</font>中用宏定義來實現的代碼給程序的可讀性帶來了困難。在Java</font>中,不支持宏,它通過關鍵字final</font>來聲明一個常量,以實現宏定義中廣泛使用的常量定義。<br>
</p>
<p>(未完,請繼續)
</table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -