javascript
Java和JavaScript之间的区别
1.簡介
我們將在本文中比較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環境所需的設置命令。
設定
JAVA_HOME="/desktop/jdk1.8.0_73" export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH2.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中執行。 輸出“問候”顯示在下面的屏幕截圖中。
你好js2.6內存管理
Java語言具有與內存管理相關的功能,并且是一種內存安全的語言。 垃圾收集是一項有助于收集免費和已釋放資源的功能。 Java開發人員不能超出分配的內存。 在Java中,當內存消耗超出分配范圍時,它將引發錯誤。 與Java相比,JavaScript需要更少的內存。 它廣泛用于網頁中的客戶端腳本編寫。
2.7異常處理
在Java中,可以通過使用try,catch和finally塊來進行異常處理。
Java異常處理
public class ExceptionExample{ public static void main(String args[]) throws Exception{ try{ int result=36/0; System.out.println(" the result is "+result); } catch(ArithmeticException exception){System.out.println(exception);throw new Exception("division by zero"); } finally{System.out.println("finally block is executed at the end");} System.out.println("code below is used for next steps"); } }JavaScript具有try,catch,throw和finally塊來處理異常處理。
Javascript異常處理
console.log("entering try-catch statement");try {console.log("entering try block");throw "thrown message";console.log("this message is never seen"); } catch (e) {console.log("entering catch block");console.log(e);console.log("leaving catch block"); } finally {console.log("entering and leaving the finally block"); }console.log("leaving try-catch statement");2.8多重繼承
讓我們舉一個例子,看看如何用Java和JavaScript處理它。 卡車是車輛和機器。
多重繼承Java不支持多重繼承。 每個類只能在一個類上擴展,但可以實現多個接口。 下面的示例代碼顯示了Truck類的實現接口Machine and Vehicle Interfaces
多重繼承的例子
interface Machine {int distanceTravelled=100;public int getDistance(); } interface Vehicle {int velocity=50;public int getVelocity(); } public class Truck implements Machine, Vehicle {int time;int velocity;int distanceTravelled;public Truck(int velocity, int time){this.velocity = velocity;this.time = time;}public int getDistance(){distanceTravelled= velocity*time; System.out.println("Total Distance is : "+distanceTravelled);return distanceTravelled;}public int getVelocity(){int velocity=distanceTravelled/time;System.out.println("Velocity is : "+ velocity);return velocity;}public static void main(String args[]){Truck truck = new Truck(50,2);truck.getDistance();truck.getVelocity();} }JavaScript通過使用inheritsMultipleObjects函數支持多重繼承。 以下示例顯示了Truck如何分別從Vehicle和Machine繼承函數getDistance和getVelocity。
多重繼承-Javascript
function inheritsMultipleObjects(baseObject, superObjects) {return new Proxy(baseObject,{get(target, key, rec) {if (Reflect.ownKeys(target).includes(key)) {return Reflect.get(target, key);}const parent = superObjects.find(_parent => Reflect.has(_parent, key));if (parent !== undefined) {return Reflect.get(parent, key);}return undefined;},has(target, key) {if (Reflect.ownKeys(target).includes(key)) {return true;}const parentHasKey = superObjects.some(_parent => Reflect.has(_parent, key));if (parentHasKey) {return true;}return false;}}); }class Vehicle {getDistance() {return 100;} } class Machine {getVelocity() {return 50;} } class Truck {} const _truck = new Truck(); const truck = inheritsMultipleObjects(_truck,[Truck.prototype,Vehicle.prototype, Machine.prototype] ); console.log(truck.getDistance()); console.log(truck.getVelocity()); console.log(truck.constructor);2.9線程
Java具有內置的類來創建線程。 要創建一個新線程,一個類必須擴展一個Thread類,并且必須重寫run方法。
線程示例
public class NewThread extends Thread { public void run(){ System.out.println("Thread running now"); }public static void main(String args[]){ NewThread newThread =new NewThread(); newThread.start(); } }Java提供了另一種創建線程的方法。 可以實例化實現Runnable的類,并將其作為參數傳遞給Thread類。 下面提供了示例代碼:
線程對象–可運行
public class ThreadObject implements Runnable { public void run(){ System.out.println("ThreadObject running"); } public static void main(String args[]) { ThreadObject threadObject =new ThreadObject(); Thread thread =new Thread(threadObject); thread.start(); } }JavaScript具有基于事件的機制來處理并發。 Node.js是一種單線程語言。 它使用多個線程在后臺異步執行代碼。 讓我們看一下下面代碼中的派生線程示例:
分叉線程
const { fork } = require('child_process'); var express = require('express'); var app = express(); app.get('/endpoint', (request, response) => {const process = fork('./mail.js');const mail_messages = request.body.emails;process.send({ mail_messages });process.on('sendmail', (message) => {log.info(` mail count ${message.counter}`);});return response.json({ status: true, sent: true }); });下面的代碼顯示sendMultiplemails如何異步執行。
發送郵件
async function sendMultipleMails(mails) {let sendMails = 0;// code for sending multiple mailsreturn sendMails; }process.on('sendmail', async (message) => {const countOfMailsSent = await sendMultipleMails(message.mails); process.send({ counter: countOfMailsSent }); });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代碼。 |
4.下載源代碼
下載您可以在此處下載此示例的完整源代碼: Java和JavaScript之間的區別
翻譯自: https://www.javacodegeeks.com/difference-between-java-and-javascript.html
總結
以上是生活随笔為你收集整理的Java和JavaScript之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工资薪金备案管理办法(工资薪金备案)
- 下一篇: 硒4 Alpha –期望什么?