JavaScript: An extensive research

This is Atanu's home page for his extensive research in JavaScript. Atanu took JavaScript as his language of choice in the CS 550 (Design and Translation of Programming Languages) course of Fall 2009. This web site is not inteneded to serve as a Tutorial for JavaScript, since there are very good tutorials for JavaScript all over the internet. If you intend to learn JavaScript, Atanu has tried to document the good tutorials for JavaScript here.

This overview intend to look at the history, usage and principal competitors of JavaScript. Moreover in this section, an interview with Brenden Eich (JS founder, CTO Mozilla corp) is presented which will throw light on a lot of technical aspects of JavaScript.

The Formal Definition seeks to find out what the formal definitions of JavaScript states and it is for those who are interested in finding out what really goes beneath JavaScript. So, if someone is really interested to kow how the JS parser works, how the language is formally specified, in short the EBNF, then this may be what you are looking for.

In the examples section, a few small examples of JavaScript are placed and links to JavaScript examples are provided. Moreover, examples regarding creation of namespaces and modules are provided. Definition of modules and namespaces will also be provided in the examples section. The use of FlowPlayer & GWT will be shown over here too. But most importantly, the concept of "DOM" and its use in JS will be discussed.

In the processing section, a overview of the language processing will be provided, Moreover a few sample code for a JS tokenizer, and the parser is there in the same page. Moreover, it will be shown how the important(according to the author) classes of the JS engine interacts with each other for the interpretation of the source code to the native code. For the whole discussion we will be using Netscape's (Mozilla's) Rhino, which is a Java based JavaScript engine.

The "In Processors" section is a very intriguing section in this research. Since, JavaScript is basically a client-side scripting language, which is used mainly in browsers, this section aims to enlighten readers regarding how the JS engine is called when the browser (HTML parser) encounters a <script> tag in the HTML. The browser chosen specifically, for this discussion is firefox 3.0 and the JS engine chosen for the discussion is SpiderMonkey, which happened to be Mozilla's first JS Engine written by Brendan Eich in C.

In the Misc section, we would compare and contrast between different JS engines of the standard browsers. Moreover we would provide a brief discussion about TraceMonkey, which uses Trace Trees (a concept developed by 2 researchers at UCI) to implement JIT in JavaScript.

Best viewed in Google Chrome 3.0 at 1280 x 1024