History and Development of JavaScript
– Mosaic, the first popular web browser with a graphical user interface, was released in 1993.
– The Netscape corporation was founded by the lead developers of Mosaic, and they released Netscape Navigator in 1994.
– Web pages in the early years were static and lacked dynamic behavior.
– Netscape decided to add a scripting language to Navigator in 1995, leading to the creation of JavaScript.
– The name ‘JavaScript’ was chosen as a marketing ploy during the dot-com boom.
– Netscape collaborated with Sun Microsystems to embed the Java programming language, but also hired Brendan Eich to embed the Scheme language.
– Netscape management decided that Eich should create a new language with syntax similar to Java.
– The language and its interpreter were initially called LiveScript but were renamed JavaScript for the official release.
– The choice of the JavaScript name caused confusion, as it implied a direct relation to Java.
– JavaScript was officially released in December 1995.
– Microsoft created its own JavaScript interpreter called JScript by reverse-engineering the Navigator interpreter.
– JavaScript was released in 1996 alongside initial support for CSS and extensions to HTML.
– Differences between the JavaScript implementations in Navigator and Internet Explorer led to compatibility issues for developers.
– Best viewed in Netscape and best viewed in Internet Explorer logos were commonly used during this time.
– Microsoft’s dominance in the browser market made JScript the de facto standard for client-side scripting.
– Netscape submitted JavaScript to Ecma International in 1996, leading to the release of the first ECMAScript language specification in 1997.
– ECMAScript 2 was released in 1998, followed by ECMAScript 3 in 1999.
– Microsoft’s Internet Explorer reached a market share of 95%, solidifying JScript’s position as the dominant client-side scripting language.
– Microsoft stopped collaborating on Ecma work, leading to the mothballing of ECMAScript 4.
– Firefox’s release in 2004 started to change the stagnant client-side scripting landscape.
– Mozilla joined ECMA International in 2005, and work began on the ECMAScript for XML (E4X) standard.
– Collaboration between Mozilla and Macromedia aimed to standardize ActionScript 3 as the new ECMAScript 4, but without cooperation from Microsoft, it didn’t materialize.
– Open-source communities spearheaded a renaissance period for JavaScript, resulting in the creation of libraries like jQuery, Prototype, Dojo Toolkit, and MooTools.
– Google’s Chrome browser, released in 2008, introduced the V8 JavaScript engine with just-in-time compilation (JIT).
– The ECMAScript 5 standard was released in 2009, combining the efforts of various parties.
Usage and Applications of JavaScript
– JavaScript is the dominant client-side scripting language of the Web.
– 98% of all websites (mid–2022) use JavaScript for client-side scripting.
– Scripts are embedded in or included from HTML documents.
– JavaScript interacts with the DOM.
– All major web browsers have a built-in JavaScript engine.
– Loading new web page content without reloading the page, via Ajax or a WebSocket.
– Web page animations, such as fading objects in and out, resizing, and moving them.
– Playing browser games.
– Controlling the playback of streaming media.
– Generating pop-up ads or alert boxes.
– Over 80% of websites use a third-party JavaScript library or web framework.
– jQuery is the most popular client-side library, used by over 75% of websites.
– React is a free and open-source front-end JavaScript library for building user interfaces based on components.
– Angular is a TypeScript-based, free and open-source single-page web application framework.
– Vanilla JS refers to websites not using any libraries or frameworks.
– JavaScript is used in server-side website deployments and non-browser applications.
– Initial attempts at promoting server-side JavaScript usage were Netscape Enterprise Server and Microsoft’s Internet Information Services.
– Server-side usage started to grow in the late 2000s with the creation of Node.js.
– Electron, Cordova, React Native, and other frameworks have been used to create applications with JavaScript.
– JavaScript is used in Adobe Acrobat for scripting PDF documents and GNOME Shell extensions.
JavaScript Engines and Runtimes
– JavaScript engines execute JavaScript code.
– The first JavaScript engines were interpreters, but modern engines use just-in-time compilation.
– JavaScript engines are typically developed by web browser vendors.
– V8 engine is a core component of the Node.js and Deno runtime systems.
– ECMAScript engine is another name for JavaScript engines.
– JavaScript relies on a run-time environment to provide objects and methods for scripts to interact with.
– JavaScript environments are single-threaded.
– JavaScript processes messages from a queue using the event loop.
– Node.js is a cross-platform JavaScript runtime environment.
– Deno is a runtime for JavaScript, TypeScript, and WebAssembly.
Language Features and Concepts
– JavaScript supports structured programming syntax from C.
– JavaScript is weakly typed, with implicit type casting.
– JavaScript has automatic semicolon insertion.
– JavaScript has received criticism for its conversion rules.
– JavaScript has built-in functions for string and number casting.
– JavaScript is dynamically typed.
– A type is associated with a value rather than an expression.
– Variables can be reassigned to different types.
– JavaScript supports various ways to test the type of objects.
– Duck typing is supported.
– Prototypal inheritance is used in JavaScript.
– Objects are mutable and can be augmented with new fields and methods.
– Objects can act as prototypes for creating new instances.
– Two syntactical ways to specify object property names: dot notation and bracket notation.
– Properties of an object can be enumerated using a for…in loop.
– JavaScript uses prototypes for inheritance.
– Many class-based features can be simulated with prototypes.
– Functions can be used as object constructors.
– The Object.create method allows explicit creation of instances without automatic inheritance.
– The constructor’s prototype property determines the new object
JavaScript (/ˈdʒɑːvəskrɪpt/), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. As of 2023[update], 98.7% of websites use JavaScript on the client side for webpage behavior, often incorporating third-party libraries. All major web browsers have a dedicated JavaScript engine to execute the code on users' devices.
Paradigm | Multi-paradigm: event-driven, functional, imperative, procedural, object-oriented programming |
---|---|
Designed by | Brendan Eich of Netscape initially; others have also contributed to the ECMAScript standard |
First appeared | December 4, 1995 |
Stable release | |
Preview release | |
Typing discipline | Dynamic, weak, duck |
Filename extensions |
|
Website | ecma-international |
Major implementations | |
V8, JavaScriptCore, SpiderMonkey, Chakra | |
Influenced by | |
Java, Scheme, Self, AWK, HyperTalk | |
Influenced | |
ActionScript, AssemblyScript, CoffeeScript, Dart, Haxe, JS++, Opa, TypeScript | |
|
JavaScript is a high-level, often just-in-time compiled language that conforms to the ECMAScript standard. It has dynamic typing, prototype-based object-orientation, and first-class functions. It is multi-paradigm, supporting event-driven, functional, and imperative programming styles. It has application programming interfaces (APIs) for working with text, dates, regular expressions, standard data structures, and the Document Object Model (DOM).
The ECMAScript standard does not include any input/output (I/O), such as networking, storage, or graphics facilities. In practice, the web browser or other runtime system provides JavaScript APIs for I/O.
JavaScript engines were originally used only in web browsers, but are now core components of some servers and a variety of applications. The most popular runtime system for this usage is Node.js.
Although Java and JavaScript are similar in name, syntax, and respective standard libraries, the two languages are distinct and differ greatly in design.