[摘要] Java語言自1995年出現(xiàn)以來,就以迅猛的發(fā)展速度成為計算機主流和編程語言。有人誤認為Javascript就是Java。那么它和JavaScript有什么區(qū)別?本文主要從八個方面來闡述這個問題。
[關(guān)鍵詞] JavaScript Java 面向?qū)ο?/p>
Java是目前Internet時代發(fā)展速度最快的軟件開發(fā)工具之一,談到Java人們往往會想起JavaScript,很多人看到 Java 和 JavaScript 都有“Java”四個字,就以為它們是同一回事,其實它們是完完全全不同的兩種東西,有一定的聯(lián)系但并不像想象中的那樣緊密,本文主要從八個方面來說明他們之間的異同。
一、開發(fā)公司
Java是SUN公司推出的新一代面向?qū)ο蟮某绦蛟O(shè)計語言,特別適合于Internet應(yīng)用程序開發(fā)。JavaScript是Netscape公司的產(chǎn)品,其目的是為了擴展Netscape Navigator功能,而開發(fā)的一種可以嵌入Web頁面中的基于對象和事件驅(qū)動的解釋性語言。
二、基于對象和面向?qū)ο?/p>
Java是一種真正的面向?qū)ο蟮恼Z言,即使是開發(fā)簡單的程序,必須設(shè)計對象。JavaScript是種腳本語言,它可以用來制作與網(wǎng)絡(luò)無關(guān)的,與用戶交互作用的復(fù)雜軟件。它是一種基于對象(Object Based)和事件驅(qū)動(Event Driver)的編程語言。因而它本身提供了非常豐富的內(nèi)部對象供設(shè)計人員使用。
三、解釋和編譯
Java與JavaScript在瀏覽器中所執(zhí)行的方式不一樣。Java的源代碼在傳遞到客戶端執(zhí)行之前,必須經(jīng)過編譯(一般選用JDK中的Javac編譯命令),因而客戶端上必須具有相應(yīng)平臺上的仿真器或解釋器(JAVA虛擬機),它可以通過編譯器或解釋器實現(xiàn)獨立于某個特定的平臺編譯代碼的束縛。JavaScript是一種解釋性編程語言,其源代碼在發(fā)往客戶端執(zhí)行之前不需經(jīng)過編譯,而是將文本格式的字符代碼發(fā)送給客戶編由瀏覽器解釋執(zhí)行。
四、變量的定義方式
Java是面向?qū)ο蟮某绦蛟O(shè)計語言,所以結(jié)構(gòu)較為嚴謹。采用強類型變量檢查,即所有變量在編譯之前必須作聲明。JavaScript只是腳本語言,故結(jié)構(gòu)較為自由松散,變量聲明采用弱類型,即變量在使用前不需作聲明,而是解釋器在運行時檢查其數(shù)據(jù)類型。
五、代碼格式
Java是一種與HTML無關(guān)的格式,必須通過像HTML中引用外媒體那么進行裝載,其代碼以字節(jié)代碼的形式保存在獨立的文檔中其獨立文件的格式為*.class。Java應(yīng)用在網(wǎng)頁的程序稱為Java Applet,是和HTML文件分開的。JavaScript的代碼是一種文本字符格式,可以直接嵌入HTML文檔中,并且可動態(tài)裝載。編寫HTML文檔就像編輯文本文件一樣方便其獨立文件的格式為*.js。并且JavaScript必須編寫在HTML文件中,直接查看網(wǎng)頁的原始碼,就可以看到JavaScript程式,所以沒有保護,任何人都可以透過HTML文件復(fù)制程式。
六、靜態(tài)綁定和動態(tài)綁定
Java是高級語言,所以一般需要經(jīng)過編輯源程序、編譯生成的目標程序和運行可執(zhí)行程序幾個過程才能完成,代碼不直接寫在HTML文檔中。Java采用靜態(tài)聯(lián)編,即Java的對象引用必須在編譯時的進行,以使編譯器能夠?qū)崿F(xiàn)強類型檢查。JavaScript是一種“腳本”(Script),它直接把代碼寫到 HTML 文檔中, JavaScript采用動態(tài)聯(lián)編,即JavaScript的對象引用在運行時進行檢查,如不經(jīng)編譯則就無法實現(xiàn)對象引用的檢查。
七、功能的強弱
JavaScript主要應(yīng)用在客戶端瀏覽器與用戶的交互上面,一般不用在服務(wù)器端,不直接對文本和圖形進行操作,不具有讀寫檔案及網(wǎng)絡(luò)控制等功能,只是完成一些與用戶直接打交道的地方,如顯示日期、表單檢查、交互游戲等。而Java則可以直接對文本和圖形進行操作。Java不僅僅用在客戶端,如寫成Applet嵌入到瀏覽器中,而且大量(90%)用在服務(wù)器端完成更為強大的功能,總之,但從功能強弱來講,兩者由于用的地方不一樣,所以不可同日而語。
八、發(fā)展方向
JavaScript的發(fā)展面比較窄,因為它大量用在客戶端,而客戶端就是解決交互問題,這樣的解決方案目前越開越多,如果不考慮它的兼容性的話,像Flash、Applet等也能實現(xiàn)類似的功能,更不用說隨著網(wǎng)絡(luò)帶寬的不斷增加,客戶端三維技術(shù)的應(yīng)用和表現(xiàn)會把JavaScript的空間越縮越短;而Java的發(fā)展卻不然,Java將發(fā)展成一種規(guī)范。如J2EE(Java 2 Enterprise Edition)規(guī)范(體系),充分發(fā)揮了分布式對象模型的空間,已經(jīng)得到了業(yè)界的認可。特別是隨著電子商務(wù)的發(fā)展,系統(tǒng)架構(gòu)方面越來越多的網(wǎng)站采用了基于Java應(yīng)用服務(wù)器的解決方案,如Amazon、 Ebay、網(wǎng)上證券、銀行等,只要是關(guān)鍵性事務(wù),只要你的網(wǎng)站訪問量奇高,只要你考慮系統(tǒng)的擴展性、可靠性,那么,JavaScript是不能完成這些功能的,Java是我們首選的工具。
綜上所述,我們可以發(fā)現(xiàn),JavaScript與Java雖然都能編寫程序,完成一定功能,都可以應(yīng)用于網(wǎng)頁設(shè)計,但它們的確有太大的區(qū)別,根本就是兩種語言。
參考文獻
[1]Nicholas C. Zakas.曹力,張欣等譯.JavaScript高級程序設(shè)計[M].北京:人民郵電出版社,2006.
[2]陳煒等.Java編程篇[M].北京:電子工業(yè)出版社,2005.