- java語言概述基本 推薦度:
- Java語言的基本概述 推薦度:
- 相關(guān)推薦
Java語言基本概述
引導(dǎo)語:Java語言具有功能強(qiáng)大和簡單易用兩個(gè)特征。為了幫助大家了解Java,以下是百分網(wǎng)小編分享給大家的Java語言概述,歡迎閱讀學(xué)習(xí)!
背景
1991年,SUNMicroSystem公司的JameGosling、BillJoe等人,為在電視、控制烤面包箱等家用消費(fèi)類電子產(chǎn)品上進(jìn)行交互式操作而開發(fā)了一個(gè)名為Oak的軟件(即一種橡樹的名字),但當(dāng)時(shí)并沒有引起人們的注意,直到1994年下半年,Internet的迅猛發(fā)展,環(huán)球信息網(wǎng)WWW的快速增長,促進(jìn)了Java語言研制的進(jìn)展,使得它逐漸成為Internet上受歡迎的開發(fā)與編程語言,一些著名的計(jì)算機(jī)公司紛紛購買了Java語言的使用權(quán),
如Mi-croSoft、IBM、Netscape、Novell、Apple、DEC、SGI等,因此,Java語言被美國的著名雜志PCMagazine評為1995年十大優(yōu)秀科技產(chǎn)品,(計(jì)算機(jī)類就此一項(xiàng)入選),隨之大量出現(xiàn)了用Java編寫的軟件產(chǎn)品,受到工業(yè)界的重視與好評,認(rèn)為"Java是八十年代以來計(jì)算機(jī)界的一件大事",
微軟總裁比爾·蓋茨在悄悄地觀察了一段時(shí)間后,不無感慨地說:"Java是長時(shí)間以來最卓越的程序設(shè)計(jì)語言",并確定微軟整個(gè)軟件開發(fā)的戰(zhàn)略從PC單機(jī)時(shí)代向著以網(wǎng)絡(luò)為中心的計(jì)算時(shí)代轉(zhuǎn)移,而購買Java則是他的重大戰(zhàn)略決策的實(shí)施部署。因此,Java的誕生必將對整個(gè)計(jì)算機(jī)產(chǎn)業(yè)發(fā)生深遠(yuǎn)的影響,對傳統(tǒng)的計(jì)算模型提出了新的挑戰(zhàn)。
SUNMicroSystem公司的總裁ScottMcNealy認(rèn)為Java為Internet和WWW開辟了一個(gè)嶄新的時(shí)代.
環(huán)球信息網(wǎng)WWW的創(chuàng)始人Berners-Lee說:"計(jì)算機(jī)事業(yè)發(fā)展的下一個(gè)浪潮就是Java,并且將很快會(huì)發(fā)生的"?磥,使用Java已成大勢所趨!
MicroSoft和IBM兩大公司都計(jì)劃在Internet上銷售用Java編寫的軟件。
Apple、HP、IBM、MicroSoft、Novell、SGI、SCO、Tandem等公司均計(jì)劃將Java并入各自開發(fā)的操作系統(tǒng),而負(fù)責(zé)開發(fā)并推廣Java技術(shù)的SunSoft公司(這是SUN下屬的一個(gè)子公司),將通過頒發(fā)許可證的辦法來允許各家公司把Java虛擬機(jī)和Java的Applets類庫嵌入他們開發(fā)的操作系統(tǒng),這樣各類開發(fā)人員就能更容易地選擇多種平臺(tái)來使用Java語言編程,不同的用戶也就可以脫離Web瀏覽器來運(yùn)行Java應(yīng)用程序,這無疑是很受廣大用戶歡迎的,也為Java語言的應(yīng)用開拓了極為廣闊的前景。(當(dāng)然,各類JavaOS之間的兼容性必須得到重視,好在JavaSoft已保證將監(jiān)督這種兼容性)。
另外,由JavaSoft推出的完全用Java編寫的Internet上新型瀏覽器HotJava,比去年alpha版更為實(shí)用,不僅能編制動(dòng)態(tài)的應(yīng)用軟件,而且能編制完整的成套桌面應(yīng)用軟件,將來還會(huì)提供更多的能幫助編制動(dòng)態(tài)應(yīng)用軟件的模塊,顯然,這也是為Java的應(yīng)用提供了有力的例證。
今年6月7日,由SUN公司和臺(tái)灣經(jīng)濟(jì)事務(wù)部信息發(fā)展局,臺(tái)灣信息技術(shù)研究所等單位牽頭,成立了一個(gè)"Java聯(lián)盟",參加的有22個(gè)在臺(tái)灣相當(dāng)著名的計(jì)算機(jī)公司,并在臺(tái)北建立一個(gè)"Java開發(fā)中心",在新竹建立一個(gè)"Java語言實(shí)驗(yàn)室",以掀起臺(tái)灣開發(fā)與應(yīng)用Java語言的熱潮。
香港則在今年4月就舉行了全島的Java杯比賽,在計(jì)算機(jī)界掀起了學(xué)習(xí)Java的熱潮(尤其是在大學(xué)生們中,出現(xiàn)了一批Java迷)。
有人預(yù)言:Java將是網(wǎng)絡(luò)上的"世界語",今后所有的用其他語言編寫的軟件統(tǒng)統(tǒng)都要用Java語言來改寫。
Java是一個(gè)廣泛使用的網(wǎng)絡(luò)編程語言,它是一種新的計(jì)算概念。
首先,作為一種程序設(shè)計(jì)語言,它簡單、面向?qū)ο蟆⒉灰蕾囉跈C(jī)器的結(jié)構(gòu)、具有可移植性、魯棒性、安全性、并且提供了并發(fā)的機(jī)制、具有很高的性能。
其次,它最大限度地利用了網(wǎng)絡(luò),Java的小應(yīng)用程序(applet)可在網(wǎng)絡(luò)上傳輸而不受CPU和環(huán)境的限制。另外,Java還提供了豐富的類庫,使程序設(shè)計(jì)者可以很方便地建立自己的系統(tǒng)。
下面我們分別從這三個(gè)方面來討論Java的特點(diǎn),然后通過把Java與C,C++相比進(jìn)一步指出它所具有的優(yōu)點(diǎn)。
一、Java語言
Java語言有下面一些特點(diǎn):簡單、面向?qū)ο、分布式、解釋?zhí)行、魯棒、安全、體系結(jié)構(gòu)中立、可移植、高性能、多線程以及動(dòng)態(tài)性。
1.簡單性
Java語言是一種面向?qū)ο蟮恼Z言,它通過提供最基本的方法來完成指定的任務(wù),只需理解一些基本的概念,就可以用它編寫出適合于各種情況的應(yīng)用程序。Java略去了運(yùn)算符重載、多重繼承等模糊的概念,并且通過實(shí)現(xiàn)自動(dòng)垃圾收集大大簡化了程序設(shè)計(jì)者的內(nèi)存管理工作。另外,Java也適合于在小型機(jī)上運(yùn)行,它的基本解釋器及類的支持只有40KB左右,加上標(biāo)準(zhǔn)類庫和線程的支持也只有215KB左右。庫和線程的支持也只有215KB左右。
2.面向?qū)ο?/p>
Java語言的設(shè)計(jì)集中于對象及其接口,它提供了簡單的類機(jī)制以及動(dòng)態(tài)的接口模型。對象中封裝了它的狀態(tài)變量以及相應(yīng)的方法,實(shí)現(xiàn)了模塊化和信息隱藏;而類則提供了一類對象的原型,并且通過繼承機(jī)制,子類可以使用父類所提供的方法,實(shí)現(xiàn)了代碼的復(fù)用。
3.分布性
Java是面向網(wǎng)絡(luò)的語言。通過它提供的類庫可以處理TCP/IP協(xié)議,用戶可以通過URL地址在網(wǎng)絡(luò)上很方便地訪問其它對象。
4.魯棒性
Java在編譯和運(yùn)行程序時(shí),都要對可能出現(xiàn)的問題進(jìn)行檢查,以消除錯(cuò)誤的產(chǎn)生。它提供自動(dòng)垃圾收集來進(jìn)行內(nèi)存管理,防止程序員在管理內(nèi)存時(shí)容易產(chǎn)生的錯(cuò)誤。通過集成的面向?qū)ο蟮睦馓幚頇C(jī)制,在編譯時(shí),Java提示出可能出現(xiàn)但未被處理的例外,幫助程序員正確地進(jìn)行選擇以防止系統(tǒng)的崩潰。另外,Java在編譯時(shí)還可捕獲類型聲明中的許多常見錯(cuò)誤,防止動(dòng)態(tài)運(yùn)行時(shí)不匹配問題的出現(xiàn)。
5.安全性
用于網(wǎng)絡(luò)、分布環(huán)境下的Java必須要防止病毒的入侵。Java不支持指針,一切對內(nèi)存的訪問都必須通過對象的實(shí)例變量來實(shí)現(xiàn),這樣就防止程序員使用"特洛伊"木馬等欺騙手段訪問對象的私有成員,同時(shí)也避免了指針操作中容易產(chǎn)生的錯(cuò)誤。
6.體系結(jié)構(gòu)中立
Java解釋器生成與體系結(jié)構(gòu)無關(guān)的字節(jié)碼指令,只要安裝了Java運(yùn)行時(shí)系統(tǒng),Java程序就可在任意的處理器上運(yùn)行。這些字節(jié)碼指令對應(yīng)于Java虛擬機(jī)中的表示,Java解釋器得到字節(jié)碼后,對它進(jìn)行轉(zhuǎn)換,使之能夠在不同的平臺(tái)運(yùn)行。
7.可移植性
與平臺(tái)無關(guān)的特性使Java程序可以方便地被移植到網(wǎng)絡(luò)上的不同機(jī)器。同時(shí),Java的類庫中也實(shí)現(xiàn)了與不同平臺(tái)的接口,使這些類庫可以移植。另外,Java編譯器是由Java語言實(shí)現(xiàn)的,Java運(yùn)行時(shí)系統(tǒng)由標(biāo)準(zhǔn)C實(shí)現(xiàn),這使得Java系統(tǒng)本身也具有可移植性。
8.解釋執(zhí)行
Java解釋器直接對Java字節(jié)碼進(jìn)行解釋執(zhí)行。字節(jié)碼本身攜帶了許多編譯時(shí)信息,使得連接過程更加簡單。
9.高性能
和其它解釋執(zhí)行的語言如BASIC、TCL不同,Java字節(jié)碼的設(shè)計(jì)使之能很容易地直接轉(zhuǎn)換成對應(yīng)于特定CPU的機(jī)器碼,從而得到較高的性能。
10.多線程
多線程機(jī)制使應(yīng)用程序能夠并行執(zhí)行,而且同步機(jī)制保證了對共享數(shù)據(jù)的正確操作。通過使用多線程,程序設(shè)計(jì)者可以分別用不同的線程完成特定的行為,而不需要采用全局的事件循環(huán)機(jī)制,這樣就很容易地實(shí)現(xiàn)網(wǎng)絡(luò)上的實(shí)時(shí)交互行為。
11.動(dòng)態(tài)性
Java的設(shè)計(jì)使它適合于一個(gè)不斷發(fā)展的環(huán)境。在類庫中可以自由地加入新的方法和實(shí)例變量而不會(huì)影響用戶程序的執(zhí)行。并且Java通過接口來支持多重繼承,使之比嚴(yán)格的類繼承具有更靈活的方式和擴(kuò)展性。
二、JavaApplet
Java語言的特性使它可以最大限度地利用網(wǎng)絡(luò)。Applet是Java的小應(yīng)用程序,它是動(dòng)態(tài)、安全、跨平臺(tái)的網(wǎng)絡(luò)應(yīng)用程序。JavaApplet嵌入HTML語言,通過主頁發(fā)布到Internet。網(wǎng)絡(luò)用戶訪問服務(wù)器的Applet時(shí),這些Applet從網(wǎng)絡(luò)上進(jìn)行傳輸,然后在支持Java的瀏覽器中運(yùn)行。由于Java語言的安全機(jī)制,用戶一旦載入Applet,就可以放心地來生成多媒體的用戶界面或完成復(fù)雜的計(jì)算而不必?fù)?dān)心病毒的入侵。雖然Applet可以和圖像、聲音、動(dòng)畫等一樣從網(wǎng)絡(luò)上下載,但它并不同于這些多媒體的文件格式,它可以接收用戶的輸入,動(dòng)態(tài)地進(jìn)行改變,而不僅僅是動(dòng)畫的顯示和聲音的播放。
三、豐富的類庫
Java提供了大量的類以滿足網(wǎng)絡(luò)化、多線程、面向?qū)ο笙到y(tǒng)的需要。
1.語言包提供的支持包括字符串處理、多線程處理、例外處理、數(shù)學(xué)函數(shù)處理等,可以用它簡單地實(shí)現(xiàn)Java程序的運(yùn)行平臺(tái)。
2.實(shí)用程序包提供的支持包括哈希表、堆棧、可變數(shù)組、時(shí)間和日期等。
3.輸入輸出包用統(tǒng)一的"流"模型來實(shí)現(xiàn)所有格式的I/O,包括文件系統(tǒng)、網(wǎng)絡(luò)、輸入/出設(shè)備等。
4.低級網(wǎng)絡(luò)包用于實(shí)現(xiàn)Socket編程。
5.抽象圖形用戶接口包實(shí)現(xiàn)了不同平臺(tái)的計(jì)算機(jī)的圖形用戶接口部件,包括窗口、菜單、滾動(dòng)條、對話框等,使得Java可以移植到不同平臺(tái)的機(jī)器。
6.網(wǎng)絡(luò)包支持Internet的TCP/IP協(xié)議,提供了與Internet的接口。它支持URL連接,WWW的即時(shí)訪問,并且簡化了用戶/服務(wù)器模型的程序設(shè)計(jì)。
四、Java和C、C++
對于變量聲明、參數(shù)傳遞、操作符、流控制等,Java使用了和C、C++相同的傳統(tǒng),使得熟悉C、C++的程序員能很方便地進(jìn)行編程。同時(shí),Java為了實(shí)現(xiàn)其簡單、魯棒、安全等特性,也摒棄了C和C++中許多不合理的內(nèi)容。
1.全局變量
Java程序中,不能在所有類之外定義全局變量,只能通過在一個(gè)類中定義公用、靜態(tài)的變量來實(shí)現(xiàn)一個(gè)全局變量。例如:
ClassGlobalVar{
publicstaticglobal_var;
}
在類GlobalVar中定義變量global_var為publicstat-ic,使得其它類可以訪問和修改該變量。
Java對全局變量進(jìn)行了更好的封裝。而在C和C++中,依賴于不加封裝的全局變量常常造成系統(tǒng)的崩潰。
2.Goto
Java不支持C、C++中的goto語句,而是通過例外處理語句try,Catch,final等來代替C、C++中用goto來處理遇到錯(cuò)誤時(shí)跳轉(zhuǎn)的情況,使程序更可讀且更結(jié)構(gòu)化。
3.指針
指針是C、C++中最靈活,也是最容易產(chǎn)生錯(cuò)誤的數(shù)據(jù)類型。由指針?biāo)M(jìn)行的內(nèi)存地址操作常會(huì)造成不可預(yù)知的錯(cuò)誤,同時(shí)通過指針對某個(gè)內(nèi)存地址進(jìn)行顯式類型轉(zhuǎn)換后,可以訪問一個(gè)C++中的私有成員,從而破壞安全性,造成系統(tǒng)的崩潰。而Java對指針進(jìn)行完全的控制,程序員不能直接進(jìn)行任何指針操作,例如把整數(shù)轉(zhuǎn)化為指針,或者通過指針釋放某一內(nèi)存地址等。同時(shí),數(shù)組作為類在Java中實(shí)現(xiàn),良好地解決了數(shù)組訪問越界這一C、C++中不作檢查的錯(cuò)誤。
4.內(nèi)存管理
在C中,程序員通過庫函數(shù)malloc()和free()來分配和釋放內(nèi)存,C++中則通過運(yùn)算符new和delete來分配和釋放內(nèi)存。再次釋放已釋放的內(nèi)存塊或未被分配的內(nèi)存塊,會(huì)造成系統(tǒng)的崩潰;同樣,忘記釋放不再使用的內(nèi)存塊也會(huì)逐漸耗盡系統(tǒng)資源。而在Java中,所有的數(shù)據(jù)結(jié)構(gòu)都是對象,通過運(yùn)算符new為它們分配內(nèi)存堆。通過new得到對象的處理權(quán),而實(shí)際分配給對象的內(nèi)存可能隨程序運(yùn)行而改變,Java對此自動(dòng)地進(jìn)行管理并且進(jìn)行垃圾收集,有效防止了由于程序員的誤操作而導(dǎo)致的錯(cuò)誤,并且更好地利用了系統(tǒng)資源。
5.數(shù)據(jù)類型的支持
在C、C++中,對于不同的平臺(tái),編譯器對于簡單數(shù)據(jù)類型如int,float等分別分配不同長度的字節(jié)數(shù),例如:int在IBMPC中為16位,在VAX-11中為32位,這導(dǎo)致了代碼的不可移植性,但在Java中,對于這些數(shù)據(jù)類型總是分配固定長度的位數(shù),如對int型,它總占32位,這就保證了Java的平臺(tái)無關(guān)性。
6.類型轉(zhuǎn)換
在C、C++中,可以通過指針進(jìn)行任意的類型轉(zhuǎn)換,常常帶來不安全性,而Java中,運(yùn)行時(shí)系統(tǒng)對對象的處理要進(jìn)行類型相容性檢查,以防止不安全的轉(zhuǎn)換。
7.頭文件
C、C++中用頭文件來聲明類的原型以及全局變量、庫函數(shù)等,在大的系統(tǒng)中,維護(hù)這些頭文件是很困難的。而Java不支持頭文件,類成員的類型和訪問權(quán)限都封裝在一個(gè)類中,運(yùn)行時(shí)系統(tǒng)對訪問進(jìn)行控制,防止對私有成員的操作。同時(shí),Java中用import語句來與其它類進(jìn)行通訊,以便使用它們的方法。
8.結(jié)構(gòu)和聯(lián)合
C、C++中的結(jié)構(gòu)和聯(lián)合中所有成員均為公有,這就帶來了安全性問題。Java中不包含結(jié)構(gòu)和聯(lián)合,所有的內(nèi)容都封裝在類中。
9.預(yù)處理
C、C++中用宏定義來實(shí)現(xiàn)的代碼給程序的可讀性帶來了困難。在Java中,不支持宏,它通過關(guān)鍵字final來聲明一個(gè)常量,以實(shí)現(xiàn)宏定義中廣泛使用的常量定義。
【Java語言基本概述】相關(guān)文章:
Java語言的基本概述07-09
java語言概述(基本)09-08
Java語言的概述09-17
Java 語言概述09-05
Java語言基本語法09-19
Java語言基本特點(diǎn)06-01
Java語言的基本特點(diǎn)07-30
Java中的Collection類概述06-22
Java基礎(chǔ)知識(shí)概述07-10