JavaScript Technology

JavaScript, commonly abbreviated as JS, is a programming language focused on web development.

This post is an introduction to JavaScript technology, encompassing the JavaScript programming language, engines and runtime environments.

JavaScript Description

JavaScript is a multi-purpose, multi-paradigm, interpreted programming language.

It is extensively used on web development as a programming language for the front-end and back-end functionality.

When building a websites, there are different technologies involved and each one has a function. A summary of these technologies and its place for JavaScript is described below:

  • HTML defines what are the components within a page
  • CSS defines how the components look like
  • JavaScript (or any alternative front-end and back-end programming languages) defines how these components react to user interaction

Apart from websites, desktop and mobile applications can also be created using JavaScript, though it was not its original purpose, through the use of specific frameworks.

JavaScript is interpreted, i.e., it is real-time compiled. Modern web browsers are able to render HTML 5 code (including JavaScript) locally and display the web with all its functionality to the user. Alternatively, the code can be run on the local operating system using tools like as Node.js.

JavaScript Context

JavaScript was originally developed by Brendan Eich, while he was working at Netscape. It was first release in 1995.

As of 2023, the JavaScript standard definition is maintained by ECMA. In parallel, there are different implementations maintained by the respective organizations behind it.

JavaScript Trademark

JavaScript is a trademark originally registered by Sun Microsystems, and owned by Oracle as of 2025. This company has its own implementation for the standard that carries the trademark, so the term JavaScript should be used just to refer to this specific implementation from a technical point of view. Nevertheless, JavaScript is also is the main way that the common world uses to name the programming language itself.

The term JavaScript is confusing to many common users because it is intentionally similar to Java, though it is a very different technology. In addition, it is trademarked by a company so it cannot be considered a vendor-neutral term within the software industry.

JavaScript is still the most usual way to refer to the technology. The acronym JS is the closest to a vendor-neutral term, and though it is extended and usually understood among developers it is still a secondary term.

There are other candidates to be used as alternative terms, like LiveScript and ECMAscript, though they are not proposed here because of the reasons explained.

LiveScript was the project name of the programming language on its first releases before it changed to JavaScript to take advantage of the popularity of Java. LiveScript is nowadays a different functional programming language aimed to transpile its code into JavaScript, what invalidates it as a possible (and mostly unknown) alternative.

ECMAscript is the name of the standard that defines JavaScript. In addition to not being an attractive and commercial term, it is commonly used to refer to the standard itself rather than the programming language, so it is still not a good candidate.

In conclusion, this blog refers to the programming language as JavaScript, as it is the most extended terms despite the concerns on its correctness explained on this section. When vendor-neutrality is an issue, the acronym JS can be used instead.

JS Programming Language

You can read this post about the JavaScript programming language.

JS Engines

A JavaScript engine is software that parses, compiles and executes JavaScript code and performs memory, call stack and heap management. It focuses on the JS specification.

A JS engine is a mandatory component within a JavaScript runtime environment.

JS engines:

  • V8
  • SpiderMonkey
  • JavaScriptCore
  • Chakra

V8 compiles the JavaScript directly into machine code. It is used on Chromium browser, Node.js and Electron.

SpiderMonkey was the first JavaScriptEngine. It was developed by Mozilla.

JavaScriptCore is Apple’s JavaScript engine. It is use in Safari browser and React Native.

Chakra was Microsoft’s JavaScript engine used in Edge browser before it moved to V8.

JavaScript Runtime Environments

A JavaScript runtime environment runs JavaScript code through a JS engine, adding features beyond the core language like APIs, libraries, and external functionalities.

Example of runtime environments: modern web browsers, Node.js, Deno, Cordova.

Classifications of JS runtime environments:

  • Client-side
  • Server-side

JS Client-side Runtime Environment

The main client-side JavaScript platform is the browsers.

Browsers are mainly written in C++.

Document Object Models (DOM) is a tree-shape structure that represents an HTML document. Modern web browser implements an API for JavaScript to access it. DOM is defined by WHATWG/W3C.

CSS Object Model (CSSOM) is a tree-shape structure that represents the CSS template of a web. A web browser implements an API for JavaScript to access it. It is defined by W3C.

There are also web APIs defined by WHATWG/W3C.

JS Server-side Runtime Environmens

Examples of server-side JavaScript runtime environments are Node.js and Deno.

JavaScript Tools

JavaScript tools:

  • Runtime environment
    • Node.js
    • Deno
  • Package manager
    • npm
    • yarn
    • pnpm
  • IDEs
  • Code bundler
    • Webpack
    • Parcels
    • Rollup
  • Linter
    • ESLint
  • Code formatter
    • Prettier
  • Transpiler
    • Babel
  • Unit tester
    • Jest
  • Uncategorized tools
    • Gulp
    • Serve

JavaScript Runtime environment

JavaScript runtimes:

  • Node.js
  • Deno

Node.js

Node.js, sometimes just called Node, is a JavaScript runtime environment.

You can read more on this post about Node.js.

Deno

Deno is a JavaScript runtime that intents to be a more modern approach than Node.js. It was written initially by the same author as Node.js, and tries to solve the design errors from the original.

It was first release in 2018.

It is written in Rust.

JavaScript Package Manager

JavaScript package managers featured on this post:

  • npm
  • yarn
  • pnpm

npm

npm is a package manager to install Node.js modules.

It is used to install other tools referred in this section.

npm modules can be installed.

npm install packagename installs the specified package within the project folder.

When run without any arguments, npm install reads the package.json file in your project and installs all the packages listed as dependencies (and their own dependencies) into a node_modules folder. This is crucial for setting up a new project or making sure you have the right version of everything.

npm install --save-dev package installs a package that is used only for developers and not for final users.

A developer tool installed with –save-dev can be run using this command:

npx devtoolname

If the module called with npx doesn’t exist, it installs it.

An example of dev tool name installed as –save-dev is Flow, because it is used for compilations.

npm install -g packagename installs the module within the local system and not only an specific project.

yarn

yarn is a package manager for Manager.

pnpm

pnpm is a package manager for JavaScript.

JavaScript IDEs

JavaScript IDEs:

  • Dedicated
    • WebStorm
  • Not-dedicated
    • Visual Studio Code
    • Sublime Text

WebStorm is a proprietary IDE developed by JetBrains.

You can read this post about Visual Studio Code.

JavaScript Code Bundlers

A code bundler is an application that group different files into a single file.

They were used before modules were supported. They are also used nowadays for the developers that think that it increases performance.

Code bundlers usually feature a source mapper that maps the lines within the generated JavaScript code with the source code, so error tracking is easier.

JavaSCript code bundlers:

  • Webpack
  • Parcels
  • Rollup

Linter

Linter is a tool that finds lints or code flaws within the source code.

JavaScript linters featured on this post:

  • ESLint

JavaScript Code Formatter

JavaScript code formatters featured on this post:

  • Prettier

Prettier

Prettier is a JavaScript code formatter.

JavaScript Unit Testers

JavaScript unit tester code formatters featured on this post:

  • Jest

Jest

Jest is a unit tester for JavaScript.

Transpiler

Babel

Babel is a transpiler that takes JavaScript source code as an input and then convert it to the equivalent code of a previous JavScript version. For example, it converts arrow functions (introduced in ES6) to regular functions.

Babel ensures backwards compatibility for browsers that has not yet implemented the latest versions.

Babel official website

Uncategorized Tools

Gulp

Gulp is a JavaScript-based toolkit used for automating tasks in web development, particularly front-end workflows.

serve

serve is a JavaScript server-side framework for building server-rendered user interfaces.

It is based on Node.js.

It is installed through npm.

JavaScript Frameworks

Web frameworks:

  • Front-end
    • React
  • Back-end
    • Express.js
    • Nestjs
    • Fastify
  • Fullstack
    • Meteor.js

Desktop app frameworks for JavaScript:

Mobile app frameworks for JavaScript:

  • Capacitor

Learning JavaScript Technology

Books about JavaScript technology:

  • Book “JavaScript: The Definitive Guide”
  • Book “Eloquent JavaScript”

Book “JavaScript: The Definitive Guide”

“JavaScript: the Definitive Guide”

JavaScript: the Definitive Guide at OpenLibrary

Book “Eloquent JavaScript”

“Eloquent JavaScript”

Eloquent JavaScript at OpenLibrary

You might also be interested in…

External references

Leave a Reply

Your email address will not be published. Required fields are marked *