Java是由Sun Microsystems公司于1995年5月推出的Java程式設計語言(以下簡稱Java語言)和Java平台的總稱。用Java實作的HotJava浏覽器(支援Java applet)顯示了Java的魅力:跨平台、動态的Web、Internet計算。從此,Java被廣泛接受并推動了Web的迅速發展,常用的浏覽器現在均支援Java applet。另一方面,Java技術也不斷更新。
Java平台由Java虛拟機(Java Virtual Machine)和Java 應用程式設計接口(Application Programming Interface、簡稱API)構成。Java 應用程式設計接口為Java應用提供了一個獨立于作業系統的标準接口,可分為基本部分和擴充部分。在硬體或作業系統平台上安裝一個Java平台之後,Java應用程式就可運作。現在Java平台已經嵌入了幾乎所有的作業系統。這樣Java程式可以隻編譯一次,就可以在各種系統中運作。Java應用程式設計接口已經從1.1x版發展到1.2版。目前常用的Java平台基于Java1.4,最近版本為Java1.6。
Java分為三個體系J2SE(Java2 Standard Edition),J2EE(Java 2 Platform,Enterprise Edition),J2ME(Java 2 Micro Edition)。
Java語言是一個支援網絡計算的面向對象程式設計語言。Java語言吸收了Smalltalk語言和C++語言的優點,并增加了其它特性,如支援并發程式設計、網絡通信、和多媒體資料控制等。主要特性如下:
1、Java語言是簡單的。Java語言的文法與C語言和C++語言很接近,使得大多數程式員很容易學習和使用Java。另一方面,Java丢棄了C++ 中很少使用的、很難了解的、令人迷惑的那些特性,如操作符重載、多繼承、自動的強制類型轉換。特别地,Java語言不使用指針,并提供了自動的廢料收集,使得程式員不必為記憶體管理而擔憂。
2、Java語言是一個面向對象的。Java語言提供類、接口和繼承等原語,為了簡單起見,隻支援類之間的單繼承,但支援接口之間的多繼承,并支援類與接口之間的實作機制(關鍵字為implements)。Java語言全面支援動态綁定,而C++ 語言隻對虛函數使用動态綁定。總之,Java語言是一個純的面向對象程式設計語言。
3、Java語言是分布式的。Java語言支援Internet應用的開發,在基本的Java應用程式設計接口中有一個網絡應用程式設計接口(java.net),它提供了用于網絡應用程式設計的類庫,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(遠端方法激活)機制也是開發分布式應用的重要手段。
4、Java語言是健壯的。Java的強類型機制、異常處理、廢料的自動收集等是Java程式健壯性的重要保證。對指針的丢棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。
5、Java語言是安全的。Java通常被用在網絡環境中,為此,Java提供了一個安全機制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網絡下載下傳的類具有一個安全防範機制(類ClassLoader),如配置設定不同的名字空間以防替代本地的同名類、位元組代碼檢查,并提供安全管理機制(類SecurityManager)讓Java應用設定安全哨兵。
6、Java語言是體系結構中立的。Java程式(字尾為java的檔案)在Java平台上被編譯為體系結構中立的位元組碼格式(字尾為class的檔案), 然後可以在實作這個Java平台的任何系統中運作。這種途徑适合于異構的網絡環境和軟體的分發。
7、Java語言是可移植的。這種可移植性來源于體系結構中立性,另外,Java還嚴格規定了各個基本資料類型的長度。Java系統本身也具有很強的可移植性,Java編譯器是用Java實作的,Java的運作環境是用ANSI C實作的。
8、Java語言是解釋型的。如前所述,Java程式在Java平台上被編譯為位元組碼格式, 然後可以在實作這個Java平台的任何系統中運作。在運作時,Java平台中的Java解釋器對這些位元組碼進行解釋執行,執行過程中需要的類在聯接階段被載入到運作環境中。
9、Java是高性能的。與那些解釋型的進階腳本語言相比,Java的确是高性能的。事實上,Java的運作速度随着JIT(Just-In-Time)編譯器技術的發展越來越接近于C++。
10、Java語言是多線程的。在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來建立。通常有兩種方法來建立線程:其一,使用型構為Thread(Runnable) 的構造子将一個實作了Runnable接口的對象包裝成一個線程,其二,從Thread類派生出子類并重寫run方法,使用該子類建立的對象即為線程。值得注意的是Thread類已經實作了Runnable接口,是以,任何一個線程均有它的run方法,而run方法中包含了線程所要運作的代碼。線程的活動由一組方法來控制。 Java語言支援多個線程的同時執行,并提供多線程之間的同步機制(關鍵字為synchronized)。
11、Java語言是動态的。Java語言的設計目标之一是适應于動态變化的環境。Java程式需要的類能動态地被載入到運作環境,也可以通過網絡來載入所需要的類。這也有利于軟體的更新。另外,Java中的類有一個運作時刻的表示,能進行運作時刻的類型檢查。
Java語言的優良特性使得Java應用具有無比的健壯性和可靠性,這也減少了應用系統的維護費用。Java對對象技術的全面支援和Java平台内嵌的API能縮短應用系統的開發時間并降低成本。Java的編譯一次,到處可運作的特性使得它能夠提供一個随處可用的開放結構和在多平台之間傳遞資訊的低成本方式。特别是Java企業應用程式設計接口(Java Enterprise APIs)為企業計算及電子商務應用系統提供了有關技術和豐富的類庫。