Jump to content

Comparison of JavaScript-based web frameworks

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 24.1.248.140 (talk) at 06:51, 25 March 2012 (Undid revision 483809140 by 24.1.248.140 (talk)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

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

Demo Apps

Dojo Toolkit Demos Client-Side JavaScript Demo Samples & Demos GWT Examples UI demo midori Documen­tation 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

List of JavaScript libraries

Notes

  1. ^ a b c d script.aculo.us is an add-on to Prototype.
  2. ^ Dojo Base
  3. ^ [1]
  4. ^ [2]
  5. ^ 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
  6. ^ Ample SDK uses Browser Sniffing
  7. ^ Documentation dojo/has
  8. ^ GWT implementations for every browser
  9. ^ Google Docs (built on GWT) stops working on a Firefox rebranding because of not doing proper Feature Detection
  10. ^ jQuery 1.3
  11. ^ http://www.midorijs.com/midori.js midori.js
  12. ^ http://www.mochikit.com/MochiKit/Style.js MochiKit/Style.js
  13. ^ http://mootools.net/blog/2010/10/11/mootools-core-1-3-stable-and-mootools-more-1-3rc/
  14. ^ Feature detection all the way
  15. ^ https://svn.improve.fr/rialto/Rialto-coreV1/rialtoEngine/javascript/rialto.js
  16. ^ Author disagrees that feature detection alone is sufficient
  17. ^ http://zssdemo.zkoss.org/zkau/web/js/zk/zk.js.dsp zk.js
  18. ^ kangax (5 April 2010). "What's wrong with extending the DOM". Retrieved 6 April 2010.
  19. ^ http://www.amplesdk.com/about/technologies/javascript/
  20. ^ MooTools Docs - Element/Element
  21. ^ Prototype JavaScript framework: Element
  22. ^ Prototype 2.0 will not extend the DOM - Ajaxian
  23. ^ AJAX and Dojo
  24. ^ MooTools Request
  25. ^ Inner HTML demo
  26. ^ http://docs.dojocampus.org/dojo/data
  27. ^ MooTools Request.JSON
  28. ^ Pyjamas JSON-RPC Example
  29. ^ http://cometd.org/documentation/cometd-javascript
  30. ^ https://github.com/kembuco/extjs-cometd/
  31. ^ http://code.google.com/p/rocket-gwt/wiki/Comet
  32. ^ http://cometd.org/documentation/cometd-javascript
  33. ^ Real-time Messaging Module
  34. ^ http://books.zkoss.org/wiki/ZK_Developer%27s_Reference/Server_Push
  35. ^ http://docs.dojocampus.org/dojox/data
  36. ^ http://docs.dojocampus.org/dojo/dnd
  37. ^ http://code.google.com/p/gwt-dnd/
  38. ^ MooTools Drag.Move
  39. ^ For nodes in treeview only
  40. ^ http://docs.dojocampus.org/dojo/fx/
  41. ^ MooTools Fx.Tween (Simple Transitions)
  42. ^ http://docs.dojocampus.org/dojox/fx/
  43. ^ Mochikit.Visual
  44. ^ MooTools Fx.Morph (Advanced Transitions)
  45. ^ http://www.amplesdk.com/about/technologies/javascript/
  46. ^ http://docs.dojocampus.org/quickstart/events
  47. ^ http://mootools.net/docs/core/Types/Event MooTools Events
  48. ^ Pyjamas demo of onclick event handling
  49. ^ No event management between components on client side, server side only for some basic event
  50. ^ http://docs.dojocampus.org/dojo/back
  51. ^ http://www.sencha.com/products/js/roadmap.php Since v2.2
  52. ^ Address, History, jquery History, History/Remote, jQuery BBQ
  53. ^ MooTools-History
  54. ^ a b Pyjamas Kitchen Sink demo
  55. ^ Back button support not in the demo, and no documentation about it, or about browser history support
  56. ^ dhtmlxForm
  57. ^ http://docs.dojocampus.org/dijit/form
  58. ^ http://techblog.maydu.eu/?p=7
  59. ^ http://docs.jquery.com/Plugins
  60. ^ Data Views
  61. ^ dhtmlxGrid
  62. ^ http://docs.dojocampus.org/dojox/grid
  63. ^ jqGrid, Ingrid, Flexigrid, SlickGrid
  64. ^ JxLib Library or phatfusion sortable table plugin or DrasticGrid
  65. ^ Live grid
  66. ^ YUI DataTable
  67. ^ Data Views
  68. ^ dhtmlxTree
  69. ^ http://docs.dojocampus.org/dijit/Tree
  70. ^ Tree demos
  71. ^ treeview, file_tree_viewer
  72. ^ MooTree 2 or JxLib Library or MooTools PowerTools!
  73. ^ http://pyjs.org/examples/kitchensink/output/KitchenSink.html#Trees Tree
  74. ^ http://demo.qooxdoo.org/current/demobrowser/ Demo browser
  75. ^ http://developer.yahoo.com/yui/treeview/ YUI TreeView
  76. ^ [3]
  77. ^ dhtmlxEditor
  78. ^ http://docs.dojocampus.org/dijit/Editor
  79. ^ Echo 3 new features
  80. ^ problems with the HTMLEditor creating XHTML vs the HTML it does now
  81. ^ markitup, jwysiwyg, htmlbox, WYMeditor
  82. ^ MooEditable
  83. ^ dhtmlxCombo
  84. ^ http://docs.dojocampus.org/dijit/form/ComboBox
  85. ^ Autocomplete, Dylans Autocomplete, Yet Another Autocomplete, jQuery plugin for Autocomplete, Jquery Autocomplete, jquery.suggest, Interface Autocompleter
  86. ^ Digitarald's Autocompleter Plugin
  87. ^ 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");
  88. ^ MooTools Elements
  89. ^ SkinBuilder
  90. ^ http://docs.dojocampus.org/dijit-themes
  91. ^ Community-driven skins, Theme Builder
  92. ^ Skinning GWT controls with style sheets
  93. ^ ThemeRoller
  94. ^ http://manual.qooxdoo.org/current/pages/gui_toolkit.html#themes
  95. ^ Skinning YUI
  96. ^ dhtmlxWindows
  97. ^ a b Using MochaUI Library or JxLib
  98. ^ http://www.zkoss.org/smalltalks/zkstudio_vedemo/
  99. ^ dhtmlxLayout
  100. ^ [4]
  101. ^ http://www.zkoss.org/smalltalks/zkstudio_vedemo/
  102. ^ dojo.gfx
  103. ^ MochaUI Library
  104. ^ [5]
  105. ^ DHTMLX Touch
  106. ^ dojox.mobile & dojox.mobile.app
  107. ^ [6]
  108. ^ jQTouch, jQuery Mobile Project
  109. ^ MooTools Mobile (unofficial)
  110. ^ 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.
  111. ^ a b http://docs.dojocampus.org/quickstart/writingWidgets/a11y
  112. ^ Section 508 accessibility improvements – v3.0 roadmap
  113. ^ Built-in Accessibility in GWT 1.5 Applications
  114. ^ Qooxdoo's "Extreme JavaScript" paradigm
  115. ^ Yahoo! UI Graded Browser Support
  116. ^ jQuery UI has ARIA support
  117. ^ Visual Designer for DHTMLX
  118. ^ Wavemaker, Aptana Studio
  119. ^ EchoStudio 3
  120. ^ [7], Theme Builder, Custom build tool
  121. ^ Netbeans has jQuery support
  122. ^ jQuery API
  123. ^ MooTools-core Documentation
  124. ^ MooTools-more Document
  125. ^ Custom build, JS Linker, API generation, Unit test framework, etc.
  126. ^ Wakanda Studio
  127. ^ CSS Grid Builder, YUI Test Utility, Profiler, Logger Control
  128. ^ 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.
  129. ^ o.DojoToolkit.Org/offline says "Dojo Offline is no longer supported after Dojo 1.3"
  130. ^ Google API Libraries for Google Web Toolkit
  131. ^ Pyjamas Desktop
  132. ^ http://yuilibrary.com/gallery/show/storage-lite
  133. ^ 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
  134. ^ [8]
  135. ^ http://docs.dojocampus.org/dojox/gfx
  136. ^ MooTools ART
  137. ^ http://books.zkoss.org/wiki/Small_Talks/2010/June/How_To_Use_Canvas4Z
  138. ^ Some JavaScript libraries include widgets for Charts, Gauges, and other data visualizations.
  139. ^ [9]
  140. ^ dhtmlxChart
  141. ^ http://docs.dojocampus.org/dojox/charting
  142. ^ http://dev.sencha.com/deploy/dev/docs/?class=Ext.chart.Chart Chart API
  143. ^ jQuery Visualize Plugin
  144. ^ [10]
  145. ^ [11]
  146. ^ [12]
  147. ^ a b c d e http://docs.jquery.com/Browser_Compatibility
  148. ^ a b c d http://docs.dojocampus.org/releasenotes/1.4
  149. ^ http://developer.yahoo.com/yui/articles/gbs/
  150. ^ http://openrico.org/resources
  151. ^ http://www.sencha.com/products/js/