Voice of a Developer: Javascript Engines - Part Three


JavaScript is a language of the Web. This series of articles will talk about my observations learned during my decade of software development experience with JavaScript, and what mistakes developers generally make and what differences they should be aware of. 
Part Three will focus in detail on JavaScript Engines. Before moving further let us look at the previous articles of the series:
Let’s start with Q&A

Q: What is the difference between interpreted v/s compiled languages?

Compiled: In a compiled language, a compiler will translate the program directly into code that is specific to the target machine, which we call machine code. Then the computer will run the machine code on its own.
Interpreted: In an interpreted language the code is not directly run by the machine; there is another program that reads and then executes the code. This other program is known as the interpreter.

Q: Is Javascript an interpreted language or compiled language?

Historically it was designed as an interpreted language.
Javascript differs from traditional C, C++ languages. Javascript is JIT (Just-in-time) compiler. The reason behind this approach is for huge speed gains that modern Javascript engines provide.

Q: Which category of language Javascript belongs to?

JavaScript is considered as a high-level language. It’s readable by humans easily.

Q: What is a JavaScript engine?

It’s a program or library, which executes JavaScript code.

Evolution of JavaScript engines

The 1st JavaScript engine was created by Brendan Eich in the late 1990s for Netscape. It was named SpiderMonkey and was written in C++.
Since after then there were many engines launched. Here is the list of popular ones:
JavaScript Engine
IE & Edge
PhantomJS (headless browser)
JavaScript Core

Q: Which Javascript engine scores high?

You can compare how various engines perform in benchmarking produced on http://arewefastyet.com/

Q: How Javascript engine works?

Here is the process,
The parser takes Javascript and generates a Abstract Syntax Tree (AST).
AST: It’s just a syntax tree, and a tree representation of source code,
After AST is generated, there are two choices depending upon Javascript engine to generate bytecode
For ex- Google V8 & Chakra generates Native code and both are really fast engines to run JavaScript. 
Read more articles on JavaScript