最近更新: 2007-03-03

ECMAScript 各實作版本應用於程式設計工作之現況

jaceju 在 重新認識 JavaScript 一文的回應提到了 JScript 及其用於開發獨立程式的事。我先釐清名詞與觀念: JScript 是 ECMAScript 的實作版本,不是 JavaScript 的延伸。

ECMAScript 是一種語言規範。而 JavaScript 和 JScript 則是這種規範的具體實踐。除此之外 Adobe 用於 Flash 上的 ActionScript 也是 ECMAScript 的實作版本。

這些實作版本在語言特性上都符合 ECMAScript 規範,差異在於它們提供的 class library 不同。ECMAScript 只規範語言,不管 class library ,這不足以構成一個完整的軟體開發工具。若想單獨使用 JavaScript/JScript 或其他實作版本開發應用程式,除了一個 stand-alone 的執行環境 (host) 之外,還需要豐富的 class library 。

目前我接觸過的 ECMAScript 實作版本是 JavaScriptJScript .Net 以及 ActionScript 。接下來分別談一下它們的現況。

JavaScript

Mozilla 的 JavaScript 主要還是著眼於內嵌式語言引擎,有 C 語言的 SpiderMonkey 及 Java 的 Rhino。目前連 JavaScript shell 都欠奉,要自己從 CVS repository 中提取源碼後自行 make 。我在 Windows 下用 MinGW32 編製失敗... 嗯,Makefile 的內容使用了許多 Unix 指令,而且會誤判我的編譯工具為 MSVC 。初步修改 Makefile 內容後總算可以開始編譯,卻又在編譯 jsapi.c 時發生語法層級錯誤。嗯,難道是 gcc 版本不對嗎?算了,有空再試。

JScript

微軟的 JScript 有分新舊版本,新版本即 JScript .Net。雖然 JScript 可能搭 .Net Framework 的順風車而享用豐富的 class library 。只可惜微軟的重心從不放在 JScript 身上,只把它定位為 ASP.Net 支援的其中一種語言引擎,連獨立的 Visual JScript 工具都沒有。很多 Visual Studio .Net 的使用者連 Visual Studio .Net 有 JScript 編譯器 都不知道。

ActionScript

Adobe 的 ActionScript 以 Adobe Flash 為 host 。我們常說的 Flash Player 就是 ActionScript 的獨立執行環境;兩者間之關係類似 .Net Framework Runtime 與 JScript .Net 。換言之,我們可以用 ActionScript 設計應用程式,而使用者只須安裝 Flash Player 便可執行該應用程式。 Adobe 對 ActionScript 之推行不遺餘力,有獨立的開發工具 (Flex) ,也有豐富的 class library (以 GUI 為主)。這點跟微軟的態度倒是大不相同。

樂多舊網址: http://blog.roodo.com/rocksaying/archives/2796421.html

樂多舊回應
未留名 (#comment-4086449)
Sat, 03 Mar 2007 23:51:14 +0800
我手邊的資料是先有 JavaScript (原名 LiveScript, Netscape 2) ,再來 JScript (IE3) 最後才有 ECMA 的標準。

至於延伸一詞,也許是我誤用了。
未留名 (#comment-4087469)
Sun, 04 Mar 2007 03:42:44 +0800
其實是 Netscape 設計了 JavaScript 1.0 ,而微軟設計了 JScript 。雙方先後提交給 ECMA 委員會制定 ECMAScript 規範。規範出現後, Mozilla(Netscape) 與微軟又按 ECMAScript 回頭修訂各自的實作內容。

現行的 ECMAScript 規範是第三版 (3rd) 。JavaScript 到 1.5 版才符合 ECMAScript 3rd 的規範。 JScript 則到 5.5 版本才符合 ECMAScript 3rd。See also: JavaScript - JScript - ECMAScript version history

所以現在的 JavaScript 與 JScript 版本都是 ECMAScript 規範的實作品。