首頁 > 農業

Java的特點和優點

由 萌寵學知識 發表于 農業2021-06-15

簡介使用Java語言編寫的程式,只要做較少的修改,甚至有時根本不需修改就可以在不同平臺上運行了,Java絕對是跨平臺的一門程式語言

編譯程式是什麼軟體

Java的特點和優點

Java的特點

Java語言是一種優秀的程式語言。它最大的優點就是與平臺無關,在Windows9x、WindowsNT、Solaris、Linux、MacOS以及其它平臺上,都可以使用相同的程式碼。“一次編寫,到處執行”的特點,使其在網際網路上廣泛採用。

由於Java語言的設計者們十分熟悉C++語言,所以在設計時很好地借鑑了C++語言。可以說,Java語言是一種比C++語言“還面向物件”的一種程式語言。Java語言的語法結構與C++語言的語法結構十分相似,這使得C++程式設計師學習Java語言更加容易。

當然,如果僅僅是對C++改頭換面,那麼就不會有今天的Java熱了。Java語言提供的一些有用的新特性,使得使用Java語言比C++語言更容易寫出“無錯程式碼”。

這些新特性包括:

1) 提供了對記憶體的自動管理,程式設計師無需在程式中進行分配、釋放記憶體,那些可怕的記憶體分配錯誤不會再打擾你了;

2) 去除了C++語言中的令人費解、容易出錯的“指標”,用其它方法來進行彌補;

3) 避免了賦值語句(如a=3)與邏輯運算語句(如a==3)的混淆;

4) 取消了多重繼承這一複雜的設施。

一些說明:

“多重繼承”是“面向物件”的術語,我們將會在第2章中詳細敘述。這些優點正是Java熱的背景,Java憑藉其強大的移植能力、多執行緒處理和連網能力,風靡全球,現在已經逐漸成為手持裝置、網際網路、車內計算機的一項標準。

一些提示:

Java語言的規範是公開的,你可以在oracle的官網上找到它,閱讀Java語言的規範是提高水平的好方法。

Java語言的關鍵特性

Java語言有許許多多有效的特性,吸引著程式設計師們,最主要的有以下幾個:

1。簡潔有效

Java語言是一種相當簡潔的“面向物件”程式設計語言。Java語言省略了C++語言中所有的難以理解、容易混淆的特性,例如標頭檔案、指標、結構、單元、運算子過載、虛擬基礎類等。它更加嚴謹、簡潔。

注意:

有些熟悉VisualBasic語言的讀者會覺得Java語言相對VB而言更復雜,的確使用Java程式設計是比使用VB更費力一些。但大家一定要知道VB是一種整合化開發工具,其憑藉視覺化工具成為開發GUI程式的神器,但其並不能算是一種語言。它的基礎是Basic語言,這是一種最簡單的語言,但其功能不如C、C++、Java這樣完整。

Java語言採用了特殊的軟體構造方法,可以在很小的機器上獨立執行。只要40K就可以容下一個最基本的直譯器,即使加上基本標準庫和執行緒支援,也僅需再加上175K就夠的。這也是Java語言的一個成功秘訣。

2。高可移植性

對於一個程式設計師而言,寫出來的程式如果不需修改就能夠同時在Windows、MacOS、LINUX等平臺上執行,簡直就是美夢成真的好事!而Java語言就讓這個原本遙不可及的事離我們越來越近。使用Java語言編寫的程式,只要做較少的修改,甚至有時根本不需修改就可以在不同平臺上運行了,Java絕對是跨平臺的一門程式語言。

舉個例子,不同平臺上對資料型別的大小有不同的規定。在有的平臺上,整型(int)是用一個16位二進位制數表示,而有的平臺上則是使用一個32位二進位制數表示的。C/C++語言並沒有遮蔽掉這個由不同平臺造成的不同。這樣如果在一個使用16位二進位制數表示整型的平臺上開發的C語言源程式,要在一個使用32位二進位制數表示整型的平臺上執行,簡直就是噩耗。

而在Java語言中,就遮蔽掉了這種由平臺造成的不同。Java中的整型數是一定是由32位二進位制表示的,Java虛擬機器將這個差別消化了。當我們想將一個使用16位二進位制數表示整型的平臺上開發的Java語言源程式,移植到一個使用32位二進位制數表示整型的平臺上執行,就不用修改了。

Java語言具備這種高移植性是一種必然,因為它的設計理念就是“一次編寫,到處執行”嘛。

3。“面向物件”

可以這麼說,“面向物件”是軟體工程學的一次革命,大大提升了人類的軟體開發能力,是一個偉大的進步,是軟體發展的一個重大的理程碑。

在過去的30年間,“面向物件”有了長足的發展,充分體現了其價值,到現在已經形成了“面向物件的系統分析”、“面向物件的系統設計”、“面向物件的程式設計”一個體系。所以做為一個現代程式語言,是不能夠偏離這一方向的,Java語言也不例外。

注意:

Java語言被喻為比C++還“面向物件”的程式設計語言,不理解“面向物件”的思想就難以很好地運用Java語言。

4。解釋型

大家還記得Basic語言嗎?當我們使用Basic語言進行程式設計時,得先進入Basic語言環境,然後輸入源程式,再執行它,Basic語言環境一句句地解釋、執行,直接得出結果。這種語言就是解釋型語言。

而象C/C++這樣的語言就不是這樣的了,我們先使用編輯軟體或整合開發環境(IDE)編寫源程式,然後對其進行編譯,生成可執行檔案。然後我們再透過作業系統執行這個可執行檔案得到結果。這種語言就是編譯型語言。

解釋型語言效率低,速度慢;編譯型語言效率高,速度快。

Java語言是一種解釋型語言。對,沒看錯,它是一種解釋型語言,也就是說,相對於C/C++語言來說,Java語言寫出來的程式效率低,執行速度慢。但它正是透過在不同平臺上執行Java直譯器,對Java程式碼進行解釋,來實現“一次編寫,到處執行”的宏偉目標的。為了達到目標,犧牲效率還是值得的,再說,現在的計算機技術日新月異,運算速度也越來越快,使用者不會感到太慢的。

一些提示:

其實Java語言並不是象Basic語言那樣完全的解釋性,它是一種解釋型與編譯型的折中。使用Java語言編寫程式,首先用編輯軟體或整合開發環境(IDE)編寫源程式,然後使用Java編譯器進行一次偽編譯,將其編譯成為中間碼(也稱位元組碼)。然後再使用Java直譯器進行解釋。

5。適合分散式計算

Java語言具有強大的、易於使用的連網能力,非常適合開發分散式計算的程式。Java應用程式可以象訪問本地檔案系統那樣透過URL訪問遠端物件。

使用Java語言編寫Socket通訊程式十分簡單,使用它比使用任何其它語言都簡單。而且它還十分適合於開發公共閘道器介面(CGI)指令碼的開發,另外還可以使用Java小應用程式(Applet)、Java伺服器頁面(JavaServerPage,簡稱JSP)、Servlet等等手段來構建更豐富的網頁。

6。擁有較好的效能

正如前面說到,由於Java是一種解釋型語言,所以它的執行效率相對就會慢一些,但由於Java語言採用了兩種手段,使得其效能還是不錯的。

1)Java語言源程式編寫完成後,先使用Java偽編譯器進行偽編譯,將其轉換為中間碼(也稱為位元組碼),再解釋;

2)提供了一種“準實時”(Just-in-Time,JIT)編譯器,在需要更快的速度時,可以使用JIT編譯器將位元組碼轉換成機器碼,然後將其緩衝下來,這樣速度就會更快。

一些提示:

這種JIT編譯器,顧名思義,Just-In-Time,僅在執行時才進行,將其編譯成為平臺相關的機器碼(由於現在已經運行了,無需再考慮可移植性)。這樣處理後,可以帶來10倍甚至20倍的速度提升。而且這個技術正在不斷地得到改正,今後JIT編譯器將更加智慧,能夠監測出哪些程式碼經常執行,從而對其進行適當的最佳化,進一步加快執行速度。

7。健壯、防患於未然

Java語言在偽編譯時,做了許多早期潛在問題的檢查,並且在執行時來做了許多相應的檢查,可以說是最嚴格的一種“編譯器”。它的這種“防患於未然”的手段將許多程式中的錯誤扼殺在搖藍之中。經常有許多在其它語言中必須透過執行才會暴露出來的錯誤,在編譯階段就被發現了。另外,在Java語言中還提供了許多保證程式穩定、健壯的特性,有效地減少了錯誤,這樣使得Java應用程式更加健壯。

8。具有多執行緒處理能力

執行緒,是一種輕量級程序,是現代程式設計中必不可少的一種特性。多執行緒處理能力使得程式能夠具有更好的互動性、實時性。Java在多執行緒處理方面效能超群,具有讓你驚喜的強大功能,而且在Java語言中進行多執行緒處理很簡單。

注意:

要注意的是,各主流平臺線上程的實現上千差萬別,所以Java語言也暫時無法在這方面做到“與平臺無關”,所以Java為不同的作業系統各實現了一套多執行緒機制。並且對於程式設計師來說,不同的機器上,呼叫多執行緒機制的程式碼還是相同的。

9。具有較高的安全性

由於Java語言在設計時,在安全性方面考慮很仔細,做了許多探究,使得Java語言成為目前最安全的一種程式設計語言。儘管Sun公司曾經許諾過:“透過Java可以輕鬆構建出防病毒、防駭客的系統”,但“世界上沒有絕對的安全”這一真理是不會因為某人的許諾而失靈驗的。就在JDK(JavaDevelopmentKit)1。0釋出不久後,美國Princeton(普林斯頓)大學的一組安全專家發現了Java1。0安全特性中的第一例錯誤。從此,Java安全方面的問題開始被關注。不過至今所發現的安全隱患都很微不足道,而且Java開發組還宣稱,他們對系統安全方面的Bugs非常重視,會對這些被發現的進行立即修復。而且由於Sun公司開放了Java直譯器的細節,所以有助於透過各界力量,共同發現、防範、制止這些安全隱患。

10。是一種動態語言

Java是一種動態的語言,這表示在以下兩個方面:

1)在Java語言中,可以簡單、直觀地查詢執行時資訊;

2)可以將新程式碼加入到一個正在執行的程式中去。

11。中性的物件語言

“Java編譯器生成的是一種中性的物件檔案格式。”也就是說,Java編譯器透過偽編譯後,將生成一個與任何計算機體系統無關的“中性”的位元組碼。這種中性結構其實並不是Java首創的,在Java出現之前UCSDPascal系統就已在一種商業產品中做到這一點,另外在UCSDPascal之前還有這種方式的先例,那就是NiklausWirth實現的Pascal語言中就採用了這種降低一些效能,換取更好的可移植性和通用性的方法。Java的這種位元組碼經過了許多精心的設計,使得其能夠很好地兼容於當今大多數流行的計算機體系統,可以在任何機器上易於解釋,易於動態翻譯成為機器程式碼。

Tags:java語言C++面向物件編譯器