1. 程式人生 > >Java和JavaScript之間的區別

Java和JavaScript之間的區別

1.簡介

通過優銳課核心java學習筆記中,我們可以看到,Java和JavaScript之間的區別.我們將在本文中比較Java語言和JavaScript語言。JavaScript由Netscape開發。它最初是用於客戶端的指令碼語言,後來又用作客戶端和伺服器指令碼的語言。Java由James Gosling由Sun Microsystems開發。這些天來,JavaScript在伺服器中以node.js的形式使用。Java和JavaScript之間在程式編碼,編譯和執行方式方面存在許多差異。碼了很多專業的相關知識, 分享給大家參考學習。

JavaScript首先被稱為Mocha,然後被稱為LiveScript。現在它被稱為當前名稱。Java被稱為Oak,然後稱為Green。

2. Java和JavaScript之間的區別

2.1先決條件

在Linux,Windows或Mac作業系統上需要Java 8。Eclipse Oxygen可以用於此示例。 Node.js與Eclipse安裝捆綁在一起。

2.2下載

你可以從甲骨文網站下載Java 8  網站  。可以從eclipse網站上下載Eclipse Oxygen  。Node.js的可以從這個下載網站。

2.3設定

2.3.1 Java設定

以下是Java環境所需的設定命令。

設定

1個

2

3

4

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">JAVA_HOME =“ / desktop / jdk1.8.0_73”</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

匯出JAVA_HOME</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

PATH = $ JAVA_HOME / bin:$ PATH</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

匯出路徑</font></font><font></font>

2.4 IDE

2.4.1 Eclipse氧氣設定

可以從eclipse網站上下載“ eclipse-java-oxygen-2-macosx-cocoa-x86_64.tar”。雙擊開啟tar檔案。使用存檔實用程式將tar檔案解壓縮。解壓縮後,你會在資料夾中找到Eclipse圖示。你可以通過拖動圖示將Eclipse圖示從資料夾移動到應用程式。

2.5啟動IDE

2.5.1 Eclipse Java

Eclipse具有與語言支援,定製和擴充套件有關的功能。你可以單擊Eclipse圖示以啟動Eclipse。蝕螢幕彈出,如下圖所示:

Eclipse歡迎螢幕

你可以從彈出的螢幕中選擇工作區。所附影象顯示瞭如何選擇它。

Eclipse工作區

你可以在螢幕上看到Eclipse工作臺。所附的螢幕快照顯示了Eclipse專案螢幕。

Eclipse工作臺

Java  Hello World 類輸出問候語。添加了下面的螢幕快照,以顯示Eclipse中的類和執行。

 

 

 

Java Hello

你可以從選單建立一個JavaScript專案,並命名該專案,如以下螢幕快照所示:

JavaScript專案

JavaScript(Node.js)hello程式在IDE中執行。輸出“問候”顯示在下面的螢幕截圖中。

你好js

2.6記憶體管理

Java語言具有與記憶體管理相關的功能,並且是一種記憶體安全的語言。垃圾收集是一項有助於收集免費和已釋放資源的功能。Java開發人員不能超出分配的記憶體。在Java中,當記憶體消耗超出分配範圍時,它將引發錯誤。與Java相比,JavaScript需要更少的記憶體。它廣泛用於網頁中的客戶端指令碼編寫。

2.7異常處理

在Java中,可以通過使用try,catch和finally塊來進行異常處理。

Java異常處理

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18歲

public class ExceptionExample{  <font></font>

  public static void main(String args[]) throws Exception{  <font></font>

  try{  <font></font>

   int result=36/0;  <font></font>

   System.out.println(" the result is "+result);  <font></font>

  }  <font></font>

  catch(ArithmeticException exception)<font></font>

  {<font></font>

    System.out.println(exception);<font></font>

      <font></font>

    throw new Exception("division by zero");  <font></font>

  }  <font></font>

  finally<font></font>

  {<font></font>

    System.out.println("finally block is executed at the end");}  <font></font>

    System.out.println("code below is used for next steps");  <font></font>

  }  <font></font>

}<font></font>

JavaScript具有try,catch,throw和finally塊來處理異常處理。

Javascript異常處理

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18歲

19

console.log("entering try-catch statement");<font></font>

<font></font>

try {<font></font>

  console.log("entering try block");<font></font>

  throw "thrown message";<font></font>

  console.log("this message is never seen");<font></font>

}<font></font>

catch (e) {<font></font>

  console.log("entering catch block");<font></font>

  console.log(e);<font></font>

  console.log("leaving catch block");<font></font>

}<font></font>

finally {<font></font>

  console.log("entering and leaving the finally block");<font></font>

}<font></font>

<font></font>

console.log("leaving try-catch statement");<font></font>

<font></font>

<font></font>

2.8多重繼承

讓我們舉一個例子,看看如何用Java和JavaScript處理它。卡車是車輛和機器。

 

 

 

 

 

 

多重繼承

Java不支援多重繼承。每個類只能在一個類上擴充套件,但可以實現多個介面。示例程式碼顯示下面的  Truck 類實現介面  Machine 和  Vehicle介面

多重繼承的例子

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18歲

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

interface Machine<font></font>

{<font></font>

    <font></font>

    int distanceTravelled=100;<font></font>

    public int getDistance();<font></font>

}<font></font>

interface Vehicle<font></font>

{<font></font>

    int  velocity=50;<font></font>

    public int getVelocity();<font></font>

}<font></font>

public class Truck implements Machine, Vehicle<font></font>

{<font></font>

    int time;<font></font>

    int velocity;<font></font>

    int distanceTravelled;<font></font>

    <font></font>

    <font></font>

    public Truck(int velocity, int time)<font></font>

    {<font></font>

        this.velocity = velocity;<font></font>

        this.time = time;<font></font>

    }<font></font>

    <font></font>

    public int getDistance()<font></font>

    {<font></font>

        distanceTravelled= velocity*time; <font></font>

        System.out.println("Total Distance  is : "+distanceTravelled);<font></font>

        return distanceTravelled;<font></font>

    }<font></font>

    public int getVelocity()<font></font>

    {<font></font>

        int velocity=distanceTravelled/time;<font></font>

        System.out.println("Velocity  is : "+ velocity);<font></font>

        return velocity;<font></font>

    }<font></font>

    public static void main(String args[])<font></font>

    {<font></font>

        Truck truck = new Truck(50,2);<font></font>

        truck.getDistance();<font></font>

        truck.getVelocity();<font></font>

    }<font></font>

}<font></font>

<font></font>

JavaScript支援使用inheritsMultipleObjects函式的多重繼承。以下示例顯示了Truck如何分別從Vehicle和Machine繼承函式getDistance和getVelocity。

多重繼承-Javascript

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18歲

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

function inheritsMultipleObjects(baseObject, superObjects) {<font></font>

  return new Proxy(<font></font>

    baseObject,<font></font>

    {<font></font>

      get(target, key, rec) {<font></font>

        if (Reflect.ownKeys(target).includes(key)) {<font></font>

          return Reflect.get(target, key);<font></font>

        }<font></font>

        const parent = superObjects.find(<font></font>

          _parent => Reflect.has(_parent, key)<font></font>

        );<font></font>

        if (parent !== undefined) {<font></font>

          return Reflect.get(parent, key);<font></font>

        }<font></font>

        return undefined;<font></font>

      },<font></font>

      has(target, key) {<font></font>

        if (Reflect.ownKeys(target).includes(key)) {<font></font>

          return true;<font></font>

        }<font></font>

        const parentHasKey = superObjects.some(<font></font>

          _parent => Reflect.has(_parent, key)<font></font>

        );<font></font>

        if (parentHasKey) {<font></font>

          return true;<font></font>

        }<font></font>

        return false;<font></font>

      }<font></font>

    }<font></font>

  );<font></font>

}<font></font>

<font></font>

class Vehicle {<font></font>

  getDistance() {<font></font>

    return 100;<font></font>

  }<font></font>

}<font></font>

class Machine {<font></font>

  getVelocity() {<font></font>

    return 50;<font></font>

  }<font></font>

}<font></font>

class Truck {}<font></font>

const _truck = new Truck();<font></font>

const truck = inheritsMultipleObjects(<font></font>

  _truck,<font></font>

  [Truck.prototype,Vehicle.prototype, Machine.prototype]<font></font>

);<font></font>

console.log(truck.getDistance()); <font></font>

console.log(truck.getVelocity()); <font></font>

console.log(truck.constructor); <font></font>

2.9執行緒

Java具有內建的類來建立執行緒。要建立一個新執行緒,一個類必須擴充套件一個  Thread 類,並且必須重寫run方法。

執行緒示例

01

02

03

04

05

06

07

08

09

10

11

12

13

public class NewThread extends Thread<font></font>

{  <font></font>

  public void run()<font></font>

  {  <font></font>

    System.out.println("Thread running now");  <font></font>

  }<font></font>

  <font></font>

  public static void main(String args[])<font></font>

  {  <font></font>

    NewThread newThread =new NewThread();  <font></font>

    newThread.start();  <font></font>

  }  <font></font>

} <font></font>

Java提供了另一種建立執行緒的方法。Runnable 可以例項化實現的類,  並將其作為引數傳遞給  Thread 該類。下面提供了示例程式碼:

執行緒物件–可執行

01

02

03

04

05

06

07

08

09

10

11

12

13

14

public class ThreadObject implements Runnable<font></font>

{  <font></font>

  public void run()<font></font>

  {  <font></font>

    System.out.println("ThreadObject running");  <font></font>

  }  <font></font>

  <font></font>

public static void main(String args[])<font></font>

{  <font></font>

  ThreadObject threadObject =new ThreadObject();  <font></font>

  Thread thread =new Thread(threadObject);  <font></font>

  thread.start();  <font></font>

 }  <font></font>

}<font></font>

JavaScript具有基於事件的機制來處理併發。Node.js是一種單執行緒語言。它使用多個執行緒在後臺非同步執行程式碼。讓我們看一下下面程式碼中的派生執行緒示例:

分叉執行緒

01

02

03

04

05

06

07

08

09

10

11

12

13

14

const { fork } = require('child_process');<font></font>

var express = require('express');<font></font>

var app = express();<font></font>

app.get('/endpoint', (request, response) => {<font></font>

  <font></font>

   const process = fork('./mail.js');<font></font>

   const mail_messages = request.body.emails;<font></font>

<font></font>

   process.send({ mail_messages });<font></font>

   process.on('sendmail', (message) => {<font></font>

     log.info(` mail count  ${message.counter}`);<font></font>

   });<font></font>

   return response.json({ status: true, sent: true });<font></font>

});<font></font>

下面的程式碼顯示瞭如何sendMultiplemails非同步執行。

傳送郵件

01

02

03

04

05

06

07

08

09

10

11

async function sendMultipleMails(mails) {<font></font>

   let sendMails = 0;<font></font>

   // code for sending multiple mails<font></font>

   return sendMails;<font></font>

}<font></font>

<font></font>

process.on('sendmail', async (message) => {<font></font>

  const countOfMailsSent = await sendMultipleMails(message.mails); <font></font>

  <font></font>

  process.send({ counter: countOfMailsSent });<font></font>

});<font></font>

2.10便攜性

Java語言由計算機上的Java直譯器解釋,與作業系統無關。Java程式在Java虛擬機器上作為位元組程式碼執行。Java程式碼位於副檔名為.java的程式中

 

 

 

 

 

 

Java可移植性

HTML頁面中將JavaScript用於客戶端指令碼,該指令碼在瀏覽器上執行。基於Node.js的伺服器端指令碼由特定作業系統上的版本8(ECMAScript)JavaScript引擎執行。該程式碼寫在副檔名為.js的檔案中。

節點執行時

2.11型別

 

 

 

Java是一種靜態型別的語言。Java語言具有原始型別和物件型別。Java具有與自動裝箱相關的功能,該功能可自動轉換型別。的  java.lang.Object 類是所有的類的基類和Java如下命令的單根鏈條。

Java型別

JavaScript是一種動態型別的語言。在編譯期間,使用var關鍵字宣告變數。在檢查相等性或任何其他運算子時,將動態處理這些型別。

JavaScript型別

2.12庫

Java包有助於打包類。包範圍是Java語言的另一個功能。Java歸檔檔案有助於對類包進行分組,以用於執行和安裝。

 

 

 

 

Java檔案

JavaScript模組和軟體包由node.js和客戶端Web歸檔檔案中的JavaScript檔案組成。

JavaScript模組

2.13執行時錯誤

在Java中,執行時錯誤由編譯器和直譯器提供。

 

 

 

Java執行時錯誤

JavaScript是一種動態型別的語言,因此可以處理任何型別的資料。空指標異常不會在JavaScript中發生。使用執行時(node.js)或在瀏覽器中執行程式碼時,會發生執行時錯誤。

JavaScript執行時錯誤

2.14文件

Java具有支援註釋的功能,可用於文件生成器。JavaScript還支援可用於文件生成的註釋。

2.15移動與網路與桌面

Java語言可用於移動,Web和桌面應用程式開發。Android支援Java。JavaScript用於在Android,IOS和其他移動作業系統中構建HTML5(網路)和混合移動應用程式。

2.16程式設計範例

Java是一種面向物件的類和併發程式語言。Java當前支援版本8中的功能程式設計功能。JavaScript是一種多範例語言,支援面向物件,過程和功能範例。

3.結論

總體而言,Java比JavaScript具有很多優勢。下面的比較表捕獲了Java和JavaScript之間的差異。

比較表

特徵

java

JavaScript

記憶體管理

垃圾收集是Java中的一項功能。Java中沒有指標。Java程式消耗更多記憶體

JavaScript需要更少的記憶體。它在網頁中廣泛使用

遺產

介面可用於多重繼承。Java支援單繼承。

JavaScript使用InheritsMultipleObjects函式支援多重繼承

執行緒數

Java具有Thread類和Runnable介面以使用執行緒。

JavaScript(Node.js)是一種單執行緒語言,可派生一個執行緒以非同步執行多個執行緒。

可移植性

Java位元組碼取決於平臺。

JavaScript是與平臺無關的。執行時(節點執行時)取決於平臺。

訪問控制

封裝有助於對Java中的類變數和屬性進行訪問控制。

JavaScript具有物件屬性以提供對變數的訪問控制。

種類

Java中使用單個命令模式根鏈。

JavaScript是一種弱型別語言。

圖書館

Java歸檔檔案用於構建Java庫。

JavaScript(Node.js)具有模組和包。

執行時錯誤

在Java的編譯和執行階段檢測到執行時錯誤

在執行階段會檢測到JavaScript執行時錯誤。

效能

與JavaScript相比,Java效能要慢一些。

與Java相比,JavaScript效能更快,因為直譯器自己執行JavaScript程式碼。

總結

文章寫道這裡,歡迎補充評論!另外近期整理了一套完整的java架構思維導圖心得,分享給大家對照所屬知識點參照學習。

相關推薦

JavaJavaScript之間區別

1.簡介 通過優銳課核心java學習筆記中,我們可以看到,Java和JavaScript之間的區別.我們將在本文中比較Java語言和JavaScript語言。JavaScript由Netscape開發。它最初是用於客戶端的指令碼語言,後來又用作客戶端和伺服器指令碼的語言。Java由James Gosling由

javaJavaScript區別

str 腳本 優先級 註解 中一 客戶 lse double 字符串 java是SUN公司推出的面向對象的程序設計語言 javaScript是Netscape公司推出可嵌入Wed頁面中的基於對象和事件驅動的解釋性語言(腳本語言)java主要在服務端運行javascr

javaJavaScript區別 javaJavaScript區別

java和JavaScript的區別   java是SUN公司推出的面向物件的程式設計語言 javaScript是Netscape公司推出可嵌入Wed頁面中的基於物件和事件驅動的解釋性語言(指令碼語言)java主要在服務端執行javascript主要執行在客戶端瀏覽器中

Typescript Javascript之間區別

驅動 操作系統 其它 class 引入 兼容 開發項目 nbsp div TypeScript 和 JavaScript 是目前項目開發中較為流行的兩種腳本語言,我們已經熟知 TypeScript 是 JavaScript 的一個超集,但是 TypeScript 與 Jav

JavaScript、JSP、Java及javaEE之間區別

       JavaScript語言雖然名稱中包含java,但其實與Java沒有什麼本質的聯絡,當初取這個名字也只是為了吸引更多眼球。JavaScript是一種動態、弱型別、基於原型的語言,結構較為自由鬆散;而Java是面向物件的程式語言,必須先進行編繹和連線等動作才可執行,結構較為嚴謹。在javaScri

Java集合面試題(02) Java中ListSet之間區別

本文為本博主翻譯,未經允許,嚴禁轉載! 簡介 Java中List和Set之間有什麼區別是一個非常流行的Java集合面試問題,也是在Java中使用Collection類時要記住的一個重要的基本概念。 List和Set都是Java程式最重要的Collection類中的兩個,以及

java數組之間區別

java數組之間區別(可以插入重復數據)非線程安全的1、List(接口)------> ArratList無容量的限制, LinkedList雙向鏈表,必須創建一個新的Entry對象,方便刪除數據不能重復插入數據2

一、JavaJavaScript

提交 ava body 表單驗證 live 是我 能夠 一點 scrip JavaScript誕生於1995年,所以他得叫我一聲姐姐,(*^__^*) 。當時它的主要任務就是表單驗證,在還沒JavaScript的時候,進行表單驗證的時候必須要把數據提交到服務器,

JavaC++的區別

必須 java 增強 然而 開發 idt pac 結合 面向對象的語言 1.指針 JAVA語言讓編程者無法找到指針來直接訪問內存,並且增添了自動的內存管理功能,從而有效地防止了c/c++語言中指針操作失誤,如野指針所造成的系統崩潰。但也不是說JAVA沒有指針,虛擬機內部還是

你真的會用ABAP, JavaJavaScript裏的constructor麽?

Java JavaScript 構造函數 ABAP Constructor 如果constructor裏調用了一個成員方法,這個方法被子類override了,當初始化一個子類實例時,父類的構造函數被的調用,此時父類構造函數的上下文裏調用的成員方法,是父類的實現還是子類的實現?你能不用運行代

編程語言對比分析:Python與JavaJavaScript(圖)

最大 python 服務 dev 破壞 fff 對比分析 可能 分析 編程語言對比分析:Python與Java和JavaScript(圖):憑什麽說“Python 太慢,Java 太笨拙,我討厭 JavaScript”?[圖]編程語言生而為何?我們人類從原始社會就是用語言表

javamysql之間的時間日期類型傳遞

兩個 其他 方案 entity 最優解 都是 nan set mat mysql(版本:5.1.50)的時間日期類型如下: datetime 8bytes xxxx-xx-xx xx:xx:xx 1000-01-01 00:00:00到9999-12-31 23:59:59

使用JNI在JAVAC++之間進行互動操作

原文連結地址: https://library.vuforia.com/articles/Solution/How-To-Communicate-Between-Java-and-C-using-the-JNI 本文旨在描述如何使用JNI(Java Native Interface)實現JA

關於javajavascript互動中的日期處理問題彙總

javascript部分 分兩種情況: —-後臺接收long型 ——–js處理 (new Date()).getTime()//Date轉long,預設new Date()可以把當前日期時間精確到秒 輸出結果:1455862677881//即2016/2/19 14:17:5

TypeScriptJavaScript區別

經過一段時間TypeScript專案的開發,總結出TS和JS的不同點: 1:TS可以使用JS的所有程式碼和概念,TS使用型別和介面描述資料; 2:TS引入模組的概念,可以對資料,宣告,類進行封裝; 3:TS中引入了類的概念; 4:TS為函式提供預設引數值; 5:TS中的資料要求帶

使用json-lib進行JavaJSON之間的轉換

lar 泛型 and bean etc log dynamo fir 地址 1. json-lib是一個java類庫,提供將Java對象,包括beans, maps, collections, java arrays and XML等轉換成JSON,或者反向轉換

pt,px,remem之間區別總結

  pt與px   在html設計字型的css樣式中,有些字型設定成14pt,而不是14px,那pt是什麼,和px又有什麼關係呢?   pt(point)是印刷行業常用的單位,等於1/72英寸,表示絕

看過這兩張圖,就明白 Buffer Cache 之間區別

【伯樂線上轉註】:本文源自「沈萬馬」對《Cache 和 Buffer 都是快取,主要區別是什麼?》的回答分享,伯樂線上已獲轉載授權。 Buffer常見的是這個: 對,就是鐵道端頭那個巨大的彈簧一類的東西。作用是萬一車沒停住,撞彈簧上減速慢,危險小一些。叫緩衝。 C

javajavascript語法區別

java與javascript語法 字元 java中單引號只能表示單個字元且不能為空 'a' √ '' × 'aa' × 變數 java中變數有明確的型別(byte1,short2

javapython之間資料互動,不同語言間傳輸資料:使用RabbitMQ

java和python之間資料互動,不同語言間傳輸資料:使用RabbitMQ 問題描述 方法 方法一:java直接執行python指令碼.py檔案,把資料放到引數裡傳遞 方法二:通過第三方檔案作為中間站 方法三:使用訊息佇列的方式,