V8 (JavaScript engine)
Encyclopedia
The Google V8 JavaScript Engine is an open source
JavaScript engine
developed by Google
and ships with the Google Chrome
web browser. Lars Bak
is the head programmer.
V8 increases performance by compiling JavaScript
to native machine code
before executing it, rather than to execute bytecode
or interpreting
it. Further performance increases are achieved by employing optimization techniques such as inline caching
. With these features, JavaScript applications running within V8 are said to have an effective speed comparable to a compiled binary.
of V8 is a generational stop-the-world collector.
The V8 assembler
is based on the Strongtalk
assembler.
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
JavaScript engine
JavaScript engine
A JavaScript engine is specialized computer software which interprets and executes JavaScript . Although there are several uses for a JavaScript engine, it is most commonly used in web browsers.-History:...
developed by Google
Google
Google Inc. is an American multinational public corporation invested in Internet search, cloud computing, and advertising technologies. Google hosts and develops a number of Internet-based services and products, and generates profit primarily from advertising through its AdWords program...
and ships with the Google Chrome
Google Chrome
Google Chrome is a web browser developed by Google that uses the WebKit layout engine. It was first released as a beta version for Microsoft Windows on September 2, 2008, and the public stable release was on December 11, 2008. The name is derived from the graphical user interface frame, or...
web browser. Lars Bak
Lars Bak (computer programmer)
Lars Bak is a Danish computer programmer who currently works for Google where he has contributed to the Chrome browser by developing the V8 JavaScript engine...
is the head programmer.
V8 increases performance by compiling JavaScript
JavaScript
JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....
to native machine code
Machine code
Machine code or machine language is a system of impartible instructions executed directly by a computer's central processing unit. Each instruction performs a very specific task, typically either an operation on a unit of data Machine code or machine language is a system of impartible instructions...
before executing it, rather than to execute bytecode
Bytecode
Bytecode, also known as p-code , is a term which has been used to denote various forms of instruction sets designed for efficient execution by a software interpreter as well as being suitable for further compilation into machine code...
or interpreting
Interpreter (computing)
In computer science, an interpreter normally means a computer program that executes, i.e. performs, instructions written in a programming language...
it. Further performance increases are achieved by employing optimization techniques such as inline caching
Inline caching
Inline caching is an optimization technique employed by some language runtimes, and first developed for Smalltalk.The goal of inline caching is to speed up runtime method binding by remembering the results of a previous method lookup directly at the call site...
. With these features, JavaScript applications running within V8 are said to have an effective speed comparable to a compiled binary.
Details
The garbage collectorGarbage collection (computer science)
In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program...
of V8 is a generational stop-the-world collector.
The V8 assembler
Assembler
Assembler may refer to:* Assembler , for an assembly language, a computer program to translate between lower-level representations of computer programs...
is based on the Strongtalk
Strongtalk
Strongtalk is a Smalltalk environment with optional static typing support. Strongtalk can make some compile time checks, and offer "stronger" type-safety guarantees; this is the source of its name...
assembler.
Crankshaft
On 7th December 2010, a new compilation infrastructure called Crankshaft was introduced, with speed improvements.See also
- Google ChromeGoogle ChromeGoogle Chrome is a web browser developed by Google that uses the WebKit layout engine. It was first released as a beta version for Microsoft Windows on September 2, 2008, and the public stable release was on December 11, 2008. The name is derived from the graphical user interface frame, or...
- Chromium (web browser)Chromium (web browser)Chromium is the open source web browser project from which Google Chrome draws its source code. The project's hourly Chromium snapshots appear essentially similar to the latest builds of Google Chrome aside from the omission of certain Google additions, most noticeable among them: Google's...
- Node.jsNode.jsNode.js is a software system designed for writing highly-scalable internet applications, notably web servers.Programs are written in JavaScript, using event-driven, asynchronous I/O to minimize overhead and maximize scalability....
- JavaScriptCore
- SpiderMonkey
- Dart (programming language)Dart (programming language)Dart is a Web programming language developed by Google. It was unveiled at the in Aarhus, 2011 October 10-12. The goal of Dart is "ultimately to replace JavaScript as the lingua franca of web development on the open web platform."- Reason for a new language :Dart is intended to solve JavaScript's...
External links
- Google Code project page
- cproxyv8 and v8-juice are C++C++C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
libraries for extending V8, e.g. to assist in binding client-side C++C++C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
classes to JavaScriptJavaScriptJavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....
. - v8cgi is a V8-based frameworkSoftware frameworkIn computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...
for serving web application written in JavaScriptJavaScriptJavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....
. - Node.jsNode.jsNode.js is a software system designed for writing highly-scalable internet applications, notably web servers.Programs are written in JavaScript, using event-driven, asynchronous I/O to minimize overhead and maximize scalability....
is another V8-based frameworkSoftware frameworkIn computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...
for writing event-driven servers in JavaScriptJavaScriptJavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....
. - pyv8 Python Wrapper for Google V8 Javascript Engine
- jav8 An implementation of the Java Scripting API (JSR223) base on the Google V8 Javascript engine.
- nasiu-scripting Scripting framework for derive C++ classes in V8 Javascript
- Php V8js Php V8 Javascript Engine Integration