1、Java是簡(jiǎn)單的
Java與C++極為相似,但卻簡(jiǎn)單得多。高級編程語(yǔ)言的所有特性中,不是絕對需要的都已刪去了。例如,Java沒(méi)有算符過(guò)載、標題文件、預處理、指針運算、結構、聯(lián)合、多維數組、模板及隱式類(lèi)型變換。如果你知道一點(diǎn)C、C++或Pascal,你很快就會(huì )駕馭Java。這里是一個(gè)簡(jiǎn)單的JavaHelloWorld程序:
publicclassHelloInternet { publicstaticvoidmain(Stringargv[]) { System.out.println(“HelloIn-ternet!”) } } |
2、Java是面向對象的
Java是一種面向對象的編程語(yǔ)言。除了簡(jiǎn)單的類(lèi)型,如數字和布爾算子之外,Java中的大部分都是對象。
正如任何面向對象的語(yǔ)言一樣,
Java代碼也按類(lèi)組織。每個(gè)類(lèi)定義一組規定對象行為的方法。一個(gè)類(lèi)可以繼承另一個(gè)類(lèi)的行為。在類(lèi)的根層次上,通常是類(lèi)對象。
Java支持單繼承類(lèi)層次結構。這就是說(shuō),每個(gè)類(lèi)一次只能繼承一個(gè)別的類(lèi)。有些語(yǔ)言允許多繼承性,但這可能造成混亂,使語(yǔ)言不必要地復雜化。例如,難以想像,一個(gè)對象會(huì )繼承兩個(gè)完全不同的類(lèi)的行為。
Java還支持摘要類(lèi)的接口。這允許編程人員先定義接口的方法,而不必急于馬上確定方法的實(shí)現。一個(gè)類(lèi)可以施行多個(gè)接口,從而具有真正多繼承性的許多優(yōu)點(diǎn)。一個(gè)對象也可實(shí)施任意數量的接口。Java接口與
IDL接口極其相似。很容易建立IDLJ編譯器。這就是說(shuō),Java可用于
CORBA對象系統來(lái)建立分布式對象系統。鑒于在許多計算機系統中都采用IDL接口和
CORBA對象系統,這種兼容性是重要的。
3、Java是靜態(tài)類(lèi)型的
在一個(gè)
Java程序中,必須定義所用對象(數字、字符、數組等)的類(lèi)型。這有助于編程人員很快發(fā)現問(wèn)題,因為當程序編譯時(shí)可以檢測類(lèi)型錯誤。
不過(guò),Java系統中的對象也有動(dòng)態(tài)類(lèi)型。要求一個(gè)對象為動(dòng)態(tài)類(lèi)型往往是可能的,所以編程人員寫(xiě)的程序可以對不同類(lèi)型的對象做不同的事。
4、Java是編譯型的
當運行Java程序時(shí),它首先被編譯成字節代碼。字節代碼非常類(lèi)似于機器指令,所以Java程序非常高效。然而,字節代碼并不專(zhuān)對一種特定的機器,所以Java程序無(wú)需重新編譯便可在眾多不同的計算機上執行。
Java源程序被編譯成類(lèi)文件,它相當于程序的字節代碼表現。在一個(gè)Java類(lèi)文件中,所有對方法及實(shí)例變量的參照均按名進(jìn)行,并在第一次執行代碼時(shí)加以分辨。這使得代碼更通用,更不易受修改的影響,而仍具高效。
5、Java是體系結構中立的
Java語(yǔ)言對每種計算機都一樣。比如,簡(jiǎn)單的類(lèi)型都是不變的:整數總是32位,長(cháng)整數總是64位。令人奇怪的是,諸如C及C++等時(shí)髦的編程語(yǔ)言卻不是這樣。由于這些語(yǔ)言定義如此自由,每種編譯器及開(kāi)發(fā)環(huán)境便各有不同了,這使程序的移植成為討厭的問(wèn)題。Java程序的移植卻很容易,而且不需要進(jìn)行重新編譯。
6.Java是健全的
Java程序不可能造成計算機崩潰。Java系統仔細檢測對內存的每次訪(fǎng)問(wèn),確認它是合法的,而且不致引起任何問(wèn)題。
不過(guò),即使Java程序也可能有錯誤。如果出現某種出乎意料之事,程序不會(huì )崩潰,而把該例外拋棄。程序會(huì )發(fā)現這類(lèi)例外,并加以處理。
傳統的程序可以訪(fǎng)問(wèn)計算機的全部?jì)却?。程序可?無(wú)意識地)修改內存中的任何值,這就會(huì )造成問(wèn)題。Java程序只能訪(fǎng)問(wèn)內存中允許它們訪(fǎng)問(wèn)的那些部分,所以Java程序不可能修改不擬修改的值。
7、Java是小巧的
由于Java的設計是要在小的計算機上運行,作為一種編程語(yǔ)言來(lái)說(shuō)其系統是相對較小的。它能有效地在4MB以上RAM的PC機上運行。Java翻譯器只占用幾百KB。這種翻譯器對Java的平臺無(wú)關(guān)性和可移植性是可靠的。
由于Java很小,它對內存很小的計算機,如基于Java的PC機,以及電視機、烤箱、電話(huà)機及家用計算機等,是很理想的。
8、Java是多線(xiàn)程的
Java程序可以執行一個(gè)以上的線(xiàn)程。比如,它可以在一個(gè)線(xiàn)程中完成某一耗時(shí)的計算,而其它線(xiàn)程與用戶(hù)進(jìn)行交互對話(huà)。所以用戶(hù)不必停止工作,等待Java程序完成耗時(shí)的計算。
在多線(xiàn)程環(huán)境中的編程通常是困難的,因為許多東西可能同時(shí)出現。但是,Java提供了易于使用的同步特性,使編程更為方便。
Java線(xiàn)程通常被映射為實(shí)際的操作系統線(xiàn)程,只要底層操作系統支持這種映射。因此,用Java寫(xiě)的應用程序可說(shuō)是“MP熱”。這就是說(shuō),如果它們在多處理器機器上運行,它們更將表現不凡。
9、Java是可收集無(wú)用的存儲單元的
用C及C++寫(xiě)軟件的編程人員必須仔細跟蹤所用的內存塊。當一個(gè)塊不再使用時(shí),他們務(wù)必讓程序釋放它,從而方可再用。在大的項目中,這可能很困難,并往往成為出錯和內存不足的根源。
在Java的情況下,編程人員不必為內存管理操心。Java系統有一個(gè)叫做“無(wú)用單元收集器”的內置程序,它掃描內存,并自動(dòng)釋放那些不再使用的內存塊。
10、Java是快速的
Java比典型的腳本語(yǔ)言大為有效,但它比C慢20倍。這對大多數應用是可接受的。不久的將來(lái),代碼生成器就可供利用了,這將使Java程序幾近于用C或C++編寫(xiě)的程序那么快。
11、Java是安全的
Java程序沒(méi)有指針,而且象這樣的字節代碼程序強在類(lèi)型上,所以在執行之前它可能驗證Java程序。被驗證的Java程序得以保證不突破Java語(yǔ)言的任何限制,而且可以安全地執行。Java字節代碼驗證被Web瀏覽器用來(lái)確保小程序不含病毒。
12、Java是可擴展的
Java程序可與用其它語(yǔ)言編寫(xiě)的現存程序庫連接。由于Java數據結構與C的數據結構的類(lèi)型極為相似,這是相當方便的。最大的問(wèn)題在于,現有多線(xiàn)程程序庫為數不多。
Java程序可以聲明某些方法是內部的,然后,把這些內部方法映射成軟件庫所定義的功能,從而動(dòng)態(tài)地鏈接到虛擬機。