Engine JavaScript

SpiderMonkey logo

Engine JavaScript là một thành phần phần mềm thực thi mã JavaScript. Các JavaScript engine đầu tiên chỉ là trình thông dịch, nhưng tất cả các engine hiện đại đều sử dụng biên dịch tức thời để cải thiện hiệu suất.[1]

Các JavaScript engine thường được phát triển bởi các nhà cung cấp trình duyệt web và mọi trình duyệt chính đều có một cái. Trong trình duyệt, JavaScript engine chạy cùng với công cụ hiển thị thông qua Document Object Model.

Việc sử dụng các JavaScript engine không giới hạn ở các trình duyệt. Ví dụ: Engine V8 là thành phần cốt lõi của hệ thống runtime Node.js và Deno.

Vì ECMAScript là thông số kỹ thuật tiêu chuẩn của JavaScript, nên engine ECMAScript là tên gọi khác của các engine này. Với sự ra đời của WebAssembly, một số engine cũng có thể thực thi mã này trong cùng sandbox như mã JavaScript thông thường.

Lịch sử

JavaScript engine đầu tiên được tạo bởi Brendan Eich vào năm 1995 cho trình duyệt web Netscape Navigator. Đó là một trình thông dịch thô sơ cho ngôn ngữ non trẻ mà Eich đã phát minh ra. (Engine này đã phát triển thành engine SpiderMonkey, vẫn được trình duyệt Firefox sử dụng.)

JavaScript engine hiện đại đầu tiên là V8, do Google tạo cho trình duyệt Chrome của mình. V8 ra mắt như một phần của Chrome vào năm 2008 và hiệu suất của nó tốt hơn nhiều so với bất kỳ engine nào trước đó.[2][3] Sự đổi mới quan trọng là biên dịch đúng lúc, có thể cải thiện đáng kể thời gian thực hiện.

Các nhà cung cấp trình duyệt khác cần đại tu trình thông dịch của họ để cạnh tranh.[4] Các nhà cung cấp trình duyệt khác cần đại tu trình thông dịch của họ để cạnh tranh.[5] Mozilla đã tận dụng một phần của Nitro để cải thiện engine SpiderMonkey của riêng mình.

Kể từ năm 2017, các engine này đã thêm hỗ trợ cho WebAssembly. Điều này cho phép sử dụng các tệp thực thi được biên dịch sẵn cho các phần quan trọng về hiệu suất của tập lệnh trang.

Các engine đáng chú ý

  • V8 của Google là engine JavaScript được sử dụng nhiều nhất. Google Chrome và nhiều trình duyệt dựa trên Chromium khác sử dụng nó, cũng như các ứng dụng được xây dựng bằng CEF, Electron hoặc bất kỳ framework nào khác nhúng Chromium. Các engine khác sử dụng nó bao gồm các hệ thống runtime Node.js và Deno.
  • SpiderMonkey được phát triển bởi Mozilla để sử dụng trong Firefox và các nhánh của nó. GNOME Shell sử dụng nó để hỗ trợ tiện ích mở rộng.
  • JavaScriptCore là engine của Apple dành cho trình duyệt Safari. Các trình duyệt dựa trên WebKit khác cũng sử dụng nó. KJS từ KDE là điểm khởi đầu cho sự phát triển của nó.[6]
  • Chakra là engine của trình duyệt Internet Explorer. Nó cũng được Microsoft chia ra cho trình duyệt Edge ban đầu, nhưng Edge sau đó đã được xây dựng lại thành trình duyệt dựa trên Chromium và do đó hiện sử dụng V8.[7][8]

Tham khảo

  1. ^ Looper, Jen (21 tháng 9 năm 2015). “A Guide to JavaScript Engines for Idiots”. Telerik Developer Network. Lưu trữ bản gốc ngày 8 tháng 12 năm 2018.
  2. ^ “Big browser comparison test: Internet Explorer vs. Firefox, Opera, Safari and Chrome”. PC Games Hardware. Computec Media AG. Bản gốc lưu trữ ngày 2 tháng 5 năm 2012. Truy cập ngày 28 tháng 6 năm 2010.
  3. ^ “Lifehacker Speed Tests: Safari 4, Chrome 2”. Lifehacker. Bản gốc lưu trữ ngày 14 tháng 2 năm 2021. Truy cập ngày 28 tháng 6 năm 2010.
  4. ^ “Mozilla asks, 'Are we fast yet?'”. Wired. Truy cập ngày 18 tháng 1 năm 2019.
  5. ^ Safari 5 Released
  6. ^ Stachowiak, Maciej (9 tháng 11 năm 2008). “Companies and Organizations that have contributed to WebKit”. WebKit Wiki. Truy cập ngày 13 tháng 4 năm 2019.
  7. ^ Belfiore, Joe (15 tháng 1 năm 2020), New year, new browser – The new Microsoft Edge is out of preview and now available for download, Microsoft
  8. ^ “Microsoft Edge and Chromium Open Source: Our Intent”. Microsoft Edge Team. 6 tháng 12 năm 2018. Truy cập ngày 8 tháng 12 năm 2018.
  • x
  • t
  • s
Phương ngữ
Engines
(So sánh)
  • Carakan
  • Futhark
  • InScript
  • JavaScriptCore
  • JScript
  • KJS
  • Linear B
  • QtScript
  • Rhino
  • SpiderMonkey
    • TraceMonkey
    • JägerMonkey
  • Tamarin
  • V8
  • ChakraCore
    • Chakra
  • JScript .NET
  • Nashorn
Frameworks
Phía máy khách
  • Chaplin.js
  • Dojo
  • Echo
  • Ext JS
  • Google Web Toolkit
  • jQuery
  • Lively Kernel
  • midori
  • MochiKit
  • MooTools
  • Prototype
  • Pyjs
  • qooxdoo
  • SproutCore
  • Spry
  • Wakanda Framework
Phía máy chủ
  • AppJet
  • Deno
  • Jaxer
  • Node.js
  • WakandaDB
Multiple
  • Cappuccino
  • PureMVC
Thư viện
  • Backbone.js
  • SWFObject
  • Underscore.js
Nhân vật
Khác
  • DHTML
  • Ecma International
  • JSDoc
  • JSGI
  • JSHint
  • JSLint
  • JSON
  • JSSS
  • Sputnik
  • SunSpider
  • Asynchronous module definition
  • CommonJS
Danh sách Danh sách
Thư viện JavaScript
Ajax frameworks
Danh sách Comparisons
JavaScript frameworks
server-side JavaScript
  • x
  • t
  • s
Phân tích mã
  • ESLint
  • JSHint
  • JSLint
Ngôn ngữ con
Bộ dịch mã
  • AtScript
  • Babel
  • ClojureScript
  • CoffeeScript
  • Dart
  • Elm
  • Emscripten
  • Google Closure Compiler
  • Google Web Toolkit
  • Haxe
  • LiveScript
  • Morfik
  • Nim
  • Opa
  • PureScript
  • Reason
  • WebSharper
Khái niệm
  • Thư viện JavaScript
  • Cú pháp JavaScript
Trình gỡ lỗi
Trình tạo tài liệu
  • JSDoc
Trình chỉnh sửa (so sánh)
Engine
  • Danh sách các ECMAScript engine
Framework
  • So sánh các framework JavaScript
  • Danh sách thư viện JavaScript
Công nghệ liên quan
Trình quản lý gói
  • npm
  • yarn
Bộ đóng gói mô-đun
  • Webpack
  • Vite
Phía máy chủ
Kiểm tra đơn vị khung (list)
  • Jasmine
  • Jest
  • Mocha
  • QUnit
Nhân vật