JavaScript Engine 1996-2026 (差別化: 既存JS言語仕様史と異なりEngine実装/JIT Compiler軸)。SpiderMonkey (Brendan Eich Netscape 1996/Mocha/LiveScript・Mozilla維持・Tree Spider Monkey TSM→Tracemonkey 2008→IonMonkey 2011→WarpMonkey 2020・Firefox)・JavaScriptCore JSC (Apple WebKit 2002・SquirrelFish→Nitro→FTL FourthTier+B3 2014・Safari/iOS WKWebView)・Chakra (Microsoft IE9 2011→Edge Legacy・廃止2020)+ChakraCore (FOSS Open Source 2015→Maintenance)・Carakan (Opera Presto 2009-2013・Blink移行で廃止)・KJS (KDE Konqueror 2000→WebKit祖先)・V8 (Google 2008/9/2 Chrome+Node.js 2009 Ryan Dahl→Lars Bak Crankshaft→TurboFan 2014→Sparkplug+Maglev+Turboshaft 2024 Multi-tier)・Hermes (Meta/Facebook React Native 2019・AOT compile・Bytecode・Mobile)・QuickJS (Fabrice Bellard 2019・Embedded・¥0 OSS)・Bun JavaScriptCore base 2023・Node.js V8 22 LTS+25・Deno V8 2.x・JerryScript+Duktape Embedded・¥0 全Free, 2026年V8+JSC+SpiderMonkey+Hermes+QuickJS+Bun JSC共存。
JavaScript Engine は、ECMAScript 仕様を実行するための実装であり、2000 年代初頭から 2026 年にかけて多種多様な実装が登場した。主な実装は SpiderMonkey(Netscape/Firefox)、JavaScriptCore(Apple/WebKit)、V8(Google/Chrome)、Chakra(Microsoft/IE)、Hermes(Meta/React‑Native)である。近年は QuickJS(埋め込み向け)や Bun(Node 互換)など、用途別に特化したエンジンが増えている。各エンジンは JIT コンパイラ、バイトコード、AOT などの手法を組み合わせて実行速度とメモリ効率を最適化している。
| エンジン | 主なコンパイル手法 | 代表的な JIT レイヤ | メモリ管理 | 主要な用途 |
|---|---|---|---|---|
| SpiderMonkey | バイトコード → JIT | IonMonkey, WarpMonkey | ガベージコレクション(Mark‑Sweep + Incremental) | Firefox, Firefox OS |
| JavaScriptCore | バイトコード → JIT | FTL, FourthTier | ガベージコレクション(Mark‑Compact) | Safari, WKWebView |
| V8 | バイトコード → JIT | TurboFan, Sparkplug, Maglev | ガベージコレクション(Scavenge + Mark‑Sweep) | Chrome, Node.js |
| Chakra | バイトコード → JIT | Chakra JIT | ガベージコレクション(Mark‑Sweep) | Edge Legacy |
| Hermes | AOT → バイトコード | Hermes JIT | ガベージコレクション(Mark‑Compact) | React‑Native (Android) |
| QuickJS | バイトコード | なし | ガベージコレクション(Mark‑Sweep) | IoT, Embedded |
| Bun | バイトコード → JIT | JIT (Bun JIT) | ガベージコレクション(Mark‑Sweep) | Bun Runtime |
| 製品名 | エンジン | バージョン | 主要機能 | 2025 年のリリース | 2026 年のアップデート |
|---|---|---|---|---|---|
| Chrome 115 | V8 | 9.2 | TurboFan 2024, Maglev 2025 | 2025 Q2 | 2026 Q4: TurboFan 2026, Sparkplug 2.0 |
| Safari 17 | JavaScriptCore | 2025 | FTL 2024, FourthTier 2025 | 2025 Q3 | 2026 Q1: Nitro 2026 |
| Firefox 124 | SpiderMonkey | 2025 | IonMonkey 2024, WarpMonkey 2025 | 2025 Q4 | 2026 Q2: IonMonkey 2026 |
| Node.js 22 | V8 |
V8 と JavaScriptCore の主な差は何ですか?
V8 は高速な TurboFan JIT とマルチスレッドガベージコレクションを持ち、サーバー向けに最適化。JavaScriptCore は WebKit との統合が深く、Safari のレンダリングパイプラインに合わせて設計。
Hermes はなぜ React‑Native で使われるのですか?
Hermes は AOT バイトコードを生成し、起動時間とメモリ使用量を大幅に削減。モバイルデバイスのリソース制約に対応。
Bun は Node.js と互換性がありますか?
Bun は Node.js の API をほぼ完全にサポートし、V8 をベースにした高速 JIT を備えているが、全ての npm パッケージが動作するわけではない。
1996 年から 2026 年にかけて、JavaScript Engine は実装手法、JIT/AOT の組み合わせ、メモリ管理アルゴリズムを中心に進化してきた。主要エンジンは用途別に特化し、ブラウザ、サーバー、モバイル、埋め込みと多様な領域で最適化されている。2025 年以降はマルチレイヤ JIT の進化と AOT の拡張が主流となり、2026 年には V8、JavaScriptCore、SpiderMonkey、Hermes、QuickJS、Bun などが共存し、開発者は用途とリソースに応じて選択できる環境が整った。
| 9.3 |
| TurboFan 2024, Maglev 2025 |
| 2025 Q1 |
| 2026 Q3: TurboFan 2026 |
| React‑Native 0.74 | Hermes | 2025 | AOT 2024, Bytecode 2025 | 2025 Q2 | 2026 Q1: Hermes 2026 |
| Bun 1.0 | JavaScriptCore | 2025 | JIT 2025, WebAssembly 2025 | 2025 Q3 | 2026 Q2: Bun JIT 2026 |
| QuickJS 0.20 | QuickJS | 2025 | Embedded 2025 | 2025 Q4 | 2026 Q1: QuickJS 0.21 |
| Deno 1.40 | V8 | 9.2 | TurboFan 2024 | 2025 Q2 | 2026 Q3: TurboFan 2026 |
| JerryScript 2.0 | JerryScript | 2025 | AOT 2025 | 2025 Q3 | 2026 Q1: JerryScript 2.1 |
| Duktape 2.1 | Duktape | 2025 | Lightweight 2025 | 2025 Q4 | 2026 Q2: Duktape 2.2 |