Java語言特點及開發工具JDK(轉)
Java語言特點及開發工具JDK(轉)[@more@] 一、Java語言特點
上一講,我們提到Java是一種跨平臺,適合於分散式計算環境的物件導向程式語言。具體來
說,它具有如下特性:簡單性、物件導向、分散式、解釋型、可靠、安全、平臺無關、可移植、高
效能、多執行緒、動態性等。下面我們將重點介紹Java語言的物件導向、平臺無關、分散式、多執行緒
、可靠和安全等特性。
1?物件導向
物件導向其實是現實世界模型的自然延伸。現實世界中任何實體都可以看作是物件。物件之間
透過訊息相互作用。另外,現實世界中任何實體都可歸屬於某類事物,任何物件都是某一類事物的
例項。如果說傳統的程式式程式設計語言是以過程為中心以演算法為驅動的話,物件導向的程式語言則是
以物件為中心以訊息為驅動。用公式表示,程式式程式設計語言為:程式=演算法+資料;物件導向程式設計語
言為:程式=物件+訊息。
所有物件導向程式語言都支援三個概念:封裝、多型性和繼承,Java也不例外。現實世界中的
物件均有屬性和行為,對映到計算機程式上,屬性則表示物件的資料,行為表示物件的方法(其作
用是處理資料或同外界互動)。所謂封裝,就是用一個自主式框架把物件的資料和方法聯在一起形
成一個整體。可以說,物件是支援封裝的手段,是封裝的基本單位。Java語言的封裝性較強,因為
Java無全程變數,無主函式,在Java中絕大部分成員是物件,只有簡單的數字型別、字元型別和布
爾型別除外。而對於這些型別,Java也提供了相應的物件型別以便與其他物件互動操作。
多型性就是多種表現形式,具體來說,可以用“一個對外介面,多個內在實現方法”表示。舉
一個例子,計算機中的堆疊可以儲存各種格式的資料,包括整型,浮點或字元。不管儲存的是何種
資料,堆疊的演算法實現是一樣的。針對不同的資料型別,程式設計人員不必手工選擇,只需使用統一接
口名,系統可自動選擇。運算子過載(operatoroverload)一直被認為是一種優秀的多型機制體現,
但由於考慮到它會使程式變得難以理解,所以Java最後還是把它取消了。
繼承是指一個物件直接使用另一物件的屬性和方法。事實上,我們遇到的很多實體都有繼承的
含義。例如,若把汽車看成一個實體,它可以分成多個子實體,如:卡車、公共汽車等。這些子實
體都具有汽車的特性,因此,汽車是它們的“父親”,而這些子實體則是汽車的“孩子”。Java提
供給使用者一系列類(class),Java的類有層次結構,子類可以繼承父類的屬性和方法。與另外一些
物件導向程式語言不同,Java只支援單一繼承。
2?平臺無關性
Java是平臺無關的語言是指用Java寫的應用程式不用修改就可在不同的軟硬體平臺上執行。平
臺無關有兩種:原始碼級和目的碼級。C和C++具有一定程度的原始碼級平臺無關,表明用C或C++
寫的應用程式不用修改只需重新編譯就可以在不同平臺上執行。
Java主要靠Java虛擬機器(JVM)在目標碼級實現平臺無關性。JVM是一種抽象機器,它附著在具
體作業系統之上,本身具有一套虛機器指令,並有自己的棧、暫存器組等。但JVM通常是在軟體上而
不是在硬體上實現。(目前,SUN系統公司已經設計實現了Java晶片,主要使用在網路計算機NC上。
另外,Java晶片的出現也會使Java更容易嵌入到家用電器中。)JVM是Java平臺無關的基礎,在JVM
上,有一個Java直譯器用來解釋Java編譯器編譯後的程式。Java程式設計人員在編寫完軟體後,透過Java
編譯器將Java源程式編譯為JVM的位元組程式碼。任何一臺機器只要配備了Java直譯器,就可以執行這個
程式,而不管這種位元組碼是在何種平臺上生成的。另外,Java採用的是基於IEEE標準的資料型別。
透過JVM保證資料型別的一致性,也確保了Java的平臺無關性。
Java的平臺無關性具有深遠意義。首先,它使得程式設計人員所夢寐以求的事情(開發一次軟體在
任意平臺上執行)變成事實,這將大大加快和促進軟體產品的開發。其次Java的平臺無關性正好迎
合了“網路計算機”思想。如果大量常用的應用軟體(如字處理軟體等)都用Java重新編寫,並且
放在某個Internet伺服器上,那麼具有NC的使用者將不需要佔用大量空間安裝軟體,他們只需要一個
Java直譯器,每當需要使用某種應用軟體時,下載該軟體的位元組程式碼即可,執行結果也可以發回服
務器。目前,已有數家公司開始使用這種新型的計算模式構築自己的企業資訊系統。
3?分散式
分散式包括資料分佈和操作分佈。資料分佈是指資料可以分散在網路的不同主機上,操作分佈
是指把一個計算分散在不同主機上處理。
Java支援WWW客戶機/伺服器計算模式,因此,它支援這兩種分佈性。對於前者,Java提供了一
個叫作URL的物件,利用這個物件,你可以開啟並訪問具有相同URL地址上的物件,訪問方式與訪問
本地檔案系統相同。對於後者,Java的applet小程式可以從伺服器下載到客戶端,即部分計算在客
戶端進行,提高系統執行效率。
Java提供了一整套網路類庫,開發人員可以利用類庫進行網路程式設計,方便得實現Java的分
布式特性。
4?可靠性和安全性
Java最初設計目的是應用於電子類消費產品,因此要求較高的可靠性。Java雖然源於C++,但它
消除了許多C++不可靠因素,可以防止許多程式設計錯誤。首先,Java是強型別的語言,要求顯式的方法
宣告,這保證了編譯器可以發現方法呼叫錯誤,保證程式更加可靠;其次,Java不支援指標,這杜
絕了記憶體的非法訪問;第三,Java的自動單元收集防止了記憶體丟失等動態記憶體分配導致的問題;第
四,Java直譯器執行時實施檢查,可以發現陣列和字串訪問的越界,最後,Java提供了異常處理
機制,程式設計師可以把一組錯誤程式碼放在一個地方,這樣可以簡化錯誤處理任務便於恢復。
由於Java主要用於網路應用程式開發,因此對安全性有較高的要求。如果沒有安全保證,使用者
從網路下載程式執行就非常危險。Java透過自己的安全機制防止了病毒程式的產生和下載程式對本
地系統的威脅破壞。當Java位元組碼進入直譯器時,首先必須經過位元組碼校驗器的檢查,然後,Java
直譯器將決定程式中類的記憶體佈局,隨後,類裝載器負責把來自網路的類裝載到單獨的記憶體區域,
避免應用程式之間相互干擾破壞。最後,客戶端使用者還可以限制從網路上裝載的類只能訪問某些文
件系統。
上述幾種機制結合起來,使得Java成為安全的程式語言。
5?多執行緒
執行緒是作業系統的一種新概念,它又被稱作輕量程式,是比傳統程式更小的可併發執行的單位。
C和C++採用單執行緒體系結構,而Java卻提供了多執行緒支援。
Java在兩方面支援多執行緒。一方面,Java環境本身就是多執行緒的。若干個系統執行緒執行負責必要
的無用單元回收,系統維護等系統級操作;另一方面,Java語言內建多執行緒控制,可以大大簡化多線
程應用程式開發。Java提供了一個類Thread,由它負責啟動執行,終止執行緒,並可檢查執行緒狀態。Java
的執行緒還包括一組同步原語。這些原語負責對執行緒實行併發控制。利用Java的多執行緒程式設計介面,開發人
員可以方便得寫出支援多執行緒的應用程式,提高程式執行效率。必須注意地是,Java的多執行緒支援在一
定程度上受執行時支援平臺的限制。例如,如果作業系統本身不支援多執行緒,Java的多執行緒特性
可能就表現不出來。
二、Java小程式和應用程式
用Java可以寫兩種型別的程式:小程式(又叫JavaApplet)和應用程式(JavaApplication)。小程
序是嵌入在HTML文件中的Java程式;而Java應用程式是從命令列執行的程式。對Java而言,Java小程式
的大小和複雜性都沒有限制。事實上,Java小程式有些方面比Java應用程式更強大。但是由於目前
Internet通訊速度有限,因此大多數小程式規模較小。小程式和應用程式之間的技術差別在於執行環境。
Java應用程式執行在最簡單的環境中,它的唯一外部輸入就是命令列引數。另一方面,Java小程式則需
要來自Web瀏覽器的大量資訊:它需要知道何時啟動,何時放入瀏覽器視窗,何處,何時啟用關閉。由於
這兩種不同的執行環境,小程式和應用程式的最低要求不同。
由於WWW使小程式的釋出十分便利,因此小程式更適合作為Internet上的應用程式。相反,非網路系
統和記憶體較小的系統更適合用Java應用程式而較少用Java小程式實現。另外,Java應用程式也很容易以
Internet為基礎環境,事實上有些優秀的Java應用程式正是如此。
上一講,我們提到Java是一種跨平臺,適合於分散式計算環境的物件導向程式語言。具體來
說,它具有如下特性:簡單性、物件導向、分散式、解釋型、可靠、安全、平臺無關、可移植、高
效能、多執行緒、動態性等。下面我們將重點介紹Java語言的物件導向、平臺無關、分散式、多執行緒
、可靠和安全等特性。
1?物件導向
物件導向其實是現實世界模型的自然延伸。現實世界中任何實體都可以看作是物件。物件之間
透過訊息相互作用。另外,現實世界中任何實體都可歸屬於某類事物,任何物件都是某一類事物的
例項。如果說傳統的程式式程式設計語言是以過程為中心以演算法為驅動的話,物件導向的程式語言則是
以物件為中心以訊息為驅動。用公式表示,程式式程式設計語言為:程式=演算法+資料;物件導向程式設計語
言為:程式=物件+訊息。
所有物件導向程式語言都支援三個概念:封裝、多型性和繼承,Java也不例外。現實世界中的
物件均有屬性和行為,對映到計算機程式上,屬性則表示物件的資料,行為表示物件的方法(其作
用是處理資料或同外界互動)。所謂封裝,就是用一個自主式框架把物件的資料和方法聯在一起形
成一個整體。可以說,物件是支援封裝的手段,是封裝的基本單位。Java語言的封裝性較強,因為
Java無全程變數,無主函式,在Java中絕大部分成員是物件,只有簡單的數字型別、字元型別和布
爾型別除外。而對於這些型別,Java也提供了相應的物件型別以便與其他物件互動操作。
多型性就是多種表現形式,具體來說,可以用“一個對外介面,多個內在實現方法”表示。舉
一個例子,計算機中的堆疊可以儲存各種格式的資料,包括整型,浮點或字元。不管儲存的是何種
資料,堆疊的演算法實現是一樣的。針對不同的資料型別,程式設計人員不必手工選擇,只需使用統一接
口名,系統可自動選擇。運算子過載(operatoroverload)一直被認為是一種優秀的多型機制體現,
但由於考慮到它會使程式變得難以理解,所以Java最後還是把它取消了。
繼承是指一個物件直接使用另一物件的屬性和方法。事實上,我們遇到的很多實體都有繼承的
含義。例如,若把汽車看成一個實體,它可以分成多個子實體,如:卡車、公共汽車等。這些子實
體都具有汽車的特性,因此,汽車是它們的“父親”,而這些子實體則是汽車的“孩子”。Java提
供給使用者一系列類(class),Java的類有層次結構,子類可以繼承父類的屬性和方法。與另外一些
物件導向程式語言不同,Java只支援單一繼承。
2?平臺無關性
Java是平臺無關的語言是指用Java寫的應用程式不用修改就可在不同的軟硬體平臺上執行。平
臺無關有兩種:原始碼級和目的碼級。C和C++具有一定程度的原始碼級平臺無關,表明用C或C++
寫的應用程式不用修改只需重新編譯就可以在不同平臺上執行。
Java主要靠Java虛擬機器(JVM)在目標碼級實現平臺無關性。JVM是一種抽象機器,它附著在具
體作業系統之上,本身具有一套虛機器指令,並有自己的棧、暫存器組等。但JVM通常是在軟體上而
不是在硬體上實現。(目前,SUN系統公司已經設計實現了Java晶片,主要使用在網路計算機NC上。
另外,Java晶片的出現也會使Java更容易嵌入到家用電器中。)JVM是Java平臺無關的基礎,在JVM
上,有一個Java直譯器用來解釋Java編譯器編譯後的程式。Java程式設計人員在編寫完軟體後,透過Java
編譯器將Java源程式編譯為JVM的位元組程式碼。任何一臺機器只要配備了Java直譯器,就可以執行這個
程式,而不管這種位元組碼是在何種平臺上生成的。另外,Java採用的是基於IEEE標準的資料型別。
透過JVM保證資料型別的一致性,也確保了Java的平臺無關性。
Java的平臺無關性具有深遠意義。首先,它使得程式設計人員所夢寐以求的事情(開發一次軟體在
任意平臺上執行)變成事實,這將大大加快和促進軟體產品的開發。其次Java的平臺無關性正好迎
合了“網路計算機”思想。如果大量常用的應用軟體(如字處理軟體等)都用Java重新編寫,並且
放在某個Internet伺服器上,那麼具有NC的使用者將不需要佔用大量空間安裝軟體,他們只需要一個
Java直譯器,每當需要使用某種應用軟體時,下載該軟體的位元組程式碼即可,執行結果也可以發回服
務器。目前,已有數家公司開始使用這種新型的計算模式構築自己的企業資訊系統。
3?分散式
分散式包括資料分佈和操作分佈。資料分佈是指資料可以分散在網路的不同主機上,操作分佈
是指把一個計算分散在不同主機上處理。
Java支援WWW客戶機/伺服器計算模式,因此,它支援這兩種分佈性。對於前者,Java提供了一
個叫作URL的物件,利用這個物件,你可以開啟並訪問具有相同URL地址上的物件,訪問方式與訪問
本地檔案系統相同。對於後者,Java的applet小程式可以從伺服器下載到客戶端,即部分計算在客
戶端進行,提高系統執行效率。
Java提供了一整套網路類庫,開發人員可以利用類庫進行網路程式設計,方便得實現Java的分
布式特性。
4?可靠性和安全性
Java最初設計目的是應用於電子類消費產品,因此要求較高的可靠性。Java雖然源於C++,但它
消除了許多C++不可靠因素,可以防止許多程式設計錯誤。首先,Java是強型別的語言,要求顯式的方法
宣告,這保證了編譯器可以發現方法呼叫錯誤,保證程式更加可靠;其次,Java不支援指標,這杜
絕了記憶體的非法訪問;第三,Java的自動單元收集防止了記憶體丟失等動態記憶體分配導致的問題;第
四,Java直譯器執行時實施檢查,可以發現陣列和字串訪問的越界,最後,Java提供了異常處理
機制,程式設計師可以把一組錯誤程式碼放在一個地方,這樣可以簡化錯誤處理任務便於恢復。
由於Java主要用於網路應用程式開發,因此對安全性有較高的要求。如果沒有安全保證,使用者
從網路下載程式執行就非常危險。Java透過自己的安全機制防止了病毒程式的產生和下載程式對本
地系統的威脅破壞。當Java位元組碼進入直譯器時,首先必須經過位元組碼校驗器的檢查,然後,Java
直譯器將決定程式中類的記憶體佈局,隨後,類裝載器負責把來自網路的類裝載到單獨的記憶體區域,
避免應用程式之間相互干擾破壞。最後,客戶端使用者還可以限制從網路上裝載的類只能訪問某些文
件系統。
上述幾種機制結合起來,使得Java成為安全的程式語言。
5?多執行緒
執行緒是作業系統的一種新概念,它又被稱作輕量程式,是比傳統程式更小的可併發執行的單位。
C和C++採用單執行緒體系結構,而Java卻提供了多執行緒支援。
Java在兩方面支援多執行緒。一方面,Java環境本身就是多執行緒的。若干個系統執行緒執行負責必要
的無用單元回收,系統維護等系統級操作;另一方面,Java語言內建多執行緒控制,可以大大簡化多線
程應用程式開發。Java提供了一個類Thread,由它負責啟動執行,終止執行緒,並可檢查執行緒狀態。Java
的執行緒還包括一組同步原語。這些原語負責對執行緒實行併發控制。利用Java的多執行緒程式設計介面,開發人
員可以方便得寫出支援多執行緒的應用程式,提高程式執行效率。必須注意地是,Java的多執行緒支援在一
定程度上受執行時支援平臺的限制。例如,如果作業系統本身不支援多執行緒,Java的多執行緒特性
可能就表現不出來。
二、Java小程式和應用程式
用Java可以寫兩種型別的程式:小程式(又叫JavaApplet)和應用程式(JavaApplication)。小程
序是嵌入在HTML文件中的Java程式;而Java應用程式是從命令列執行的程式。對Java而言,Java小程式
的大小和複雜性都沒有限制。事實上,Java小程式有些方面比Java應用程式更強大。但是由於目前
Internet通訊速度有限,因此大多數小程式規模較小。小程式和應用程式之間的技術差別在於執行環境。
Java應用程式執行在最簡單的環境中,它的唯一外部輸入就是命令列引數。另一方面,Java小程式則需
要來自Web瀏覽器的大量資訊:它需要知道何時啟動,何時放入瀏覽器視窗,何處,何時啟用關閉。由於
這兩種不同的執行環境,小程式和應用程式的最低要求不同。
由於WWW使小程式的釋出十分便利,因此小程式更適合作為Internet上的應用程式。相反,非網路系
統和記憶體較小的系統更適合用Java應用程式而較少用Java小程式實現。另外,Java應用程式也很容易以
Internet為基礎環境,事實上有些優秀的Java應用程式正是如此。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-959115/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java特點了解及JDK初談JavaJDK
- Java十四種開發工具及其特點Java
- Java語言有什麼特點Java
- Java備忘錄《語言特點》Java
- Java程式語言特點簡介Java
- 微信開發必備工具 php和java開發語言PHPJava
- Java初學者必知:Java語言的11大特點Java
- 主流程式語言的介紹及特點
- C語言開發工具C語言
- 關於Ruby的語言特點
- Java開發之路—java語言概述Java
- Kotlin 程式語言詳解:特點、應用領域及語法教程Kotlin
- go語言開發有哪些工具Go
- 如何選擇開發語言或者開發工具
- Python語言的特點有哪些?九大特點介紹!Python
- Python語言的特點有哪些?Python
- Rust語言與Go語言各自特點概要比較 –thenewstackRustGo
- 什麼是Go語言?Go語言有什麼特點?Go
- Rust語言最獨特的特點是什麼? - RedditRust
- java的跨開發語言功能Java
- 簡單給初學者說說JAVA語言的幾個特點Java
- R語言的常用型別、三個視覺化工具使用特點R語言型別視覺化
- Dart 語言的7個很酷的特點Dart
- Python語言的特點技巧有哪些?Python
- python之 python 起源、語言特點Python
- Java 語言是強型別語言語言(轉)Java型別
- 使用go語言開發hive匯出工具GoHive
- 輕鬆開發多語言程式 (轉)
- JAVA微服務快速開發平臺的功能特點Java微服務
- Java 語言概述與開發環境(1)Java開發環境
- Java 語言概述與開發環境(2)Java開發環境
- 五款最棒的Go語言開發工具?Go
- 【開發語言】PHP、Java、C語言的編譯執行過程PHPJavaC語言編譯
- java開發C語言編譯器:為C語言提供API呼叫JavaC語言編譯API
- 細學C++之C++語言的特點C++
- 華瑞IT學校:Java軟體開發語言學習的關鍵點Java
- App 開發語言APP
- web開發語言的選擇:PHP or JAVA薦WebPHPJava