還記得剛開始學(xué)習(xí)編程時(shí),我就在想:“Java和JavaScript是同一種語言嗎?”。就是因?yàn)榭吹剿鼈兠Q中都帶“java”,所以才會(huì)誤以為它們有關(guān)系。實(shí)際上,它們并沒有太大的聯(lián)系。
這兩者的關(guān)系,就和英語與斯瓦希里語「非洲語言使用人口最多的語言之一,簡稱斯語」類似。兩者都是語言,但是語法、用詞甚至語音都完全不同。與英語和斯語相比,Java和JavaScript的區(qū)別其實(shí)更大。英語和斯語是大部分人日?;ハ嘟涣鳒贤ǖ恼Z言。但是,java和JavaScript是計(jì)算機(jī)語言,具有不同的交流方式。
>>不同之處
1、命名
JavaScript是由Netscape公司設(shè)計(jì)實(shí)現(xiàn)而成的。JavaScript最初被稱為Mocha,然后更名為LiveScript。Netscape公司與Sun公司合作,Netscape高層希望它看上去能夠像Java,因此才取名為JavaScript。其實(shí)JavaScript走的一直是依靠大IP普及的營銷策略,正如一開始我們所疑惑的地方一樣,JavaScript就是依靠類似java的名稱才被大眾所熟知。就是靠著這一點(diǎn),現(xiàn)在JavaScript已經(jīng)是世界上第三流行的語言,并且人氣還在不斷上升。
Java是由Oracle公司(以前由Sun Microsystems)提供支持。而Java最初被稱為Oak,然后更名為Green,后來才改成當(dāng)前的名稱Java。而java雖說是使用最廣泛的語言之一,但近年來人氣卻在緩慢下降。
2、應(yīng)用范圍
Java具有極廣的通用性,幾乎在任何地方都可以使用;而JavaScript主要用于帶有一些牽引服務(wù)器端「Node」,移動(dòng)端「React Native」和桌面端「Electron」的前端Web開發(fā)。
3、語言特性
JavaScript是一種腳本語言,很多知名的瀏覽器都對(duì)Js有非常良好的本地支持,所以它成為了最受歡迎的前端語言之一;而Java是一種面向?qū)ο蟮母呒?jí)編程語言,不適合作前端開發(fā)。
4、基于對(duì)象和面向?qū)ο?/div>
Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序。它是一種真正的面向?qū)ο?Object Oriented)的語言,即便是開發(fā)簡單的程序,也必須設(shè)計(jì)對(duì)象。
JavaScript是一種網(wǎng)絡(luò)腳本語言,常用來為網(wǎng)頁添加各式各樣的動(dòng)態(tài)功能,為用戶提供更流暢美觀的瀏覽效果。它可以使網(wǎng)頁具有交互性;并提供及時(shí)反饋節(jié)省用戶時(shí)間;還可以根據(jù)用戶的操作,動(dòng)態(tài)的創(chuàng)建頁面。它是一種基于對(duì)象(Object Based)和事件驅(qū)動(dòng)(Event Driver)的編程語言。
5、解釋和編譯
Java是一種編譯語言,即Java代碼被轉(zhuǎn)換為在語言虛擬機(jī)中執(zhí)行字節(jié)碼。Java的源代碼在執(zhí)行之前,必須經(jīng)過編譯。
JavaScript是一種解釋性編程語言,其源代碼不需經(jīng)過編譯,由瀏覽器解釋執(zhí)行。(目前的瀏覽器幾乎都使用了JIT(即時(shí)編譯)技術(shù)來提升JavaScript的運(yùn)行效率)
6、檢測代碼
Java是強(qiáng)類型的靜態(tài)語言,每個(gè)變量必須預(yù)先指定其類型。JavaScript是弱類型的動(dòng)態(tài)語言,其變量可以根據(jù)賦值而改變類型,如:var s=10;那么s為int型。JavaScript使用動(dòng)態(tài)類型檢查,即它是在執(zhí)行JavaScript代碼時(shí)檢查變量的類型。這樣做有一個(gè)好處就是可以使程序員更容易編碼。而Java使用靜態(tài)類型檢查,即它是在編譯時(shí)驗(yàn)證變量的類型。也就是說,它要檢測的錯(cuò)誤代碼更少!
7、代碼格式
JavaScript與Java代碼格式不一樣。JavaScript的代碼是一種文本字符格式,可以直接嵌入HTML文檔中,并且可動(dòng)態(tài)裝載。Java是一種與HTML無關(guān)的格式,必須通過像HTML中引用外媒體那樣進(jìn)行裝載,其代碼以字節(jié)代碼的形式保存在獨(dú)立的文檔中,其獨(dú)立文件的格式為*.class。
8、線程
JavaScript不支持多線程,因?yàn)闉g覽器中的JavaScript解釋器是單線程的。而Java則支持多線程。
9、圖文操作
Java可以直接對(duì)文本和圖形進(jìn)行操作。而JavaScript是通過在Web頁面中與HTML元素組合來發(fā)揮作用的,但JaveScrit可以控制瀏覽器,讓瀏覽器直接對(duì)文本和圖形進(jìn)行處理。
10.工作機(jī)會(huì)
Java比JavaScript有更多的工作機(jī)會(huì)。根據(jù)數(shù)據(jù),在中國Java開發(fā)發(fā)布了21094個(gè)職位,而JavaScript開發(fā)只發(fā)布了8486個(gè)職位。相比較而言,Java更適合你尋找工作。
了解java和JavaScript的不同之處,其實(shí)并沒有其他的意義,重要的是要通過清楚他們不同之處,明白什么時(shí)候更適合用JavaScript,而哪些情況下則使用java。
那么,什么時(shí)候使用JavaScript和Java?
舉個(gè)例子來說,如何用java和JavaScript的方法實(shí)現(xiàn)讓孩子跳躍的操作?
按Java的方法:因?yàn)楹⒆勇牪欢?ldquo;跳”,所以你要在他大腦的部分區(qū)域插入了一個(gè)控制跳躍功能的電極裝置。當(dāng)電極沖擊大腦時(shí),他就會(huì)不由自主地跳動(dòng)。機(jī)器可以將你的指令轉(zhuǎn)化為腦信號(hào),你只需要將其安裝在他身上,不需要借助其他的東西,就可以控制他完成“跳躍”動(dòng)作。
按JavaScript的方法:實(shí)現(xiàn)“跳躍”,其實(shí)只要教孩子如何跳躍。教完以后,當(dāng)你說“跳”時(shí),他便知道要開始跳了。所以在JavaScript中,主要的還是你需要教他如何理解“跳”一詞。畢竟程序必須先知道如何解釋命令才能執(zhí)行。
回到我們的示例當(dāng)中,除了本身無法在大腦中插入電極裝置以外,將機(jī)器安裝在人身上,讓他遵循命令的行為是非常不可取的。而如果你教他理解命令,這樣的話,下次他一聽到這個(gè)命令,就能在沒有其他東西輔助的情況下工作。
人是如此,計(jì)算機(jī)亦是。為什么一直在強(qiáng)調(diào)解釋型的重要性,主要還是因?yàn)檫@樣相比較而言更容易編寫,但并不是所有時(shí)間都要使用JavaScript。
平日里遇到要用java或JavaScript進(jìn)行編寫時(shí),我個(gè)人的建議是,JavaScript固然十分好用,但一定要是自律性很高的人才更適用,因?yàn)?,?dāng)你需要維護(hù)混亂無規(guī)則的JavaScript代碼時(shí),就會(huì)發(fā)現(xiàn),那簡直是一場噩夢(mèng)。所以,我還是建議你優(yōu)先使用java來編寫程序。因?yàn)?,日常工作?dāng)中,你大可使用java編寫不受限的程序?yàn)g覽器。
凡事都有局限性,了解了java和JavaScript的不同之處,分清他們具體使用的時(shí)機(jī),你就會(huì)更有效的完成手頭工作。
好啦,關(guān)于java和JavaScript不同之處的介紹就到此結(jié)束了。感謝你的閱讀!一味地在網(wǎng)絡(luò)上尋求學(xué)習(xí)方式和工作技巧,是不足以靜下心來完成學(xué)習(xí)和工作的。放下手機(jī),著手開始執(zhí)行你制定好的計(jì)劃,相信自己一定會(huì)成功的。
(責(zé)任編輯:代碼如詩) |