前言
昨天在刷LeetCode時,在對之前的一道簡單題(13.羅馬數字轉整數)進行二刷時,由于之前在學校學的是Java,所以之前已經用Java做過一遍了,而最近在學JS,我就嘗試著用JS去做,也很快的做出來了。但當我發現同樣的代碼JS花費的時間為116ms,而Java僅僅花費2ms,這使得我對這兩門語言產生了濃厚的興趣,我嘗試著去網上查找資料,最終寫下這篇文章。
JavaScript(耗時116ms):
Java(耗時2ms):
為什么會有如此大的差別呢?
之所以會有如此大的差別,主要是由于這兩門語言在設計和執行環境上的差異導致的,主要分為以下因素:
編譯與解釋
Java:編譯型語言,Java代碼首先會被編譯成字節碼,然后在Java虛擬機(JVM)上運行。Java的這種編譯方式可以進行很多優化,從而提高代碼的執行速度。
JavaScript:解釋性語言,代碼在運行時,會由瀏覽器的JavaScript解釋器逐行進行解釋,然后再交給V8引擎去執行。然而,正是因為這種解釋性質,會使得JavaScript的執行速度通常較慢。
這就相當于在JavaScript執行代碼時存在一個中間商,將解釋器類比為中間商,最終到客戶手里商品的價格自然就會更高。所以JavaScript耗時會比Java長。
執行環境不同
Java:執行環境為Java虛擬機(JVM),它是一種高度優化的運行時環境,專門設計用于執行Java字節碼。由于JVM具有即時編譯器(Just-In-Time Compiler),它可以將字節碼編譯成的字節碼轉換為本機機器代碼,這將大大提高代碼的執行速度。
JavaScript:執行環境為瀏覽器或者Node.js等運行時環境。而這些環境都缺少了像Java的執行環境JVM那種強大的編譯和優化工具,因此執行代碼時性能較差,執行速度慢。
JVM就相當于游戲加速器,而JS沒有,這使得Java的執行性能要遠高于JavaScript.
既然Java比JavaScript快,為什么JavaScript沒被淘汰呢?
你別看兩門語言名字差不多,但是他們相同之處卻非常少,運用的領域也各不相同。Java和JavaScript這兩種語言沒有直接關系,盡管它們的名稱相似。其中Java是由Sun公司(現在是Oracle Corporation)開發的,而JavaScript最初由Netscape Communications Corporation開發,后來被標準化為ECMAScript。
用途不同
Java:通常用于開發大型、高性能的應用程序,包括企業級應用、桌面應用、游戲等,我們熟知的編譯軟件IDEA、Eclipse、netbean都是Java做的。游戲方面,曾爆火的游戲《我的世界》就是用Java開發的。Android的核心系統也是采用Java語言編寫的,尤其采用Java的核心庫,如Apache Harmony來實現JVM。因此,它在執行速度和性能方面進行了很多優化。
JavaScript:主要用于前端網頁的開發,市面上現今大部分網站,以及微信小程序都是在JS結合其他后端語言,比如Node.js等語言進行開發的,其主要實現的目的是與用戶交互,因此它的執行速度通常不是關鍵問題。
語言類型不同
Java:靜態類型語言,類型檢查在編譯時進行,這有助于檢測和預防很多錯誤,但也增加了編程的復雜性。
JavaScript:動態類型語言,類型檢查發生在運行時,這使得代碼更加靈活,但也可能導致在運行時出現類型相關的錯誤。
其他不同之處:
1、對象模型不同
Java:一種嚴格面向對象的編程語言,所有代碼都必須包含在類中,支持繼承、封裝、多態等面向對象編程概念。
JavaScript:雖然也可以支持面向對象編程,但其對象模型不同于Java。JavaScript的對象是動態的,可以隨時添加或刪除屬性和方法。
2、類型系統不同
Java:一種強類型語言,需要在編寫代碼時明確定義變量的類型,同時在編譯時進行類型檢查。
JavaScript:是一種弱類型語言,變量的類型可以在運行時動態更改,不需要明確指定類型。
總結
Java的執行速度確實高于JavaScript,但Java和JavaScript也是兩種完全不同的編程語言,它們在用途上以及語法上存在很多不同之處,開發者需要根據具體項目需求來選擇使用哪種語言。盡管它們有相似的名稱,但它們沒有直接關聯。
編輯:黃飛
-
JAVA
+關注
關注
19文章
2957瀏覽量
104544 -
編程語言
+關注
關注
10文章
1938瀏覽量
34593 -
javascript
+關注
關注
0文章
516瀏覽量
53792
原文標題:每天一個知識點:尋找JavaScript和Java的區別
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論