Introducing Closure Tools
Millions of Google
users worldwide use JavaScript-intensive applications such as
Gmail,
Google Docs, and
Google Maps.
Like developers everywhere, Googlers want great web apps to be easier to create, so we've
built many tools to help us develop these (and many other) apps. We're happy to announce the
open sourcing of these tools, and proud to make them available to the web development
community.
Closure CompilerClosure
Compiler is a JavaScript optimizer that compiles web apps down into compact,
high-performance JavaScript code. The compiler removes dead code, then rewrites and minimizes
what's left so that it will run fast on browsers' JavaScript engines. The compiler also checks
syntax, variable references, and types, and warns about other common JavaScript pitfalls.
These checks and optimizations help you write apps that are less buggy and easier to maintain.
You can use the compiler with
Closure Inspector, a Firebug extension that makes debugging the
obfuscated code almost as easy as debugging the human-readable source.
Because JavaScript developers are a diverse bunch, we've set up a number of ways to run
the Closure Compiler. We've open-sourced a
command-line tool. We've created a
web
application that accepts your code for compilation through a text box or a
RESTful API. We are also offering a Firefox extension that you can use with
Page
Speed to conveniently see the performance benefits for your web pages.
Closure LibraryClosure
Library is a broad, well-tested, modular, and cross-browser JavaScript
library. Web developers can pull just what they need from a wide set of reusable UI widgets
and controls, as well as lower-level utilities for the DOM, server communication, animation,
data structures, unit testing, rich-text editing, and much, much more. (Seriously.
Check
the docs.)
JavaScript lacks a standard
class library like the
STL or
JDK. At Google, Closure Library serves as our "standard JavaScript
library" for creating large, complex web applications. It's purposely server-agnostic and
intended for use with the Closure Compiler. You can make your project big and complex (with
namespacing and type checking), yet small and fast over the wire (with compilation). The
Closure Library provides clean utilities for common tasks so that you spend your time writing
your app rather than writing utilities and browser abstractions.
Closure Templates Closure
Templates grew out of a desire for web templates that are precompiled to
efficient JavaScript. Closure Templates have a simple syntax that is natural for
programmers. Unlike traditional templating systems, you can think of Closure
Templates as small components that you compose to form your user interface, instead of having
to create one big template per page.
Closure Templates are implemented
for both JavaScript and Java, so you can use the same templates both on the server and client
side.
Closure Compiler, Closure Library, Closure Templates,
and Closure Inspector all started as
20% projects and hundreds of Googlers have
contributed thousands of patches. Today, each Closure Tool has grown to be a key part of the
JavaScript infrastructure behind web apps at Google. That's why we're particularly
excited (and humbled) to open source them to encourage and support web development outside
Google. We want to hear what you think, but more importantly, we want to see what you make. So
have at it and have fun!
By the Closure Tools team