Google Closure Tools

Google Closure Tools is a set of tools to help developers build rich web applications with JavaScript. It was developed by Google for use in their web applications such as Gmail, Google Docs and Google Maps. As of 2023, the project had over 230K LOCs not counting the embedded Mozilla Rhino compiler.

Closure Compiler
The Closure Compiler is a tool for making JavaScript downloads run faster, at the expense of human readability. It does not compile from JavaScript to machine code, but rather compiles from JavaScript to more efficient JavaScript.

The process executes the following steps:


 * 1) Parses the submitted JavaScript
 * 2) Analyzes the JavaScript
 * 3) Removes any dead code
 * 4) Rewrites and minifies what is left

It also checks syntax, variable references, and types and warns about common JavaScript pitfalls.

It supports transpiling modern ECMAScript code to ECMAScript 5, so that programmers can write JavaScript that uses new ECMAScript features, and run it in browsers or other environments that do not yet support them. This obviated Traceur Compiler, another project that supported transpiling ES6 to ES3.

The Closure compiler also supports type checking via type annotations that must be written in JSDoc comments.

CLI
Google provides command line tools used to optimize and compile  files:


 * Java-based application run from shell which compiles a list of specified JavaScript files
 * npm package  which provides three compilers: native binary executable (via GraalVM), Java and a JavaScript-based one

Closure Compiler Service
The Closure Compiler Service application provides a form for a user to input a URL pointing to a JavaScript source or enter JavaScript source code in a text box. The website will display with the optimized JavaScript on right side for the user to copy.

An API is available, accessible via POST requests, parameters include:


 * The JavaScript to be optimized, or a URL pointing to it
 * Optimization level
 * Emit errors and warnings
 * Output format i.e. JSON, XML, or text

The service is marked as deprecated and will eventually be removed.

Ecosystem
Programming languages that transpile to JavaScript benefit from Closure Tools. For example, Closure Compiler helps to make ClojureScript practical by making the compiled JavaScript code more efficient.

Internals
Closure Compiler is build upon modified version of Rhino JS engine build by Mozilla, Google Guava, a Java standard library, Protocol Buffers, Gson and various others tools for testing. It also ships with built-in JavaScript JSDoc annotations for various popular projects like Node.js's standard API library, JQuery, Google Map APIs etc..

Closure Library
The Closure Library is a JavaScript library, written specifically to take advantage of the Closure Compiler, based on a modular architecture. It provides cross-browser functions for DOM manipulations and events, Ajax and JSON, as well as more high-level objects such as User Interface widgets and Controls.

Closure Templates
Closure Templates are a templating system for dynamically generating HTML in both Java and JavaScript.

Since the language was apparently referred to as "Soy" internal to Google, and "Soy" remains in some of the documentation and classes, sometimes Closure Templates are referred to as "Soy Templates".

Closure Stylesheets
Closure Stylesheets provided extensions to CSS, which are transpiled to ordinary CSS. Internally in Google, this extended version of CSS is referred to as GSS.

As of November 2021, Closure Stylesheets has been deprecated in favor of tools such as Sass and PostCSS.