- chromium.googlesource.com/v8/v8
编程语言 | C++ |
---|
操作系统 | Microsoft Windows、Mac OS X、Linux、FreeBSD、Android、webOS |
---|
类型 | JavaScript引擎 |
---|
许可协议 | BSD許可證 |
---|
网站 | v8.dev/ |
V8是一個由Google開發的開源JavaScript引擎,用於Google Chrome及Chromium中[3],項目以V8发动机其命名[4]。此項目由Lars Bak主導開發[5]。
運作方式
V8在執行之前將JavaScript編譯成了機器碼,而非位元組碼或是解释执行它,以此提升效能。更進一步,使用了如內聯緩存(inline caching)等方法來提高性能。有了這些功能,JavaScript程序與V8引擎的速度媲美二進制編譯。[6]
传统的Javascript是动态语言,又可稱之為Prototype-based Language,JavaScript繼承方法是使用prototype,透過指定prototype屬性,便可以指定要繼承的目標。属性可以在运行时添加到或从对象中删除,引擎會为執行中的物件建立一個属性字典,新的属性都要透過字典查找属性在内存中的位置。V8為object新增属性的时候,就以上次的hidden class为父类別,创建新属性的hidden class的子类別,如此一來属性访问不再需要动态字典查找了。
為了缩短由垃圾回收造成的停顿,V8使用stop-the-world, generational, accurate的垃圾回收器[7]。在执行回收之时会暫時中断程序的执行,而且只处理物件堆疊。還會收集內存內所有物件的指標,可以避免内存溢位的情况。V8組譯器是基於Strongtalk組譯器[8]。
程序执行(英语:Execution (computing)) |
---|
基础概念 |
---|
|
代码类型 |
---|
|
编译策略 |
---|
- 即時編譯(JIT)
- 跟踪即时编译(英语:Tracing just-in-time compilation)
- 提前编译(英语:Ahead-of-time compilation)(AOT)
- 源代码至源代码编译器
- 动态重编译
|
知名运行环境 |
---|
|
著名编译器及工具链 |
---|
|
|
参考文献
- ^ 1.0 1.1 Chrome Platform Status. [2023年6月29日].
- ^ 2.0 2.1 Discontinuing release blog posts. 2022年6月17日 [2023年6月19日].
- ^ Philipp Lenssen. Google on Google Chrome - comic book. Google Blogoscoped. 2008-09-01 [2008-09-01]. (原始内容存档于2015-06-18).
- ^ Bynens, Mathias. Celebrating 10 years of V8. September 11, 2018 [2019-05-21]. (原始内容存档于2022-05-06).
- ^ Minto, Rob. The genius behind Google's web browser. Financial Times. 27 March 2009 [1 June 2021]. (原始内容存档于1 December 2011).
- ^ Seeley, Rich; Jack Vaughan. Google Chrome shifts architects' equations as V8 powers the browser. SOA News. 5 September 2008 [2008-09-07]. (原始内容存档于2010-04-27).
- ^ V8 JavaScript Engine: Introduction. Google Code. Google. [17 August 2010]. (原始内容存档于2010年6月6日).
- ^ v8 Licenses. [2010-03-17]. (原始内容存档于2015-11-27).
外部連結
- Google Code project page (页面存档备份,存于互联网档案馆)
- cproxyv8 (页面存档备份,存于互联网档案馆)及v8-juice (页面存档备份,存于互联网档案馆) are C++ libraries for extending v8, e.g. to assist in binding client-side C++ classes to JavaScript.
- v8cgi (页面存档备份,存于互联网档案馆) is a v8-based framework for serving web application written in JavaScript.
- node.js(页面存档备份,存于互联网档案馆)[1](页面存档备份,存于互联网档案馆) is a toolkit for writing performant non-blocking event-driven network servers in JavaScript.
- Inside V8 - A Javascript Virtual Machine (页面存档备份,存于互联网档案馆)
參見
|
---|
| | | 部門 | | |
---|
| 广告 | |
---|
| 通讯 | |
---|
| 硬件 | |
---|
| 软件 | |
---|
| 平台 | |
---|
| 开发工具 | |
---|
| 出版 | |
---|
| 搜索 | |
---|
| 停止开发 | |
---|
| 人物 | |
---|
| 其它 | |
---|
| 相关 | |
---|
| |
|
|
---|
语言 | |
---|
引擎列表 (引擎比较) | |
---|
框架 | 客户端 | - Ample SDK(英语:Ample SDK)
- Chaplin.js(英语:Chaplin.js)
- Dojo
- Echo
- Extjs
- Google網頁工具包
- JQuery
- Lively Kernel(英语:Lively Kernel)
- midori(英语:Midori JavaScript Framework)
- MochiKit(英语:MochiKit)
- MooTools(英语:MooTools)
- Prototype
- Pyjs(英语:Pyjs)
- qooxdoo(英语:qooxdoo)
- Rialto(英语:Rialto Toolkit)
- Rico
- script.aculo.us(英语:script.aculo.us)
- SmartClient(英语:SmartClient)
- SproutCore(英语:SproutCore)
- Spry(英语:Spry framework)
- Wakanda框架(英语:Wakanda (software))
- 雅虎UI库
|
---|
服务器 | - AppJet(英语:AppJet)
- Jaxer(英语:Jaxer#Aptana Jaxer)
- Node.js
- Deno
- WakandaDB(英语:Wakanda (software))
|
---|
多種實作 | - Cappuccino(英语:Cappuccino (application development framework))
- Objective-J(英语:Objective-J)
- PureMVC(英语:PureMVC)
|
---|
函式庫 | |
---|
|
---|
人物 | |
---|
其他 | - DHTML
- Ecma国际
- JSDoc(英语:JSDoc)
- JSGI(英语:JSGI)
- JSHint
- JSLint
- JSON
- JSSS(英语:JavaScript Style Sheets)
- Sputnik(英语:Sputnik (JavaScript conformance test))
- SunSpider(英语:Browser speed test#SunSpider)
- 异步模块定义(英语:Asynchronous module definition)
- CommonJS
|
---|
- 列表
- JavaScript库列表
- Ajax框架(英语:list of Ajax frameworks#JavaScript)
- 比较
- JavaScript框架(英语:Comparison of JavaScript frameworks)
- 服务器端JavaScript(英语:comparison of server-side JavaScript solutions)
|
|
|
---|
软件 | | |
---|
框架 | - MEAN
- MEEN
- Backbone.js
- Meteor (Web應用框架)(英语:Meteor (web framework))
- Sails.js(英语:Sails.js)
|
---|
库 | |
---|
编程语言 | |
---|
云平台 | |
---|
|