1. Pure java script: Application Frameworks
1.1 Bindows (成立于2003年)
Bindows是一個通過DHTML、java script、 CSS和HTML等技術(shù)強(qiáng)勁聯(lián)合起來的一套完整的Windows桌面式的WEB應(yīng)用程序解決方案。Bindows無需下載安裝客戶端支撐組件(如 Java、ActiveX或Flash),僅需一個瀏覽器。純OO的理念體現(xiàn)在Bindows任何地方,Bindows或許是筆者見過的最完整最強(qiáng)大的 AJAX應(yīng)用程序平臺。
Bindows是商業(yè)程序的,使用了來自于MB的技術(shù)(總部位于GA USA,主要開發(fā)中心在瑞典,成立于2002年)。
Bindows框架提供的功能和特性有:
- 基于面相對象技術(shù)的類和API
- 一套完整的Windows桌面系統(tǒng),支持各種特性窗口模式,包括菜單、表單、表格、滑動條、測量儀器窗口和其他一些Windows窗口特性支持。
- 是開發(fā)zero-footprint(零空間占用)SOA客戶端應(yīng)用程序首選工具包
- 本機(jī)的XML,SOAP和XML-RPC支持
- 單用戶到企業(yè)級開發(fā)的支持
- 內(nèi)建的完美的AJAX支持
Bindows開發(fā)環(huán)境:
- 支持企業(yè)級規(guī)模的項目開發(fā)
- 跨瀏覽器、跨OS平臺的支持
- 不受服務(wù)器結(jié)構(gòu)限制
- 良好的與新的、現(xiàn)有的資源互操作性
- 統(tǒng)一的開發(fā)接口
1.2 BackBase (成立于2003年)
BackBase是一個完整的瀏覽器端框架,提供了豐富的瀏覽器操作功能,以及對.NET和JAVA平臺的集成。
商業(yè)化產(chǎn)品,來自于Backbase B.V(總部在Amsterdam,成立于2003年)。
1.3 DOJO (開發(fā)中,成立于2004年9月)
DOJO提供完整的輕量級窗口組件和瀏覽器-服務(wù)器消息映射支持
1.4 Open Rico (開發(fā)中;成立于2005年5月;基于早期的一個proprietary 框架)
Open Rico是一個支持Ajax架構(gòu)和用戶交互的多用途框架。
- 一個XMLHttpRequest response能被一個或多個的DOM對象,或者java script對象調(diào)用。
- 支持拖拽操作
- 支持基于AJAX的動畫模式,如縮放和變換等
- 基于Behaviors的操作庫
- 使用指南,由RussMirimar的Yonah提供
- 開源。源于Sabre航空公司解決方案,由Bill Scott,Darren James及另外一些人維護(hù)。
1.5 qooxdoo (開發(fā)中; 成立于2005年5月)
qooxdoo,是另一個發(fā)展迅猛的應(yīng)用框架,提供廣泛的UI支持,正在開發(fā)基礎(chǔ)架構(gòu)等特性。
- 基礎(chǔ)結(jié)構(gòu)特性:
- 能輕易的捕獲和操縱DOM事件
- 支持調(diào)試
- 支持一個時間操作的Timer類
- Getter/Setter支持
- UI:
- 窗口組件庫和框架
- 界面布局管理
- 圖像緩存和透明PNG圖片處理
- 開源(LGPL).
1.6 Tibet (開發(fā)中; 創(chuàng)建于2005年6月)
Tibet提供了大量的易移植和完整的java script API,通過這些可以快速生成大量的客戶端代碼,Tibet自稱是企業(yè)級AJAX。
- 遠(yuǎn)程腳本調(diào)用封裝在XMLHttpRequest中
- URI支持
- 支持所有的HTTP事件,不再僅僅是GET和POST
- 低級的協(xié)議-File://和WebDav也可以當(dāng)作HTTP正常使用
- Web Services調(diào)用支持,包括SOAP、XML-RPC等等
- 大型的java script對象庫
- 多種多樣的XML操作支持
- IDE和開發(fā)工具
- 開源協(xié)議(OSI)
1.7 AJFORM (創(chuàng)建于2005年6月)
AJFORM是一個極易上手的AJAX框架,被用來編寫入門級的AJAX代碼,提供有以下功能:
- 三步安裝
- 自動支持任意HTML表單元素
- 幾乎無需編碼即可實現(xiàn)AJAX
2 Pure java script: Infrastructural Frameworks
2.1 AjaxCaller(創(chuàng)建于2005年5月,目前是Alpha版)
AjaxCaller是一個具有多線程安全訪問的XMLHttpRequest組件,主要針對Ajax開發(fā)新手,目前仍處于alpha開發(fā)階段,僅在AjaxPatterns的在線搜索范例中使用了這個程序。
- 用明文或者XML結(jié)構(gòu)的數(shù)據(jù)實現(xiàn)和服務(wù)器的交互(GET/POST/PUT/Delete)
- 支持XMLHttRequest對象的構(gòu)析(銷毀對象,C++支持內(nèi)存對象的構(gòu)析操作)
- 支持Response的高速緩存(尚在計劃中)
- 簡單的庫文件代碼易于新手學(xué)習(xí)使用,并且支持腳本調(diào)試
- 開源協(xié)議
2.2 Flash java script Integration Kit
The Flash java script Integration Kit可以使Flash和java script腳本實現(xiàn)相互集成。
- 可以實現(xiàn)在java script中調(diào)用Flash ActionScript腳本,反之亦然。
- 幾乎支持雙方主要數(shù)據(jù)類型的在不同環(huán)境中的傳遞調(diào)用。
- 開源協(xié)議,有幾個Flash開源愛好者維護(hù)。
2.3 Google AJAXSLT (2005年6月發(fā)行)
Google AJAXSLT,是一個java script框架,用來執(zhí)行XSLT轉(zhuǎn)換以及XPath查詢。
- 目前在Google Map上就使用了這個。
- 開源協(xié)議(BSD)
2.4 HTMLHttpRequest(Beta版;創(chuàng)建于2005年)
HtmlHttpRequest最大的特點(diǎn)就是運(yùn)用XMLHttpRequest對象和標(biāo)準(zhǔn)HTML標(biāo)簽IFrame來實現(xiàn)最大限度的跨瀏覽跨平臺的AJAX支持,其原理是在支持XMLHttpRequest的瀏覽器上調(diào)用XMLHttp,如果不支持,就用IFrame來模擬實現(xiàn)異步交互。
- 目前支持的瀏覽器:IE6/Win, IE5.5/Win, IE5/Win, IE4/Win, Mozilla/Win, Opera7/Win, Safari/Mac, IE5/Mac
- 尚未測試的瀏覽器:IE4/Mac, Mozilla/Mac, Opera/Other, Konqueror/Linux。
- 開源協(xié)議(LGPL)
2.5 Interactive Website Framework (創(chuàng)建于2005年)
Interactive Website Framework定位在瀏覽器中支持各種各樣的AJAX基礎(chǔ)應(yīng)用的開源項目。自稱是通過java script、CSS、XML和HTML實現(xiàn)高性能的交互式WEB框架,包括一個可定制易讀的XML解析器。實際上,IWF是一個AJAX的基礎(chǔ)框架,并且還包括一些通用腳本代碼。
- 實現(xiàn)了線程安全的XMLHttpRequest
- 對XML Document進(jìn)行封裝,以便創(chuàng)建更具有可讀性的代碼:
var node = doc.groceries.frozen[0].pizza[0].size;
封裝后的數(shù)據(jù)讀取 var node = doc.documentElement.firstChild.firstChild.getAttribute("size");
原始的DOM操作讀取 - 開源協(xié)議
2.6 LibXMLHttpRequest (2003年6月發(fā)布)
libXmlRequest是一個小型XMLHttpRequest封裝包
- 用getXML()和postXML()兩個事件簡化XMLHttpReuqest調(diào)用
- 支持XMLHttpRequest對象池
- Response緩存處理
- 源碼可以使用,但是有版權(quán)保護(hù)。
2.7 MAJAX
MAJAX是另一個非常小巧的HttpRequest封裝包,為收發(fā)字符型信息提供簡單接口,并為每步動作設(shè)置回調(diào)界面。
2.8 RSLite (x)
RSLite是一個XMLHttpRequest封裝組件,作為Brent Ashley的JSRS(java script Remote Scripting)其中的一部分功能單獨(dú)發(fā)布。詳情可以看JSRS的介紹
2.9 Sack(開發(fā)中,成立于2005年5月)
Sack也是一個很有名字的微型XMLHttpRequest封裝包。調(diào)用者可以自定義回調(diào)函數(shù)或者是DOM對象。借助于回調(diào)DOM對象,可以把Response回來的數(shù)據(jù)直接以文本的方式嵌入DOM中。
2.10 Sarissa (發(fā)布于2003年2月)
Sarissa是一個java script API,封裝了在瀏覽器端獨(dú)立調(diào)用XML的功能。
- 可移植的XMLHttpRequest對象創(chuàng)造
- 可移植的XPath查詢
- 可移植的DOM操控
- 可移植的XSLT
- 可移植的XML序列化
- 開源協(xié)議(GPL2.0和LGPL2.1)
2.11 XHConn (2005年4月發(fā)布)
XHConn也是一個小型的XMLHttpRequest封裝庫。筆者也使用改良過的XHConn,其特點(diǎn)就是調(diào)用簡單,代碼也清晰易讀。
- 例子:
new XHConn().connect("mypage.php","POST","foo=bar&baz=qux",fnWhenDone);
- 開源協(xié)議許可
3 Server-Side: Multi-Language
3.1 Cross-Platform Asynchronous INterface Toolkit (2005年5月)
CPAINT是一個真正的同時支持PHP和ASP/VBScript腳本的AJAX和JSRS工具包。CPAINT在后臺提供你需求的AJAX和JSRS代碼,并自動返回到瀏覽器端相應(yīng)的java script腳本代碼,這種方式易于實時反饋需求的WEB應(yīng)用程序。
- 支持PHP和ASP
- 所有功能函數(shù)都在統(tǒng)一的java script文件中
- 支持遠(yuǎn)程腳本和XML
- 支持本地和遠(yuǎn)程函數(shù)調(diào)用
- 可以創(chuàng)建單個或多個XMLHttp對象
- 返回給后臺的數(shù)據(jù)即可以是文本也可以是XML/DOM文檔對象
- 支持POST和GET
- 用服務(wù)端代理的方式實現(xiàn)遠(yuǎn)程函數(shù)和數(shù)據(jù)的訪問操作
- 大部分瀏覽器中測試正常使用
- 在GNU、GPL、LGPL開源協(xié)議保護(hù)下發(fā)行
3.2 SAJAX (2005年3月)
SAJAX的實現(xiàn)方式很獨(dú)特,例如:調(diào)用一個java script方法x_calculateBudget(),將先把響應(yīng)傳到服務(wù)器并調(diào)用一個Java calculateBudget()方法,然后以java script方式把值返回到x_calculateBudget_cb()中。SAJAX的名氣不錯,估計很多人都聽過甚至用過,不過缺點(diǎn)就是它的這套映射理論感覺較繁鎖,遠(yuǎn)不如一些輕量級的封裝庫好用,不過SAJAX最大的特點(diǎn)就是支持的平臺豐富,幾乎囊括了WEB下常用的編程語言和平臺
- 很方便從java script函數(shù)映射到服務(wù)端代理操作
- 支持多種平臺(ASP/ColdFusion/Io/Lua/Perl/PHP/Python/Ruby)
- 開源協(xié)議
3.3 Javascipt Object Notation (JSON) and JSON-RPC
JSON-RPC是一種遠(yuǎn)程交互協(xié)議,類似于XML-RPC,對java script支持較強(qiáng)
3.4 java script Remote Scripting(JSRS)(2000年)
JSRS,較經(jīng)典的遠(yuǎn)程腳本訪問組件,支持將客戶端數(shù)據(jù)通過服務(wù)器做代理進(jìn)行遠(yuǎn)程的數(shù)據(jù)/操作交互。
- 支持的瀏覽器:IE4+,NS4.x,NS6.x,Mozilla,Opera7和Galeon。
- 服務(wù)器端腳本語言支持:ASP,ColdFusion,PerlCGI,PHP,Python和JSP(servlet)。
- 開源協(xié)議。由Brent Ashley提供支持。
3.5 Bitkraft for ASP.NET
Bitkraft是個基于(.NET)Web框架的CLR(公共語言運(yùn)行庫),允許用獨(dú)特的方式創(chuàng)建和操作分布式Web內(nèi)容。用C#編寫,運(yùn)行在微軟的.NET 1.1和Mono框架下,無縫式的客戶端-服務(wù)器響應(yīng)方式是它的最大特點(diǎn)。Bitkraft沒有使用XML組織數(shù)據(jù),而是用JSON代替。
- 支持的瀏覽器: IE5+, Firefox1+, NS6
- 服務(wù)器端要求:ASP.NET, Mono XSP, Cassini, Apache (modMono) .NET Framework 1.1+
- 事件驅(qū)動
- 支持同步和異步的遠(yuǎn)程代理
- 客戶端支持所有的.NET類型或自定義類對象映射到JSON中
- 用JSON取代XML
- 免費(fèi),開源許可協(xié)議
4 Server-Side: Java
4.1 WebORB for Java (2005年8月)
WebORB for Java是一個開發(fā)AJAX和基于Flash的富客戶端應(yīng)用程序的開發(fā)平臺。在線例子
- WebORB包括一個富客戶端開發(fā)類庫。提供簡單的在線式API用來綁定或者調(diào)用任何Java對象、XML Web Services和EJB
- 支持異步或同步的事件驅(qū)動
- 不需要在服務(wù)端修改任何代碼,不需要自定義方法或?qū)傩?、變量等。不要求設(shè)計時指定代理等。
- 同步調(diào)用不需要回調(diào),異步調(diào)用需要一個回調(diào)方法。
- 客戶端可以向服務(wù)端請求指定的活動方式,不需要任何編程就可以把處理結(jié)果輕易的轉(zhuǎn)變?yōu)闋顟B(tài)。
- 提供一個特定API來處理數(shù)據(jù)庫查詢結(jié)果-服務(wù)器代碼能返回DataSet或者DataTable,而客戶端以一個類似于RecordSet的java script對象來顯示這個結(jié)果。該對象提供檢索列名和行數(shù)據(jù)的方法。
- 支持?jǐn)?shù)據(jù)分頁技術(shù)??蛻魬?yīng)用程序能檢索頁面中的數(shù)據(jù)。
- 支持以參數(shù)的方式返回所有服務(wù)期端數(shù)據(jù)類型,如primitives, strings, complex types, arrays, native .net collections, remote references
- 目前有兩個版本:標(biāo)準(zhǔn)版(免費(fèi)),專業(yè)版(商業(yè)許可)
4.2 Echo 2 (2005年3月)
Echo 2允許你用純Java語言編寫AJAX程序。 Demo.
- 自動生成HTML和java script代碼
- 用XML在客戶端-服務(wù)端傳遞消息
- 如果愿意支持自定義java script組件
- 開源協(xié)議(Mozilla Public License or GNU LGPL)
4.3 Direct Web Remoting (DWR) (2005)
Direct Web Remoting可以在java script代碼中直接調(diào)用Java方法的應(yīng)用框架
- 類似于SAJAX,可以把java script中的請求調(diào)用轉(zhuǎn)遞到Java方法中并將執(zhí)行結(jié)果返回給java script
- 可以和任何Web框架一起使用,如Struts、Tapestry等等
- 開源(Apache),目前該產(chǎn)品被加入到WebWork中
4.4 SWATO (2005)
SWATO是一套可重用的和良好集成的Java/java script庫,它實現(xiàn)了一種更容易的方式來改變你的web應(yīng)用程序的交互,通過AJAX方式實現(xiàn)。
- 服務(wù)端Java庫可以非常容易的部署到所有Servlet2.3+兼容的容器中
- 客戶端java script庫可以在所有支持XMLHttpRequest的瀏覽器中使用
- 使用JSON技術(shù)在服務(wù)端組織POJO數(shù)據(jù),這樣你可以在任何java script環(huán)境中(HTML、XUL、SVG)訪問這些遠(yuǎn)程數(shù)據(jù),這種方式很容易通過硬編碼或者某種成熟的java script庫集成到當(dāng)前應(yīng)用中
- 提供一個簡單接口使你能在java script中調(diào)用遠(yuǎn)程的POJO數(shù)據(jù)
- 使用<servlet>和<filter>靈活的在web.xml中進(jìn)行配置,并且可以集成(不是必須)到你的Spring框架中
- 提供了幾個可幫助你快速開發(fā)web應(yīng)用程序的組件(如自動完成的文本框,在線表單,在線列表等等)
4.5 AJAX JSP Tag Library
The AJAX JSP Tag Library是一組JSP標(biāo)簽庫,用來AJAX程序開發(fā)??梢栽贘2EE下無需java script就能輕松開發(fā)AJAX模式的Web Form。標(biāo)簽庫為比較通用的AJAX功能提供了5個標(biāo)簽:
- autocomplete: 用戶在文本框中輸入字符,自動從指定的數(shù)據(jù)中匹配用戶輸入的字符,類似于Google Suggest
- callout:可以為A標(biāo)簽加入氣泡式的消息提示框,不過是實時的服務(wù)端取出數(shù)據(jù)
- Select/dropdown:類似于聯(lián)動菜單,比如地州市的聯(lián)動下拉框
- toggle:開關(guān)閘按鈕,比如在一個hidden表單域中存儲true和falsh,同時顯示相應(yīng)的img圖像
- update field:更新數(shù)據(jù),也就是無刷新提交了。
4.6 AJAX Java Server Faces Framework
The AJAX-JSF用來把任意的JSF應(yīng)用程序轉(zhuǎn)變?yōu)锳JAX應(yīng)用程序
Server-Side: Lisp
5.1 CL-Ajax
CL-Ajax實現(xiàn)java script直接調(diào)用服務(wù)端Lisp
- 生成可帶參數(shù)的函數(shù)
- 可以回調(diào)java script函數(shù)或者DOM對象
- 可以集成到SAJAX中
- 開源許可
6 Server-Side: .NET
6.1 WebORB for .NET (2005年8月)
WebORB for .NET是一個用.NET和XML Web Services方式開發(fā)AJAX和基于Flash的富客戶端應(yīng)用程序(在線例子)
- WebORB包括一個富客戶端開發(fā)類庫。提供簡單的在線式API用來綁定或者調(diào)用任何.NET對象、XML Web Services
- 支持異步或同步的事件驅(qū)動
- 不需要在服務(wù)端修改任何代碼,不需要自定義方法或?qū)傩?、變量等。不要求設(shè)計時指定代理等。
- 同步調(diào)用不需要回調(diào),異步調(diào)用需要一個回調(diào)方法。
- 客戶端可以向服務(wù)端請求指定的活動方式,不需要任何編程就可以把處理結(jié)果輕易的轉(zhuǎn)變?yōu)闋顟B(tài)。
- 提供一個特定API來處理數(shù)據(jù)庫查詢結(jié)果-服務(wù)器代碼能返回DataSet或者DataTable,而客戶端以一個類似于RecordSet的java script對象來顯示這個結(jié)果。該對象提供檢索列名和行數(shù)據(jù)的方法。
- 支持?jǐn)?shù)據(jù)分頁技術(shù)??蛻魬?yīng)用程序能檢索頁面中的數(shù)據(jù)。
- 支持以參數(shù)的方式返回所有服務(wù)期端數(shù)據(jù)類型,如primitives, strings, complex types, arrays, native .net collections, remote references
- 目前有兩個版本:標(biāo)準(zhǔn)版(免費(fèi)),專業(yè)版(商業(yè)許可)
6.2 Ajax.NET (2005年3月)
Ajax.NET是首家支持各種方式通過java script訪問服務(wù)端.net的免費(fèi)庫
- 類似于SAJAX,能把java script請求發(fā)送到.NET方法,服務(wù)端回傳給java script,甚至包括串行化自定義類。
- 可以在java script中訪問Session和Application數(shù)據(jù)
- 緩存查詢結(jié)果
- 免費(fèi)使用源代碼
- 無需更改源代碼,允許給Ajax.NET添加和修改方法和屬性
- 所有類支持java script客戶端返回數(shù)據(jù),可以在java script中使用DataSet:res.Tables[0].Rows
- 使用HtmlControls組件訪問和返回數(shù)據(jù)
- 頁面無需重載,用事件代理(數(shù)據(jù)訪問層)
- 因為只提供一個調(diào)用接口方法,所以服務(wù)端CPU占用非常少
6.3 ComfortASP.NET (2005年8月)
ComfortASP.NET可以讓開發(fā)者在純.NET下開發(fā)類似AJAX(DHTML,java script,XMLHttp)特性的應(yīng)用程序。
- 快速應(yīng)答
- 減少HTML傳輸
- 減少頁面重載
- 無閃爍的瀏覽器內(nèi)容更改
- AJAX用戶體驗,
6.4 AjaxAspects (2005年8月)
AjaxAspects是個可以用java script調(diào)用服務(wù)端WebService事件的引擎
- 用標(biāo)準(zhǔn)的SOAP和WSDL進(jìn)行服務(wù)端-客戶端通信
- 用簡單的類型和XML對象支持帶參數(shù)的返回值
- 緩存支持
- 動作隊列
- 免費(fèi)使用,開源協(xié)議
7 Server-Side: PHP
7.1 AjaxAC (2005年4月)
AjaxAC用一個單獨(dú)類封裝了完整的應(yīng)用程序功能
- 所有的功能集成在自包含的類中(另外附帶一些java script庫)
- 調(diào)用PHP文件或者HTML頁面非常簡易,只需創(chuàng)建App類后把類引用傳遞給需要調(diào)用的java script對象或者HTML元素即可。
- 捕獲java script事件
- 可以自定義配置數(shù)據(jù),并且支持運(yùn)行時參數(shù)更改
- 無需再java script代碼中夾雜凌亂的Html代碼,所有事件都是被動態(tài)附加上的
- 由于以上兩個優(yōu)點(diǎn),所以支持良好的模版引擎
- 容易Hook到PHP類和MySql數(shù)據(jù)已返回給自己的request
- 能夠容易的用java script建立窗口模式應(yīng)用程序。
7.2 JPSpan
JPSPAN通過java script直接調(diào)用PHP中的函數(shù)。
- 進(jìn)行了嚴(yán)謹(jǐn)?shù)膯卧獪y試
- 開源許可(PHP)
7.3 XAJAX
XAjax通過java script直接調(diào)用PHP中的函數(shù)
- 支持用java script調(diào)用PHP腳本
- 開源許可協(xié)議
8 Server-Side: Ruby
8.1 Ruby On Rails
Ruby On Rails是一個支持AJAX的完整Web框架,使用Ruby語言編寫,嚴(yán)格按照MVC結(jié)構(gòu)開發(fā)。
- 當(dāng)Ajax出現(xiàn)的時候Rails還處于其發(fā)展的早期,因此Ajax可能逐漸成為Rails框架的核心。
- 生成瀏覽器中大多數(shù)/全部的Window應(yīng)用組件和動畫的java script腳本。
- 支持服務(wù)器端調(diào)用。
- 隊列支持
- 開源許可