Clojureは実用性を重視しており、ClojureScriptも同様です。ますます多くのアプリケーションがWebおよびモバイル環境をターゲットとするにつれて、JavaScriptの役割と範囲も同様にブラウザの枠を超えて、モバイルなどのさらに制約された環境、ユビキタスにネットワーク化されたノード間のパスを持つ環境へと拡大しています。Google Closureツールは、堅牢なライブラリ群、強力な依存関係管理システム、そして洗練されたコンパイラを提供し、それぞれがJavaScriptコードサイズを削減するという最終目標に向けて機能しています。ClojureScriptにとって、Google Closureは、JavaScriptの「ライブラリ問題」に対するソリューションを3つの異なる方法で提供します。
ライブラリ
依存関係管理
積極的なコードの縮小
これらの機能はそれぞれ、何千時間もの研究、設計、開発、テストを表しています。そのため、ClojureScriptは実装においてこれらを活用し、Clojure/coreチームと貢献者がJavaScriptが存在する場所すべてでClojureのパワーを発揮できるようにすることに集中できるようにしています。
ClojureScriptはClojureで記述されており、ClojureScriptはGoogle Closure JavaScriptライブラリと相互運用します。ただし、ClojureScriptは**あらゆる** JavaScriptライブラリまたはフレームワークと相互運用できます。ClojureScriptコアでのGoogle Closureライブラリの使用は、依存関係を削減し、高度なモードのコンパイル(下記参照)との互換性を確保できる実装戦略です。
Google Closureの依存関係管理システムは、コンパイル時の依存関係の包含を可能にする3つのプリミティブ、`addDependency`、`provide`、`require`を提供します。ClojureScriptはこれらをカプセル化し、`ns`フォームを介してアクセスを提供します。この機能は、ClojureScriptの名前空間と関数のきめ細かいインポートとエクスポート、および相互運用性のための外部JavaScriptライブラリを可能にするために活用されます。
Google Closure Toolsは、コマンドラインフラグを介してClojureScriptコンパイルプロセスで使用できる縮小コンパイラを提供します。要約すると、縮小コンパイラは、ClojureScriptコンパイラによって生成されたJavaScriptを受け取り、変数を短い名前に変更し、空白を削除し、コメントを削除するなどして、プログラムのセマンティクスを維持しながらソースサイズを削減しようとします。
Google Closureコンパイラは、上記の縮小戦略よりもはるかに積極的な縮小戦略を可能にする高度な設定を提供します。実際、Google Closureコンパイラは、デッドコード(つまり、呼び出されることも到達することもないコード)を識別して削除するための非常に洗練された手法を使用します。この事実の欠点は、最大の縮小の可能性を実現するために、JavaScriptコードのスタイルが厳格な標準に準拠する必要があることです。そのため、ClojureScriptチームの目標は、前述のイディオムを遵守し、Closureライブラリと依存関係システムを使用することにより、生成されたJavaScriptコードが最大限に縮小可能であることを保証することです。

Google Closureツールの主要な参考文献は、Michael Bolin著のO'Reillyの**Closure: The Definitive Guide**です。この本は、ClojureScriptの相互運用性の能力を最大限に活用したいと考えている人、ClojureScriptの貢献者、そして高度なJavaScriptの手法とツールに興味がある人に強くお勧めします。