Comparison of JavaScript-based web frameworks
Appearance
Comparison of JavaScript frameworks
Rationale
There are many JavaScript frameworks available. The intention of this comparison is to show some examples of JavaScript frameworks with their different features.
Table of Javascript Frameworks
AccDC | Ample SDK | DHTMLX | Dojo | Echo3 | Ext JS | Google Web Toolkit | jQuery | midori | MochiKit | MooTools | Prototype & script. aculo.us[1] | Pyjamas | qooxdoo | Rialto Toolkit | Rico | SmartClient & SmartGWT | SweetDEV RIA | Wakanda | YUI | ZK | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Version compared | 2.0 January 2012 |
0.9.3 1 Jul 2010 |
3.0 7 Jul 2011 |
1.7.2 16 Feb 2012 |
3.0.rc1 24 Mar 2011 |
4 26 Apr 2011 |
2.4 September 2011 |
1.7.1 21 November 2011 |
2010.05 10 May 2010 |
1.4.2 17 Nov 2008 |
1.4.1 24 Feb 2011 |
1.7.0/1.9.0 22 Nov 2010 |
0.5 Mar 2009 |
1.5 13 Jul 2011 |
1.1.5 25 Feb 2011 |
2.0 03 May 2009 |
SmartClient: 8.2 Dec 2011 SmartGWT: 3.0 Dec 2011 |
3.1 9 Jun 2008 |
Live Release 15 Mar 2012 |
3.4 18 Aug 2011 |
5.0.9 18 Oct 2011 |
Size | Variable. Core size: 40 kB (minified & gzipped) |
Variable | Variable. Base size: 28 kB (minified & gzipped), 65 kB (minified), 123 kB (uncompressed)[2] |
84–502 kB | Variable | 31 KiB (minified & gzipped), 72 KiB (minified), 229 KiB (uncompressed) |
9 kB (minified & gzipped), 50 kB (uncompressed) |
32–200 kB | Variable; 7.3–65 KiB (YUI Compressor),[3] 101 KiB (uncompressed)[4] |
46–278 kB | Variable | Variable, starting at 6 kB (gzipped) | 520 kB | 100–500 kb (gzipped). | 550 kB | Variable | Variable; library core is 31 kB | Variable | |||
License | Proprietary software | MIT & GPL | GPL & Commercial | BSD & AFL | MPL, LGPL or GPL | GPL and Commercial | Apache | MIT & GPL | MIT | MIT & AFL | MIT | MIT | Apache 2 & GPL | LGPL & EPL | Apache | Apache | LGPL & Commercial | Apache 2 | GPL & Live Release Licence | BSD | LGPL & GPL & ZOL |
Source language | JavaScript | ? | JavaScript | JavaScript + HTML | JavaScript and/or Java | JavaScript | Java | JavaScript | ? | ? | JavaScript | JavaScript | Python | JavaScript | ? | ? | Server: Java Client: Java (Smart GWT) or Javascript (SmartClient) or XML (both) |
? | Javascript + HTML + CSS | Javascript + HTML + CSS | XML + Java (Javascript Optional) |
Demo | WhatSock.com (under Downloads) | XUL SVG | Samples Explorer | Dojo Toolkit Demos | Client-Side JavaScript Demo | Samples & Demos | GWT Examples | UI demo | midori Documentation | Effects Demos | Demos | Effects Demos and Example Game | pyjs.org examples | qooxdoo demo | Demos | Demos | SmartClient Showcase SmartGWT Showcase SmartGWT EE Showcase |
Getting Started | Videos demo & tutorials | 300 examples, including adv. app example | ZKDemo |
Features | |||||||||||||||||||||
AccDC | Ample SDK | DHTMLX | Dojo | Echo3 | Ext JS | Google Web Toolkit | jQuery | midori | MochiKit | MooTools | Prototype & script. aculo.us[1] | Pyjamas | qooxdoo | Rialto Toolkit | Rico | SmartClient and SmartGWT | SweetDEV RIA | Wakanda | YUI | ZK | |
Feature detection[5] | Yes | No[6] | No | Yes[7] | No | No | No[8][9] | Yes[10] | No[11] | No[12] | Yes[13] | No[14] | Partial | No[15] | No | Partial [16] | Partial | Yes | No[17] | ||
DOM wrapped[18] | Yes | Yes[19] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No[20] | No[21][22] | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes |
XMLHttpRequest data retrieval |
Yes | Yes | Yes | Yes[23] | Yes | Yes | Yes | Yes | Yes | Yes[24] | Yes | Yes | Yes | No | Yes[25] | Yes | Yes | Yes | Yes | ||
JSON data retrieval | Yes | Yes | Yes | Yes[26] | Yes | Yes | Yes | Yes | Yes | Yes[27] | Yes | Yes[28] | Yes | No | Yes | Yes | Yes | Yes | Yes | ||
Server push data retrieval | Yes | Yes[29] | Yes[30] | Yes[31] | Yes[32] | Yes[33] | Via Plugin | Yes[34] | |||||||||||||
Other data retrieval | Yes: XML, HTML | Yes: XML | Yes: XML, CSV | Yes: XML, HTML, CSV, ATOM[35] | Yes: XML | Yes: RPC | Yes: XML, HTML | Yes: XML, HTML | Yes: XML, WSDL, RSS, and Java-based SQL, Hibernate, POJO adapters | Yes: JSON-RPC, Wakanda REST | Yes | ||||||||||
Drag and drop | Yes: With keyboard accessibility | Yes | Yes | Yes[36] | Yes | Yes | With plugin[37] | Yes | Yes | Yes | Yes[38] | Yes | Depends | Yes | Yes | Yes | Yes | Depends[39] | Yes | Yes | Yes |
Simple visual effects | Yes | Yes | Yes | Yes[40] | Yes | Yes | Yes | Yes | Yes | Yes[41] | Yes | Yes | Yes | No | Yes | Yes | No | Yes | Yes | Yes | |
Animation / advanced visual effects |
Yes | No | Yes[42] | Yes | Yes | Yes | Yes | Yes | Yes[43] | Yes[44] | Yes | Yes | No | Yes | Yes | No | Yes | Yes | Yes | ||
Event handling | Yes | Yes[45] | Yes | Yes[46] | Yes | Yes | Yes | Yes | Yes | Yes[47] | Yes | Yes[48] | Yes | Yes | Yes | Yes | Depends[49] | Yes | Yes | Yes | |
Back button support / history management |
Yes | No | Yes[50] | Yes[51] | Yes | With plugins[52] | Yes | With plugin[53] | Yes | Yes[54] | Yes | No | Yes | Yes | No[55] | Yes | Yes | ||||
Input form widgets & validation | Yes | Yes[56] | Yes[57] | Yes | Yes | Yes, Validation requires plugin[58] | With plugins[59] | Yes | Yes | Yes | Yes[54] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
AccDC | Ample SDK | DHTMLX | Dojo | Echo3 | ExtJS | Google Web Toolkit | jQuery | midori | MochiKit | MooTools | Prototype & script. aculo.us[1] | Pyjamas | qooxdoo | Rialto Toolkit | Rico | SmartClient and SmartGWT | SweetDEV RIA | Wakanda | YUI | ZK | |
Grid | Yes[60] | Yes[61] | Yes[62] | Yes | Yes | Yes | With plugins[63] | No | With plugin[64] | Yes | Yes | Yes | Yes[65] | Yes | Yes | Yes | Yes[66] | Yes | |||
Hierarchical Tree | Yes | Yes[67] | Yes[68] | Yes[69] | Yes[70] | Yes | With plugins[71] | No | With plugins[72] | Yes[73] | Yes[74] | Yes | Yes | Yes | No | Yes[75] | Yes | ||||
Rich text editor | Yes[76] | Yes[77] | Yes[78] | Yes[79] | Yes[80] | Yes | With plugins[81] | No | Yes[82] | Yes | Yes | No | No | Yes | No | in dev channel version | Yes | Yes | |||
Autocompletion tools | Yes[83] | Yes[84] | Yes | Yes | With plugins[85] | Yes | With plugin[86] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |||||
HTML generation tools | Yes | Yes | Yes | Yes[87] | Yes | Yes | Yes | No | Yes[88] | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | ||
Widgets themeable / skinnable | Yes | Yes | Yes[89] | Yes[90] | Yes[91] | Yes[92] | Yes[93] | Yes | Yes | Yes[94] | Yes | Yes | Yes[95] | Yes | |||||||
GUI resizable panels and modal dialogs | Yes | Yes | Yes[96] | Yes | Yes | Yes | With plugins | Yes[97] | Yes | Yes | Yes (modal in dev channel) | Yes | Yes[98] | ||||||||
GUI page layout | Yes | Yes | Yes[99] | Yes | Yes | Yes | With plugin[100] | Yes[97] | Yes | Yes | Yes | Yes | Yes[101] | ||||||||
Canvas support | Yes | Yes | Yes[102] | Yes | Yes | Yes[103] | Yes | Yes | Yes | Yes (in dev channel) | Yes | Yes[104] | |||||||||
Mobile/tablet support (touch events) | Yes | Yes | Yes[105] | Yes[106] | No | Yes | With plugin[107] | With plugin[108] | With plugin[109] | Yes | Yes | Yes | Yes | ||||||||
Accessibility / graceful degradation[110] |
Yes | No | No | Yes[111] | Partial[112] | Yes[113] | Yes | Yes | No[114] | Degradation: No Accessibility: Yes |
No | Yes[115] | Yes | ||||||||
ARIA compliant | Yes | Yes[111] | No | Yes[116] | No | Yes | No | Yes | Yes | ||||||||||||
Developer tools, Visual design | Yes | No | Yes[117] | Yes[118] | In development[119] | Yes[120] | Yes | Yes[121][122] | Yes[123][124] | No | Yes[125] | Yes | No | Yes[126] | Yes[127] | Yes | |||||
Offline storage[128] | No | No[129] | Via Adobe Air | Via Google Gears[130] | No | No | Via Pyjamas-Desktop[131] | No | Yes | No | planned | Via plugin[132] | Yes | ||||||||
Cross-browser 2d Vector Graphics[133] | Yes[134] | Yes[135] | Yes | Yes[136] | Yes | Yes | Yes (via Raphael) | Yes | Yes[137] | ||||||||||||
Charting & Dashboard[138] | Yes[139] | Yes[140] | Yes[141] | Yes[142] | With plugin[143] | Yes | Yes[144] | Yes[145] | Yes[146] | ||||||||||||
AccDC | Ample SDK | DHTMLX | Dojo | Echo3 | ExtJS | Google Web Toolkit | jQuery | midori | MochiKit | MooTools | Prototype & script. aculo.us[1] | Pyjamas | qooxdoo | Rialto Toolkit | Rico | SmartClient and SmartGWT | SweetDEV RIA | Wakanda | YUI | ZK | |
Browser Support | |||||||||||||||||||||
Internet Explorer | 6+ | 6+ | 6+ | 6+ | 6+ | 6+ | 6+ | 6+[147] | 6+ | 6 | 6+ | 6+ | 6+ | 6+ | 6+ | 5.5+ | 6+ | 6+ | 9+ | 6+ | 6+ |
Mozilla Firefox | 2+ | 1+ | 1+ | 3+[148] | 1.5+ | 1.5+ | 1+ | 2+[147] | 1.5+ | 1.0.7, 1.5b2 | 2+ | 1.5+ | 1+ | 2+ | 1.5+ | 1+ | 1+ | 4+ | 3+[149] | 2.0+ | |
Safari | 3+ | 3+ | 2.0+ | 4[148] | 3+ | 3+ | 3+ | 3+[147] | 2+ | 2.0.2 | 3+ | 2.0.4+ | 2+ | 3+ | 2.0.3[150] | 3+ | 3+ | 5+ | 4.0 | 3+ | |
Opera | 9+ | 9.6+ | 9+ | 10[148] | 9+ | 9+ | 9+ | 9+[147] | 9+ | 8.5 | 9+ | 9.25+ | 9+ | 9+ | 9+ | 9+ | 9.21+, possibly earlier as well | 10.0+ | 9+ | ||
Chrome | 1+ | 1+ | 1+ | 3[148] | 1+ | 3+[151] | 1+ | 1+[147] | 1+ | 1+ (starting with 1.6.1RC3) | 2+ | 1+ | 11+ | 2+ |
See also
Notes
- ^ a b c d script.aculo.us is an add-on to Prototype.
- ^ Dojo Base
- ^ [1]
- ^ [2]
- ^ Feature detection is preferred by many to browser sniffing to support future browsers: Browser Detecting (and what to do Instead), Feature Detection: State of the Art Browser Scripting, Browser Feature Detection
- ^ Ample SDK uses Browser Sniffing
- ^ Documentation dojo/has
- ^ GWT implementations for every browser
- ^ Google Docs (built on GWT) stops working on a Firefox rebranding because of not doing proper Feature Detection
- ^ jQuery 1.3
- ^ http://www.midorijs.com/midori.js midori.js
- ^ http://www.mochikit.com/MochiKit/Style.js MochiKit/Style.js
- ^ http://mootools.net/blog/2010/10/11/mootools-core-1-3-stable-and-mootools-more-1-3rc/
- ^ Feature detection all the way
- ^ https://svn.improve.fr/rialto/Rialto-coreV1/rialtoEngine/javascript/rialto.js
- ^ Author disagrees that feature detection alone is sufficient
- ^ http://zssdemo.zkoss.org/zkau/web/js/zk/zk.js.dsp zk.js
- ^ kangax (5 April 2010). "What's wrong with extending the DOM". Retrieved 6 April 2010.
- ^ http://www.amplesdk.com/about/technologies/javascript/
- ^ MooTools Docs - Element/Element
- ^ Prototype JavaScript framework: Element
- ^ Prototype 2.0 will not extend the DOM - Ajaxian
- ^ AJAX and Dojo
- ^ MooTools Request
- ^ Inner HTML demo
- ^ http://docs.dojocampus.org/dojo/data
- ^ MooTools Request.JSON
- ^ Pyjamas JSON-RPC Example
- ^ http://cometd.org/documentation/cometd-javascript
- ^ https://github.com/kembuco/extjs-cometd/
- ^ http://code.google.com/p/rocket-gwt/wiki/Comet
- ^ http://cometd.org/documentation/cometd-javascript
- ^ Real-time Messaging Module
- ^ http://books.zkoss.org/wiki/ZK_Developer%27s_Reference/Server_Push
- ^ http://docs.dojocampus.org/dojox/data
- ^ http://docs.dojocampus.org/dojo/dnd
- ^ http://code.google.com/p/gwt-dnd/
- ^ MooTools Drag.Move
- ^ For nodes in treeview only
- ^ http://docs.dojocampus.org/dojo/fx/
- ^ MooTools Fx.Tween (Simple Transitions)
- ^ http://docs.dojocampus.org/dojox/fx/
- ^ Mochikit.Visual
- ^ MooTools Fx.Morph (Advanced Transitions)
- ^ http://www.amplesdk.com/about/technologies/javascript/
- ^ http://docs.dojocampus.org/quickstart/events
- ^ http://mootools.net/docs/core/Types/Event MooTools Events
- ^ Pyjamas demo of onclick event handling
- ^ No event management between components on client side, server side only for some basic event
- ^ http://docs.dojocampus.org/dojo/back
- ^ http://www.sencha.com/products/js/roadmap.php Since v2.2
- ^ Address, History, jquery History, History/Remote, jQuery BBQ
- ^ MooTools-History
- ^ a b Pyjamas Kitchen Sink demo
- ^ Back button support not in the demo, and no documentation about it, or about browser history support
- ^ dhtmlxForm
- ^ http://docs.dojocampus.org/dijit/form
- ^ http://techblog.maydu.eu/?p=7
- ^ http://docs.jquery.com/Plugins
- ^ Data Views
- ^ dhtmlxGrid
- ^ http://docs.dojocampus.org/dojox/grid
- ^ jqGrid, Ingrid, Flexigrid, SlickGrid
- ^ JxLib Library or phatfusion sortable table plugin or DrasticGrid
- ^ Live grid
- ^ YUI DataTable
- ^ Data Views
- ^ dhtmlxTree
- ^ http://docs.dojocampus.org/dijit/Tree
- ^ Tree demos
- ^ treeview, file_tree_viewer
- ^ MooTree 2 or JxLib Library or MooTools PowerTools!
- ^ http://pyjs.org/examples/kitchensink/output/KitchenSink.html#Trees Tree
- ^ http://demo.qooxdoo.org/current/demobrowser/ Demo browser
- ^ http://developer.yahoo.com/yui/treeview/ YUI TreeView
- ^ [3]
- ^ dhtmlxEditor
- ^ http://docs.dojocampus.org/dijit/Editor
- ^ Echo 3 new features
- ^ problems with the HTMLEditor creating XHTML vs the HTML it does now
- ^ markitup, jwysiwyg, htmlbox, WYMeditor
- ^ MooEditable
- ^ dhtmlxCombo
- ^ http://docs.dojocampus.org/dijit/form/ComboBox
- ^ Autocomplete, Dylans Autocomplete, Yet Another Autocomplete, jQuery plugin for Autocomplete, Jquery Autocomplete, jquery.suggest, Interface Autocompleter
- ^ Digitarald's Autocompleter Plugin
- ^ As of Dojo 1.3, the NodeList.addContent() api can be used to create content for example: dojo.query(".note").addContent("h4 NOTE: h4", "before");
- ^ MooTools Elements
- ^ SkinBuilder
- ^ http://docs.dojocampus.org/dijit-themes
- ^ Community-driven skins, Theme Builder
- ^ Skinning GWT controls with style sheets
- ^ ThemeRoller
- ^ http://manual.qooxdoo.org/current/pages/gui_toolkit.html#themes
- ^ Skinning YUI
- ^ dhtmlxWindows
- ^ a b Using MochaUI Library or JxLib
- ^ http://www.zkoss.org/smalltalks/zkstudio_vedemo/
- ^ dhtmlxLayout
- ^ [4]
- ^ http://www.zkoss.org/smalltalks/zkstudio_vedemo/
- ^ dojo.gfx
- ^ MochaUI Library
- ^ [5]
- ^ DHTMLX Touch
- ^ dojox.mobile & dojox.mobile.app
- ^ [6]
- ^ jQTouch, jQuery Mobile Project
- ^ MooTools Mobile (unofficial)
- ^ All JavaScript frameworks can be written in an accessible way with graceful degradation, frameworks seen here which imply out-of-the-box accessibility have made a special effort to document best practices for their particular framework.
- ^ a b http://docs.dojocampus.org/quickstart/writingWidgets/a11y
- ^ Section 508 accessibility improvements – v3.0 roadmap
- ^ Built-in Accessibility in GWT 1.5 Applications
- ^ Qooxdoo's "Extreme JavaScript" paradigm
- ^ Yahoo! UI Graded Browser Support
- ^ jQuery UI has ARIA support
- ^ Visual Designer for DHTMLX
- ^ Wavemaker, Aptana Studio
- ^ EchoStudio 3
- ^ [7], Theme Builder, Custom build tool
- ^ Netbeans has jQuery support
- ^ jQuery API
- ^ MooTools-core Documentation
- ^ MooTools-more Document
- ^ Custom build, JS Linker, API generation, Unit test framework, etc.
- ^ Wakanda Studio
- ^ CSS Grid Builder, YUI Test Utility, Profiler, Logger Control
- ^ JavaScript frameworks currently only have the ability to support offline storage by taking advantage of pre-installed browser extensions such as Google Gears. If a user does not have one of these supported extensions installed in their browser already then offline support will be unavailable to the framework. JavaScript framework developers interested in implementing Gears may want to start with the Gears Getting Started Guide.
- ^ o.DojoToolkit.Org/offline says "Dojo Offline is no longer supported after Dojo 1.3"
- ^ Google API Libraries for Google Web Toolkit
- ^ Pyjamas Desktop
- ^ http://yuilibrary.com/gallery/show/storage-lite
- ^ Some JavaScript libraries provide 2d graphics primitives that can be used for cross-browser vector graphics. These libraries rely on underlying technologies in the browser or plugins such as Canvas, SVG, VML, Flash, and Silverlight to do the actual rendering, but help isolate application and widget code from the rendering engine api differences
- ^ [8]
- ^ http://docs.dojocampus.org/dojox/gfx
- ^ MooTools ART
- ^ http://books.zkoss.org/wiki/Small_Talks/2010/June/How_To_Use_Canvas4Z
- ^ Some JavaScript libraries include widgets for Charts, Gauges, and other data visualizations.
- ^ [9]
- ^ dhtmlxChart
- ^ http://docs.dojocampus.org/dojox/charting
- ^ http://dev.sencha.com/deploy/dev/docs/?class=Ext.chart.Chart Chart API
- ^ jQuery Visualize Plugin
- ^ [10]
- ^ [11]
- ^ [12]
- ^ a b c d e http://docs.jquery.com/Browser_Compatibility
- ^ a b c d http://docs.dojocampus.org/releasenotes/1.4
- ^ http://developer.yahoo.com/yui/articles/gbs/
- ^ http://openrico.org/resources
- ^ http://www.sencha.com/products/js/
External links
- Performance tests for different JavaScript Frameworks (Dojo, jQuery, Mootools, qooxdoo, Prototype, YUI), Jan 8, 2010
- jQuery vs Mootools by Aaron Newton, May, 2009
- Slashdot: jQuery compares favorably to MooTools
- Stack Overflow: jQuery vs. Prototype+Script.aculo.us and MooTools
- Dojo vs JQuery vs MooTools vs Prototype Performance Comparison (not up-to-date, outdated versions of YUI, jQuery and also Dojo Toolkit used)| Peter Velichkov's Blog - Jan 19, 2009
- Compare JavaScript frameworks - Ext JS, JQuery, MooTools
- JavaScript frameworks survey results | Kyle Hayes' Blog - Mar 29, 2009
- Which JavaScript libraries are most used on the most popular websites?