Vai al contenuto principale
Bethemesh
StoriaStoria dell’informatica

JavaScript: the language that made the Web interactive

From Netscape’s prototype to ECMAScript and Node.js, discover how JavaScript became the Web’s universal programming platform.

Pubblicato 17 agosto 2026Lettura : 20 minDi Bethemesh Team
Principiante
JavaScript represented as the language that made the Web interactive
Mostra indice
  1. The Web before JavaScript: mostly static pages
  2. Netscape and the explosion of the commercial Web
  3. Brendan Eich and the legendary ten days
  4. Mocha, LiveScript, then JavaScript
  5. JavaScript was never simply a small Java
  6. The browser as a runtime environment
  7. The DOM makes the page programmable
  8. Microsoft enters the battle
  9. ECMAScript: standardizing the language core
  10. Browser wars and the weight of compatibility
  11. Why does JavaScript have strange behaviors?
  12. ECMAScript 4: the ambitious redesign that failed
  13. Ajax: the Web stops reloading the whole page
  14. jQuery: hiding browser differences
  15. JavaScript engines enter a performance race
  16. 2009: Node.js takes JavaScript outside the browser
  17. npm and the gigantic package ecosystem
  18. CommonJS, AMD, and the module problem
  19. ECMAScript 5: modernizing without breaking the Web
  20. JSON: JavaScript-inspired syntax becomes a universal data format
  21. The event loop and asynchronous execution
  22. From callbacks to Promises and async/await
  23. ECMAScript 2015: the modern turning point
  24. Babel and using tomorrow’s syntax today
  25. Angular, React, Vue, and the framework era
  26. JavaScript as a multiparadigm language
  27. TypeScript: adding types to the JavaScript world
  28. From servers to desktop, mobile, and cloud
  29. Security as a foundational constraint
  30. Performance and speculative optimization
  31. WebAssembly does not replace JavaScript
  32. TC39 and how JavaScript evolves today
  33. Many companies, one shared Web language
  34. JavaScript compared with Java, Python, and C++
  35. JavaScript’s flaws are historical fossils
  36. Ecosystem innovation and tool fatigue
  37. A movement back toward simplicity
  38. Why did JavaScript survive?
  39. What JavaScript teaches us about programming languages
  40. Key takeaways
  41. Frequently asked questions
  42. Who created JavaScript?
  43. Was JavaScript really created in ten days?
  44. Are JavaScript and Java the same language?
  45. Why is the standard called ECMAScript?
  46. Why does JavaScript use prototypes?
  47. Is Node.js another language?
  48. Does TypeScript replace JavaScript?
  49. Is JavaScript only a front-end language?
  50. Why does JavaScript keep old strange behavior?
  51. Will JavaScript disappear?

JavaScript is now present almost everywhere the Web runs. It powers website interfaces, validates forms, communicates with servers, builds complete browser applications, and can also run on servers, desktops, mobile devices, cloud platforms, and development tools. Its ubiquity can make it seem as though it was designed from the beginning to become a universal programming platform.

The reality is much more surprising.

JavaScript was born in 1995, under intense time pressure inside Netscape. Its first prototype was developed by Brendan Eich in a matter of days. The language had to be approachable for Web-page authors, integrate directly with the browser, and complement Java, which was receiving enormous attention at the time. Yet behind that rushed beginning were unusual ideas: first-class functions, prototype-based objects, dynamic typing, and influences from Scheme and Self.

Over three decades, a language intended to add small behaviors to Web pages became one of the foundations of modern computing.

Its history is also the history of the browser, the Netscape–Microsoft conflict, ECMAScript standardization, Ajax, jQuery, JIT engines, Node.js, npm, front-end frameworks, and TypeScript. It also explains many characteristics of the language today: JavaScript cannot simply erase its past because billions of pages depend on compatibility.

The Web before JavaScript: mostly static pages

In the early 1990s, the World Wide Web was based on a remarkably simple idea: documents connected by hyperlinks could be retrieved and displayed through a browser.

HTML described page content. HTTP allowed resources to be requested from a server. Early browsers mainly displayed text and links, with images gradually becoming common.

Interaction remained limited.

To obtain a new result, users generally submitted a request to a server and received another page. A page did not yet have a universal language capable of responding directly to a click, modifying its own content, or performing calculations locally.

As the Web attracted a wider audience, that limitation became increasingly obvious.

Browser companies began looking for ways to turn the Web document into a programmable environment.

Netscape and the explosion of the commercial Web

In 1994, Marc Andreessen and Jim Clark founded Mosaic Communications, soon renamed Netscape Communications.

Its Netscape Navigator browser became extraordinarily successful.

The company quickly realized that the browser might become much more than a document reader: it could become an application platform.

At the same time, Java, developed at Sun Microsystems, was generating enormous excitement. The idea of portable programs running across different environments seemed particularly well suited to the Web.

Netscape planned to support Java but also wanted a lighter language that could be placed directly inside pages by authors who were not necessarily professional programmers.

Brendan Eich joined the company in this context.

Brendan Eich and the legendary ten days

Brendan Eich joined Netscape in April 1995.

He initially hoped to work on a language inspired by Scheme. Netscape, however, urgently needed a scripting language for its browser.

Eich produced the first prototype in May 1995, within an extremely short period commonly summarized as “ten days.”

That phrase does not mean modern JavaScript was completely designed in ten days. It refers to the rapid creation of the initial prototype from which the language continued to evolve.

The time pressure nevertheless mattered.

Some decisions were made quickly. Some quirks later became impossible to remove because websites had already begun depending on them.

JavaScript would permanently carry traces of its accelerated birth.

Mocha, LiveScript, then JavaScript

The language was not originally called JavaScript.

During development it was first known as Mocha.

It later became LiveScript in Netscape Navigator 2.0.

Then, in December 1995, Netscape and Sun announced the name JavaScript.

The choice was largely a marketing decision.

Java had exceptional visibility, and linking the two names allowed Netscape to benefit from that enthusiasm.

The similarity created decades of confusion.

JavaScript and Java are different languages with different type systems, execution models, and histories. Our article on the history of Java explores the language associated with James Gosling and shows how different its design path was.

The JavaScript name nevertheless survived and became one of the most recognizable names in software development.

JavaScript was never simply a small Java

JavaScript deliberately adopted syntax familiar to C and Java programmers: braces, operators, loops, and conditional structures.

Its deeper model came from elsewhere.

Brendan Eich drew on Scheme for first-class functions and on Self for prototype-based objects.

A JavaScript function can be stored in a variable, passed to another function, or returned as a value.

Objects historically did not need to be instantiated from a classical class. Instead, they could delegate property lookup to other objects through a prototype chain.

This difference is fundamental.

It is why JavaScript occupies a distinctive place in the history of object-oriented programming: it supports genuine object-oriented programming without originally adopting the class model popularized by C++ and Java.

The browser as a runtime environment

JavaScript did not become powerful in isolation.

Its usefulness came from its relationship with browser APIs.

The language could access the displayed document, react to user events, schedule work, and eventually communicate over the network.

It is therefore important to distinguish JavaScript, the language, from the Web APIs supplied by a browser.

Array, Object, and Promise belong to the language.

The DOM, fetch, localStorage, and mouse events are supplied by the Web environment.

This distinction became even more important when JavaScript left the browser through Node.js.

The same language could then run in multiple environments with different APIs.

The DOM makes the page programmable

For scripts to modify a page, the browser must expose the document in a programmable form.

That is the role of the Document Object Model, or DOM.

The browser represents the page as a structure of objects corresponding to document elements.

JavaScript can find an element, modify text, change a CSS class, create new nodes, or listen for events.

This ability gradually transformed the nature of the Web page.

A document was no longer simply downloaded and displayed. It became a living structure that software could change after loading.

The DOM is not JavaScript itself, although the two became so closely associated that beginners often confuse them.

Microsoft enters the battle

Netscape’s success quickly attracted Microsoft.

Internet Explorer became strategically important to Windows, and browser competition intensified.

Microsoft implemented its own compatible language, JScript, in Internet Explorer 3 in 1996.

The danger was obvious: if every browser evolved its own version, developers might need different scripts for different browsers.

The Web needed a standard.

Netscape therefore submitted the language to the Ecma International standards organization.

That decision would be critical to JavaScript’s long-term survival.

ECMAScript: standardizing the language core

The first edition of the ECMA-262 standard appeared in 1997.

The standardized language was named ECMAScript.

JavaScript remained the best-known historical and practical name, while ECMAScript referred to the formal language specification.

This separation allowed multiple engines to implement the same core behavior.

ECMAScript 2 followed in 1998 and ECMAScript 3 in 1999.

ES3 introduced many features that formed the foundation of Web JavaScript for years, including regular expressions, improved string operations, exceptions with try and catch, and other refinements.

Standardization did not immediately eliminate browser incompatibilities, but it gave the language a shared foundation independent of any single company.

Browser wars and the weight of compatibility

By the late 1990s, Netscape was losing its dominance to Internet Explorer.

The first browser war left behind a fragmented Web.

Browsers exposed different behaviors, proprietary APIs, and imperfectly compatible implementations.

Writing reliable JavaScript could be painful.

Developers detected browsers, worked around bugs, and maintained alternative code paths.

This period contributed to JavaScript’s poor reputation among many programmers.

It also established a principle that remains fundamental: the Web places enormous value on backward compatibility.

A strange behavior already used by millions of pages becomes extremely difficult to change without breaking existing sites.

Why does JavaScript have strange behaviors?

JavaScript is often criticized for surprising conversions, loose equality, NaN, the historical result of typeof null, or subtle rules around this.

These behaviors have different origins.

Some come from the early prototype.

Others emerged through standardization.

Still others became effectively impossible to correct because existing pages relied on them.

The historical lesson matters: a Web language cannot evolve like isolated software.

When code written decades ago still runs, that is both an extraordinary achievement and a serious constraint.

Modern versions generally add safer mechanisms instead of abruptly changing old semantics.

ECMAScript 4: the ambitious redesign that failed

During the 2000s, some participants wanted to transform JavaScript dramatically.

The proposed ECMAScript 4 was much larger and included more formal classes, optional types, namespaces, and many additional features.

The committee could not reach agreement.

Disputes concerned complexity, compatibility, implementation burden, and the overall direction of the language.

The project was eventually abandoned.

That failure shaped JavaScript’s later evolution.

Instead of one massive break, the language increasingly advanced through compatible additions and incremental steps.

Some ES4 ideas later returned in different forms, while others influenced projects outside the core standard.

Ajax: the Web stops reloading the whole page

A major transformation occurred in the mid-2000s.

Browsers already had mechanisms allowing JavaScript to make network requests without completely reloading a page.

Applications such as Gmail and Google Maps demonstrated how powerful this could be.

In 2005, Jesse James Garrett popularized the term Ajax, meaning Asynchronous JavaScript and XML.

Although the name mentions XML, the broader idea mattered more: an application could communicate with a server in the background and update only part of its interface.

The Web experience changed dramatically.

Websites increasingly behaved like applications.

JavaScript moved from small visual effects to a central role in application architecture.

jQuery: hiding browser differences

Even with Ajax, browser differences made Web development difficult.

In 2006, John Resig introduced jQuery.

The library offered a concise API for selecting elements, manipulating the DOM, handling events, performing animations, and making Ajax requests.

Its “write less, do more” slogan matched the needs of the era.

More importantly, jQuery absorbed many browser incompatibilities.

Developers programmed against the library rather than handling each browser difference manually.

For years, jQuery became almost synonymous with client-side JavaScript development.

Its later decline was not evidence of failure. Many capabilities it made convenient eventually became simpler and more consistent in browser standards themselves.

JavaScript engines enter a performance race

As Web applications became more ambitious, execution speed became increasingly important.

Browser vendors invested heavily in JavaScript engines.

In 2008, Google launched Chrome with the V8 engine.

V8 used JIT, or just-in-time, compilation techniques to dynamically turn code into optimized machine instructions.

Mozilla, Apple, and Microsoft also improved their engines.

Competition changed perceptions of the language.

JavaScript was no longer limited to tiny scripts interpreted slowly.

Much larger applications became practical inside the browser.

This performance race also prepared one of the greatest changes in JavaScript history: server-side JavaScript.

2009: Node.js takes JavaScript outside the browser

In 2009, Ryan Dahl introduced Node.js.

The project used V8 outside Chrome and combined it with APIs for servers, files, networking, processes, and input/output.

Node.js strongly embraced asynchronous, non-blocking I/O.

For many network applications, this architecture could handle large numbers of concurrent operations without creating a traditional thread for every connection.

Its cultural impact was equally important.

Web developers could now use the same language in both browser and server environments on a large scale.

JavaScript became a general software platform.

npm and the gigantic package ecosystem

Node.js was accompanied by another decisive phenomenon: npm, its package manager and registry ecosystem.

Publishing and installing a JavaScript library became extremely easy.

The ecosystem exploded.

Packages appeared for HTTP servers, databases, build tools, testing, command-line applications, file transformations, and almost every imaginable task.

This abundance accelerated development dramatically.

It also created problems: huge dependency trees, abandoned packages, supply-chain risks, transitive dependencies, and tool fragmentation.

npm illustrates a recurring theme in JavaScript history: success produces enormous diversity, after which the ecosystem must develop conventions and tools to manage that diversity.

CommonJS, AMD, and the module problem

Early JavaScript pages were not designed around applications containing thousands of source files.

As projects grew, organizing code became a major challenge.

Node.js popularized CommonJS with require() and module.exports.

Browser projects explored alternatives such as AMD.

Bundlers then combined many modules into deployment-friendly files.

Eventually ECMAScript standardized ES Modules using import and export.

This may sound like a technical detail, but it was a crucial step.

JavaScript was acquiring the infrastructure required to organize very large codebases while remaining usable in its original browser environment.

ECMAScript 5: modernizing without breaking the Web

After the difficulties surrounding ECMAScript 4, the standards community took a more cautious approach.

ECMAScript 5, published in 2009, added strict mode, additional array methods, improved JSON support, and more precise object-property controls.

Strict mode perfectly illustrates JavaScript’s evolutionary strategy.

Instead of changing the semantics of all existing programs, developers could opt into stricter rules for selected code.

The language gained a path toward safer practices while preserving the old Web.

This additive strategy became a defining feature of later ECMAScript evolution.

JSON: JavaScript-inspired syntax becomes a universal data format

JSON, popularized by Douglas Crockford, uses a subset-like notation inspired by JavaScript object and array literals to represent structured data.

But JSON is not simply “JavaScript code.”

It has its own grammar and became language-independent.

Its simplicity made it particularly useful for Web APIs.

As Ajax and HTTP services expanded, JSON frequently replaced XML for application data exchange.

JavaScript’s influence therefore extended beyond its own runtime: a notation inspired by its syntax became one of modern computing’s most widely used data formats.

The event loop and asynchronous execution

Understanding modern JavaScript requires understanding its relationship with asynchronous work.

In browsers and Node.js, JavaScript normally operates inside an event-driven environment.

A click, network response, or timer can schedule work.

The event loop coordinates when tasks can run as the call stack becomes available.

This model makes it practical to handle many input/output operations without blocking the main execution path while waiting for each one.

It can also be confusing.

Nested callbacks, microtask ordering, and asynchronous control flow created substantial complexity.

The language and ecosystem gradually developed better abstractions to address those problems.

From callbacks to Promises and async/await

Early asynchronous JavaScript APIs relied heavily on callbacks.

Callbacks work, but a sequence of dependent operations can produce deeply nested structures commonly called “callback hell.”

Promises provide a more structured representation of a value that will become available later.

They were standardized in ECMAScript 2015.

Later, async and await made many asynchronous sequences visually resemble ordinary synchronous code while preserving asynchronous behavior.

These changes show JavaScript learning from its own usage.

The language of 1995 was not designed for every network-heavy application of the 2020s, but it adapted without abandoning historical compatibility.

ECMAScript 2015: the modern turning point

ECMAScript 2015, widely known during development as ES6, was one of the largest upgrades in JavaScript history.

It introduced or standardized let and const, arrow functions, classes, modules, Promises, template literals, destructuring, default parameters, generators, Map, Set, Symbol, and many other features.

The release made modern JavaScript considerably more expressive.

The class syntax requires an important qualification: it did not replace JavaScript’s fundamental prototype model.

Instead, it offered a more familiar syntax for expressing common patterns on top of prototypes.

That connection is explored more broadly in our history of object-oriented programming.

Babel and using tomorrow’s syntax today

New Web features face a recurring difficulty: users do not all update their browsers at the same time.

Developers wanted modern syntax without excluding older environments.

Tools such as Babel transformed newer JavaScript into forms that older engines could execute.

This technique, transpilation, became central during the 2010s.

It partially separated the language developers wrote from the exact syntax delivered to target browsers.

Combined with bundlers, minifiers, and development servers, it produced a sophisticated build pipeline around a language that originally ran directly from a <script> element.

Angular, React, Vue, and the framework era

As interfaces became full applications, frameworks and libraries emerged to control growing complexity.

AngularJS and later Angular provided comprehensive application structures.

React, released by Facebook in 2013, popularized component-based interfaces and declarative rendering.

Vue offered another combination of reactivity, components, and progressive adoption.

Svelte, Solid, and many full-stack frameworks followed.

The specific tools continue to change, but the architectural trend is durable: modern front ends are often organized around components, state, and declarative descriptions rather than long sequences of manual DOM mutations.

JavaScript as a multiparadigm language

JavaScript is difficult to place inside a single programming paradigm.

It supports ordinary imperative programming.

First-class functions make functional styles natural.

Prototypes and class syntax support multiple forms of object-oriented design.

Closures provide another mechanism for encapsulation.

Generators and asynchronous features introduce additional models.

This flexibility explains part of JavaScript’s success, but also the wide variation in style between projects.

Because the language does not impose one architecture, discipline often comes from team conventions, linters, optional static typing, and frameworks.

TypeScript: adding types to the JavaScript world

As JavaScript applications became larger, dynamic typing could become difficult to manage across enormous codebases.

Microsoft developed TypeScript, announced in 2012.

The project was led by Anders Hejlsberg, already known for Turbo Pascal and C#.

TypeScript adds a powerful structural static type system and development-time features on top of JavaScript.

The result is transformed into JavaScript for execution.

That strategy is fundamental: TypeScript does not attempt to replace the JavaScript platform. It builds on it.

Its widespread adoption demonstrates that an ecosystem can add stronger development guarantees while preserving the universal compatibility of the underlying runtime language.

From servers to desktop, mobile, and cloud

Node.js opened the door to much broader use.

Electron made it possible to build desktop applications using Web technologies.

React Native and related approaches brought JavaScript ecosystems into mobile development.

Many command-line tools are written for Node.js.

Serverless and edge platforms also execute JavaScript or closely related runtimes.

A language created for Netscape Navigator can therefore be used across many layers of a modern system.

This ubiquity makes skills and libraries reusable.

It does not mean JavaScript is optimal for every task, but its adoption cost can be low for teams already centered on Web technologies.

Security as a foundational constraint

Executing code downloaded from the Internet inside a browser immediately creates security problems.

JavaScript therefore runs in a highly constrained environment.

Browsers isolate pages and enforce rules such as the same-origin policy.

A page cannot freely read another site’s data or access the user’s file system like an ordinary native program.

Over time, the Web security model became much more sophisticated through permissions, Content Security Policy, CORS, context isolation, and defenses against many attack classes.

JavaScript has therefore been shaped not only by syntax but by the hostile environment in which code from many independent sources must coexist.

Performance and speculative optimization

Modern engines perform extraordinary work to execute a dynamic language quickly.

They observe types at runtime, construct optimized internal representations, compile selected portions of code, and may abandon specialized code when assumptions become invalid.

Techniques such as hidden classes, inline caches, and JIT compilation produce performance that early JavaScript engines could not approach.

Most of this complexity is invisible to application developers.

It nevertheless illustrates a central fact: JavaScript’s success owes as much to decades of engine engineering as to changes in the language specification itself.

WebAssembly does not replace JavaScript

The arrival of WebAssembly was sometimes described as the beginning of the end for JavaScript.

That is not what happened.

WebAssembly provides a compact, efficient execution format particularly useful for code originating in languages such as C, C++, or Rust.

But it operates as part of the Web platform and frequently cooperates with JavaScript.

JavaScript remains extremely well suited to browser APIs, interface orchestration, and general application logic.

WebAssembly therefore expands the platform rather than simply replacing its historical programming language.

TC39 and how JavaScript evolves today

ECMAScript evolution takes place through TC39, a technical committee within Ecma International.

New features move through proposal stages.

They are discussed, experimented with, specified, and implemented before reaching final standard status.

Since 2015, ECMAScript has followed an annual publication rhythm.

Optional chaining, nullish coalescing, BigInt, module improvements, collection methods, and many other features have arrived incrementally.

Modern JavaScript therefore evolves continuously, with extraordinary attention to backward compatibility.

Many companies, one shared Web language

Netscape created JavaScript.

Microsoft contributed to its early competitive spread and standardization.

Mozilla carried forward much of Netscape’s browser heritage.

Google accelerated engine competition through Chrome and V8.

Apple develops JavaScriptCore.

Microsoft created TypeScript.

Meta played a major role through React.

Yet no single one of these companies owns the language’s future.

An open specification, multiple independent engines, standards work, and the structural importance of the Web turned JavaScript into shared infrastructure.

That distributed reality helped the language survive the decline or disappearance of several companies and products that shaped its history.

JavaScript compared with Java, Python, and C++

Comparing JavaScript with other major languages highlights its unusual position.

C++ emphasizes resource control, systems programming, and abstractions with carefully managed costs.

Java historically emphasized a virtual machine, static typing, and a more classical class model.

Python emphasizes readability, concise expression, scripting, automation, science, and a broad general-purpose ecosystem.

JavaScript has a unique historical advantage: it is the native programmable language of the Web browser.

That position gave it a form of distribution that no other general-purpose language obtained in quite the same way.

JavaScript’s flaws are historical fossils

Why does typeof null historically return "object"?

Why are both == and === available?

Why can implicit conversions be surprising?

Why does this depend on how a function is called?

It is tempting to imagine simply cleaning up the language.

But every potential correction must be evaluated against decades of existing code.

The Web operates as a kind of permanent software archaeology: old decisions remain observable because removing their behavior might break sites that are still accessible.

Modern best practices often work around these legacies using clearer constructs, linters, tests, and type systems.

Ecosystem innovation and tool fatigue

JavaScript’s speed of innovation has a cost.

Package managers, bundlers, transpilers, frameworks, test tools, and conventions have changed rapidly.

New developers can feel that the ecosystem never stops moving.

The phrase “JavaScript fatigue” emerged to describe this experience.

It is useful, however, to distinguish the language from its surrounding ecosystem.

The ECMAScript core evolves through a relatively structured standards process.

Much of the volatility comes from layers built around it to solve large-scale application, compatibility, deployment, and developer-experience problems.

Over time, some solutions disappear while others become stable conventions or platform features.

A movement back toward simplicity

A more recent trend attempts to reduce accumulated complexity.

Modern browsers directly support modules and many APIs once supplied by libraries.

New runtimes and tools aim to make installation, testing, bundling, and execution faster.

Frameworks increasingly explore server rendering, static generation, server components, and sending less JavaScript to clients when appropriate.

This is not a rejection of JavaScript.

It is a sign of platform maturity: after proving that almost everything could run in the browser, the ecosystem increasingly asks what actually should run there.

Why did JavaScript survive?

JavaScript survived for several reasons.

It was in the right place at the right time: inside the browser as the Web became a global platform.

ECMAScript standardization allowed it to outlive Netscape.

Backward compatibility protected existing websites.

Engine competition improved performance.

Node.js opened server development.

npm created a huge network of reusable packages.

And the language continued evolving without demanding a complete rewrite of the Web.

That combination is extremely difficult to reproduce.

JavaScript’s success is therefore ecological and institutional as much as it is technical.

What JavaScript teaches us about programming languages

JavaScript’s history demonstrates that a programming language is not judged only by the elegance of its initial design.

Distribution matters.

Compatibility matters.

Tools matter.

Libraries matter.

Governance and standards matter.

An imperfect language that is available everywhere, supported by a huge ecosystem, and able to evolve can become more important than a theoretically cleaner language.

JavaScript may be the most spectacular example of that principle.

Its rushed birth did not determine its destiny. The Web created an environment in which successive generations of developers, standards authors, and engine engineers could continually transform it.

Key takeaways

JavaScript was born in 1995 at Netscape, when Brendan Eich rapidly created a scripting-language prototype for the browser.

First called Mocha and then LiveScript, it became JavaScript at a time when the Java name had enormous visibility, although the languages themselves are fundamentally different.

Its design combined familiar C-family syntax with influences from Scheme for functions and Self for prototypes.

Standardization as ECMAScript beginning in 1997 allowed the language to survive beyond Netscape.

Ajax and jQuery transformed its role in the 2000s. JIT engines, particularly V8, radically improved performance. Node.js took it outside the browser in 2009, while npm built an enormous package ecosystem.

ECMAScript 2015 substantially modernized the language. Frameworks transformed interface development, and TypeScript added static typing on top of the JavaScript platform.

Today JavaScript is no longer merely the language that adds interaction to Web pages.

It is a foundational layer of the Web platform and one of the largest software ecosystems ever created.

Frequently asked questions

Who created JavaScript?

JavaScript was created by Brendan Eich at Netscape in 1995. The initial prototype was built very quickly before decades of subsequent evolution and standardization.

Was JavaScript really created in ten days?

Eich produced the initial prototype in roughly that period. Modern JavaScript, however, is the result of three decades of standards work, implementations, and collective development.

Are JavaScript and Java the same language?

No. Despite similar names and some familiar syntax, their type systems, object models, execution environments, and histories are different.

Why is the standard called ECMAScript?

Netscape submitted the language to Ecma International so that an independent specification could be created. ECMAScript is the standardized specification; JavaScript remains the commonly used language name.

Why does JavaScript use prototypes?

Its original object model was strongly influenced by Self. JavaScript objects can delegate property lookup to other objects through a prototype chain.

Is Node.js another language?

No. Node.js is a JavaScript runtime environment historically built around V8 and APIs for servers, files, networking, processes, and other non-browser tasks.

Does TypeScript replace JavaScript?

No. TypeScript adds a type system and development tooling, then produces JavaScript that runs on compatible JavaScript platforms.

Is JavaScript only a front-end language?

No. It remains the browser’s native language, but it is also used on servers, in command-line tools, desktop applications, mobile development, and cloud platforms.

Why does JavaScript keep old strange behavior?

Backward compatibility is essential to the Web. Changing historical behavior can break existing pages and applications, so new mechanisms are generally added instead of old ones being removed.

Will JavaScript disappear?

There is no sign of an imminent disappearance. Its browser position, open standardization, ecosystem, and continuous evolution give it a structural role in the Web even as surrounding frameworks and tools change.

Fonti e riferimenti

  1. 1.ACM — JavaScript: The First 20 Years
  2. 2.Ecma International — ECMA-262
  3. 3.MDN — JavaScript language overview

Raccolta

Linguaggi di programmazione

  1. 01Grace Hopper: from early compilers to COBOL
  2. 02John Backus: FORTRAN, BNF, and the rejection of machine code
  3. 03Dennis Ritchie: the C language at the heart of Unix
  4. 04FORTRAN: proving that a compiler could compete with assembly
  5. 05The C language: making systems portable without hiding the machine
  6. 06Niklaus Wirth: from Pascal to Oberon, designing through simplicity
  7. 07Bjarne Stroustrup: designing C++ without giving up performance
  8. 08Pascal: learning to program by making structure visible
  9. 09C++: from C with Classes to a general-purpose language
  10. 10Object-oriented programming: objects, messages, and reusable abstractions
  11. 11Guido van Rossum: creating Python to make code readable
  12. 12Brendan Eich: JavaScript, from Netscape prototype to Web standard
  13. 13James Gosling: the engineer behind Java
  14. 14Python: readability, batteries included, and a global ecosystem
  15. 15Java: write once, run anywhere
  16. 16JavaScript: the language that made the Web interactive
  17. 17Ken Thompson: from Unix to Go, simplicity as a method
  18. 18John McCarthy: Lisp and the idea of programming with symbols
  19. 19Alan Kay: Smalltalk and the computer as a personal medium
  20. 20Barbara Liskov: the abstraction that made software modular
  21. 21Robin Milner: ML, machine-assisted proof, and languages of interaction
  22. 22Brian Kernighan: AWK, Unix, and the art of explaining code
  23. 23Anders Hejlsberg: from Turbo Pascal to C# and TypeScript
  24. 24Larry Wall: Perl, the language that connected the tools of the Internet
  25. 25Yukihiro Matsumoto: Ruby and programmer happiness
  26. 26Rasmus Lerdorf: PHP and the democratization of the dynamic Web

Questo articolo ti è stato utile?