Can you summarize the following document?
        
  1995年,艾克被招聘到Netscape,目的是讓他在瀏覽器中實作Scheme程式語言,於是他於10天內開發出JavaScript (當工程管理決定這個程式語言必須長得像Java時,使用Scheme的想法被放棄)。之後艾克必須為這個重大的技術負債付出代價,在1996年秋天,艾克留在家裡兩個禮拜,並且重寫了Mocha程式庫,也是後來大家所知道的SpiderMonkey。SpiderMonkey這個名字源自於電影癟四與大頭蛋橫貫美國,電影裡的角色Tom Anderson提到,主要演員就像一對蜘蛛猴(Spider Monkey)夫妻在自慰。2011年,艾克將SpiderMonkey程式碼的管理交給戴夫·曼達林(Dave Mandelin)。

  TraceMonkey是第一個為JavaScript語言編寫的JIT編譯器,於2008年8月23日釋出並最先作為Firefox 3.5的SpiderMonkey中的編譯引擎。相比Firefox 3.0的編譯器,它提供了"高達20到40倍的效能改善"。  比起編譯全部函式,TraceMonkey採用追蹤即時編譯(trace Just-in-time Compilation)將JavaScript編譯成二進位制碼(Binary code)以提高執行效能,它的運作方式是在執行期間藉由追蹤和記錄控制流程及資料型別,將其用於建構追蹤樹(Trace Trees),以生成高度最佳化路徑的原生碼,追蹤樹技術由爾灣加州大學研究團隊貢獻,安德里亞斯·加爾是該團隊的負責人。  JägerMonkey的增進,使得TraceMonkey被遺棄,特別是在SpiderMonkey中型別推論引擎的開發,TraceMonkey自Firefox 11開始已經被停止使用。

  JägerMonkey由Mozilla自2010年年初開發,在內部被稱為MethodJIT,它被用來改善效能,特別是當某些情況下TraceMonkey無法生成穩定的原生碼。JägerMonkey於Mozilla Firefox 4開始被使用,採用組合編譯(Method JIT)和組譯器(Assembler),它的組譯器移植自WebKit的Nitro引擎(SFX,SquirrelFish Extreme)。後期Method JIT與TraceMonkey的Tracing JIT整合,使SpiderMonkey的速度更快。  JägerMonkey的運作很不同於其他編譯器,傳統的編譯器是藉由建立並將其最佳化,JägerMonkey則是透過重複線性前進迴圈SpiderMonkey位元組碼,也就是內部函式表示法。雖然這種方式阻礙重新排序指令的最佳化,但這對JavaScript這個經常改變變數型別而需要重新編譯的語言來說,JägerMonkey有快速編譯的優勢。  Mozilla在JägerMonkey中實做了一個臨界值的最佳化,重要的還有多形態內嵌快取( Polymorphic inline caching)及型別推論,Kraken和V8測試分數顯示,型別推論可以分別帶來44%與30%的分數提升。  TraceMonkey及JägerMonkey的JIT技術的異同在一篇hacks.mozilla.org的文章中有做解釋,深入的技術細節可在一篇由SpiderMonkey的開發者Chris Leary的文章中取得,更多技術資訊還可在其他開發者的部落格中找到:dvander、dmandelin。

  SpiderMonkey實作了ECMA-262第5.1版(ECMAScript)和其他許多特色,而ECMA-357(ECMAScript for XML (E4X))已在2013年取消支援。  即便SpiderMonkey在Firefox中被使用,它並不提供一些主要環境,像是文件物件模型(DOM)。

  SpiderMonkey是以C和C++語言編寫,幷包含直譯器、IonMonkey即時編譯和垃圾回收器。

  IonMonkey是Mozilla的第三個JIT編譯器,它啟用了許多新的最佳化技術,但是這些特色無法在之前的JägerMonkey架構執行。  IonMonkey更像傳統的編譯器,它使用中間表示層(IR,Intermediate representation)的靜態單賦值形式將SpiderMonkey的位元組碼轉換為控制流圖(Control Flow Graph),這個結構令其他語言使用的最佳化技術可被使用在JavaScript,其中包含形態的特殊化(type specialization)、行內函式(Inline function)、線性掃描的暫存器配置(linear scan register allocator)、死碼刪除(Dead code elimination)以及儘可能將程式移出迴圈外(Loop-Invariant Code Motion)。  該編譯器可以在ARM、X86及X86-64上快速的將JavaScript函式轉換成原生碼。  2013年初發行的Firefox 18中開始採用IonMonkey並將其作為預設引擎,這改進了TraceMonkey與JaegerMonkey不會對程式碼進行解析、自動執行最佳化的缺點。。

  OdinMonkey被用於最佳化JavaScript的子集asm.js,OdinMonkey並非一個JIT編譯器,它依然採用IonMonkey作為編譯器,這於2013年6月25日正式釋出的Firefox 22起採用。

  SpiderMonkey可被嵌入於應用程式中,併為應用程式提供執行JavaScript的能力。不完整名單如下:  SpiderMonkey亦提供了JavaScript Shell,它是一個互動式開發環境,可讓開發者使用命令列來執行JavaScript程式。 許多大型組織使用SpiderMonkey來管理他們前端應用程式的JavaScript。
SpiderMonkey是世界上第一款JavaScript引擎,由前網景公司的布蘭登·艾克設計,後期由Mozilla基金會維護,以開放原始碼釋出。目前為Mozilla Firefox網頁瀏覽器所使用的JavaScript引擎,並也被嵌入到其他許多環境,例如GNOME 3桌面。