Java是由Sun Microsystems公司于1995年(nián)5月(yuè)推出的Java面向對象程序設計語言和Java平台的總稱。由James Gosling和同事(shì)們共同研發,并在1995年(nián)正式推出。
Java分為(wèi)三個(gè)體系:
JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标準版)
JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企業(yè)版)
JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)。
2005年(nián)6月(yuè),JavaOne大會(huì)召開(kāi),SUN公司公開(kāi)Java SE 6。此時,Java的各種版本已經更名以取消其中的數字"2":J2EE更名為(wèi)Java EE, J2SE更名為(wèi)Java SE,J2ME更名為(wèi)Java ME。
主要特性
Java語言是簡單的:
Java語言的語法與C語言和C++語言很接近,使得大多(duō)數程序員(yuán)很容易學習和使用。另一(yī)方面,Java丢棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多(duō)繼承、自(zì)動的強制類型轉換。特别地,Java語言不使用指針,而是引用。并提供了自(zì)動的廢料收集,使得程序員(yuán)不必為(wèi)内存管理而擔憂。
Java語言是面向對象的:
Java語言提供類、接口和繼承等面向對象的特性,為(wèi)了簡單起見(jiàn),隻支持類之間的單繼承,但支持接口之間的多(duō)繼承,并支持類與接口之間的實現機(jī)制(關鍵字為(wèi)implements)。Java語言全面支持動态綁定,而C++語言隻對虛函數使用動态綁定。總之,Java語言是一(yī)個(gè)純的面向對象程序設計語言。
Java語言是分布式的:
Java語言支持Internet應用的開(kāi)發,在基本的Java應用編程接口中有一(yī)個(gè)網絡應用編程接口(java net),它提供了用于網絡應用編程的類庫,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠(yuǎn)程方法激活)機(jī)制也是開(kāi)發分布式應用的重要手段。
Java語言是健壯的:
Java的強類型機(jī)制、異常處理、垃圾的自(zì)動收集等是Java程序健壯性的重要保證。對指針的丢棄是Java的明智選擇。Java的安全檢查機(jī)制使得Java更具健壯性。
Java語言是安全的:
Java通(tōng)常被用在網絡環境中,為(wèi)此,Java提供了一(yī)個(gè)安全機(jī)制以防惡意代碼的攻擊。除了Java語言具有的許多(duō)安全特性以外,Java對通(tōng)過網絡下(xià)載的類具有一(yī)個(gè)安全防範機(jī)制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、字節代碼檢查,并提供安全管理機(jī)制(類SecurityManager)讓Java應用設置安全哨兵。
Java語言是體系結構中立的:
Java程序(後綴為(wèi)java的文件(jiàn))在Java平台上(shàng)被編譯為(wèi)體系結構中立的字節碼格式(後綴為(wèi)class的文件(jiàn)),然後可以在實現這個(gè)Java平台的任何系統中運行。這種途徑适合于異構的網絡環境和軟件(jiàn)的分發。
Java語言是可移植的:
這種可移植性來源于體系結構中立性,另外,Java還(hái)嚴格規定了各個(gè)基本數據類型的長(cháng)度。Java系統本身也具有很強的可移植性,Java編譯器(qì)是用Java實現的,Java的運行環境是用ANSI C實現的。
Java語言是解釋型的:
如前所述,Java程序在Java平台上(shàng)被編譯為(wèi)字節碼格式,然後可以在實現這個(gè)Java平台的任何系統中運行。在運行時,Java平台中的Java解釋器(qì)對這些字節碼進行解釋執行,執行過程中需要的類在聯接階段被載入到(dào)運行環境中。
Java是高(gāo)性能(néng)的:
與那些解釋型的高(gāo)級腳本語言相(xiàng)比,Java的确是高(gāo)性能(néng)的。事(shì)實上(shàng),Java的運行速度随著(zhe)JIT(Just-In-Time)編譯器(qì)技(jì)術(shù)的發展越來越接近于C++。
Java語言是多(duō)線程的:
在Java語言中,線程是一(yī)種特殊的對象,它必須由Thread類或其子(孫)類來創建。通(tōng)常有兩種方法來創建線程:其一(yī),使用型構為(wèi)Thread(Runnable)的構造子類将一(yī)個(gè)實現了Runnable接口的對象包裝成一(yī)個(gè)線程,其二,從(cóng)Thread類派生(shēng)出子類并重寫run方法,使用該子類創建的對象即為(wèi)線程。值得注意的是Thread類已經實現了Runnable接口,因此,任何一(yī)個(gè)線程均有它的run方法,而run方法中包含了線程所要運行的代碼。線程的活動由一(yī)組方法來控制。Java語言支持多(duō)個(gè)線程的同時執行,并提供多(duō)線程之間的同步機(jī)制(關鍵字為(wèi)synchronized)。
Java語言是動态的:
Java語言的設計目标之一(yī)是适應于動态變化的環境。Java程序需要的類能(néng)夠動态地被載入到(dào)運行環境,也可以通(tōng)過網絡來載入所需要的類。這也有利于軟件(jiàn)的升級。另外,Java中的類有一(yī)個(gè)運行時刻的表示,能(néng)進行運行時刻的類型檢查。