Comparison of web application frameworks

From Wikipedia, the free encyclopedia

This is a comparison of notable web application frameworks.

Contents

[edit] General

Basic general information about the features

Project Current Stable Version Language License
Ajile 1.2.1 JavaScript MPL 1.1 / LGPL 2.1 / GPL 2.0
Akelos 0.8 PHP LGPL
Apache Cocoon 2.1.11 Java Apache
Apache Struts 2.0.11 Java Apache
AppFuse Java
ASP Xtreme Evolution 1.0 VBScript LGPL
Aranea MVC 1.0.10 Java Apache
Axiom Stack 3.2.2 Javascript BSD / Proprietary
BarracudaDrive 3.9 Lua (LSP) Commercial
BFC 7.40 ASP.NET Base One EULA
CakePHP 1.1.18.5850 PHP MIT
Camping 1.5 Ruby MIT
Canvas Framework PHP
Catalyst 5.7011 Perl GPL/Artistic
CherryPy 3.0.2 Python BSD
Click Framework 1.4.1 Java Apache
CodeIgniter 1.6.2 PHP Apache/BSD-style open source license
ColdBox Framework 2.5.1 ColdFusion Apache 2.0 open source license
ColdSpring ColdFusion
CSLA ASP.NET
DIY Framework PHP
Django 0.96.2 Python BSD
DotNetNuke 4.8.0 ASP.NET BSD
Drupal 6.2 PHP GPL
ErlyWeb 0.7 Erlang
eZ Components 2007.2 PHP BSD
Flex 3.0 ActionScript, MXML Mozilla Public License
FUSE PHP
Fusebox 5.1 ColdFusion Apache
Google Web Toolkit Java Apache
Grok 0.12 Python Zope Public License
Grails 1.0.3 Groovy (JVM) Apache
Hamlets 1.4 Java BSD
Helma 1.6 Javascript Apache
Horde PHP
Interchange Perl
ItsNat Java AGPLv3/Proprietary
IT Mill Toolkit Java
JavaServer Faces Java
JBoss Seam 2.0.0 GA Java LGPL
jZeno 1.0.36 Java LGPL
Kohana 2.1.1 PHP BSD
Lift 0.6.0 Scala (JVM) Apache
Mason Perl
Maypole Perl
Mach-II 1.5 ColdFusion Apache
Model-Glue 2.0 ColdFusion Apache
MonoRail 1.0 RC3 ASP.NET Apache
Morfik 1.3.1.18 Basic,Pascal,Java,C# Commercial
Nitro 0.41 Ruby BSD
onTap 3.0 ColdFusion BSD
OpenACS 5.3.2 Tcl GPL
OpenLaszlo Java
OpenXava 2.2.4 Java LGPL
Play! r160 Java GPL
Pal 0.1 PHP Apache
PRADO 3.1.1 PHP BSD
Pylons (web framework) 0.9.6 Python BSD
Qcodo 0.3.32 PHP MIT License
Reasonable Server Faces (RSF) Java
RIFE 1.6.2 Java Apache
Ruby on Rails 2.0.2 Ruby MIT/Ruby
Seaside 2.8 Smalltalk MIT License
Shale Framework (software) Java
Simplicity PHP framework PHP GPL
SilverStripe / Sapphire 2.2.2 PHP BSD
SmartClient Java
Spring Framework 2.5 Java Apache
Stripes 1.4.3 Java LGPL
Symfony 1.0.12 PHP MIT
Tapestry 4.1.3/5.0.7 Java Apache
ThinWire 1.2 Java GPL
Thunder Light 0.8 PHP LGPL
TurboGears 1.0.4.4 Python MIT License, LGPL
Web2py 1.30 Python GPL with a commercial exception.
WebObjects 5.4.1 Java Proprietary
WebWork Java
Wicket framework 1.3.3 Java Apache
Widgetplus framework 0.0.8 JavaScript GPL
Zend Framework 1.5 PHP BSD
ZK Framework 3.0.1 Java GPL
Zoop Framework 1.2 PHP ZPL
Zope2 2.10 Python ZPL
Zope3 3.3 Python ZPL
ztemplates Java Apache
Lion framework PHP MIT License,
Project Current Stable Version Language License

[edit] Comparison of features

Project Language Ajax MVC framework MVC Push/Pull i18n & l10n? ORM Testing framework(s) DB migration framework(s) Security Framework(s) Template Framework(s) Caching Framework(s) Form Validation Framework(s)
Ajile JavaScript Yes Yes Push & Pull Yes Yes, jsUnit Yes Yes
Akelos PHP Framework PHP Yes, Prototype, script.aculo.us Yes, Active record pattern Push Yes Yes, Active record pattern Yes, Unit Tests Yes Yes Yes Yes
Apache Struts Java Yes Push Yes Yes Yes, Unit Tests Yes, Jakarta Tiles framework Yes, Jakarta Validator framework
Apache Struts 2 (ex. WebWork) Java Yes Push & Pull Yes Yes Yes, Unit Tests Yes Yes
Aranea MVC Java Yes Pull Yes Yes
BarracudaDrive LSP Lua Yes and JSON-RPC Yes Push & Pull Yes,Limited Yes,Limited Yes Yes, ACL-based Yes Yes, See CMS for demo Yes, Limited
BFC .NET Yes Yes, but not mandatory Push & Pull Yes Yes, through active data dictionary Yes, Unit Tests Yes, SQL Server, Oracle, DB2, Sybase, MySQL Yes, security groups and rules Yes Yes, metadata and result sets Yes, data dictionary-driven
CakePHP PHP Yes, Prototype, script.aculo.us Yes, Active record pattern Push Yes, Development branch Yes, Active record pattern Yes, Unit Tests Yes Yes, ACL-based Yes Yes, Development branch Yes
Camping Ruby No Yes Push No Yes, Active record pattern Yes, via Mosquito Yes No Yes No No
Catalyst Perl Yes, multiple (Prototype, Dojo...) Yes Push in its most common usage Yes Yes, multiple (DBIx::Class, Rose::DB...) Yes[1] Yes, multiple (ACL-based, external engines...) Yes, multiple (Template::Toolkit, HTML::Template, HTML::Mason...) Yes, multiple (Memcached, TurckMM, shared memory,...) Yes, multiple (HTML::FormValidator,...)
CherryPy Python Yes No, because unittest and doctest are standard Python modules Yes, CherryTemplate Yes
Click Framework Java Yes Yes Pull Yes Yes, integrates with Hibernate and Cayenne Yes, Velocity and JSP Yes, built-in validation
CodeIgniter PHP Yes, Framework extension Yes, Modified Active record pattern Push Yes Yes, framework extension Yes, Unit Tests No Yes Yes Yes Yes
ColdBox Framework ColdFusion Yes, various libraries Yes Push & Pull (via Viewlets) Yes Yes, Transfer & Reactor Yes, Unit Tests No Yes, via plugins or interceptors Yes ColdBox Cache Manager and externally pluggable. Yes
Django Python Yes Yes Push Yes Yes, Django ORM, SQLAlchemy Yes No Yes, ACL-based Yes Yes Yes
DotNetNuke .NET Yes No Pull Yes Yes, SubSonic, NHibernate Yes, Unit Tests Yes Yes, ACL-based, (OpenID, LiveID, Active Directory, LDAP, CardSpace, ASP.NET Forms Auth) Yes Yes, Pluggable Yes, ASP.NET Validators, built-in API
Drupal PHP Yes, jQuery Yes No Yes, simpletest, devel Yes, Schema API Yes, multiple (OG, Node Privacy By Role, ACL, Taxonomy Access List) Yes, multiple (PHPTemplate, Smarty, XTemplate, others) Yes, multiple (builtin, memcache, APC) Yes, Form API
eZ Components PHP No Yes Yes Yes Yes Yes Yes Yes Yes
Flex Actionscript, MXML No Yes,FlexUnit
FUSE PHP Yes Yes Push Yes, custom Yes Yes, SimpleTest Yes Yes Yes Yes
Fusebox ColdFusion, PHP Yes Yes, but not mandatory Push No, custom Yes, via lexicons for Transfer and Reactor Yes, CFUnit, CFCUnit Yes, multiple plugins available Yes, via lexicon for ColdSpring Yes, via qforms or built in cf validation
Grails Groovy Yes Active record pattern Push Yes Yes, GORM, Hibernate Yes, Unit Test No Yes Yes Yes Yes
Grok (web framework) Python Yes, Yes Pull Yes Yes, OODBMS called ZODB, SQLAlchemy, Storm Yes, Unit Tests, Functional Tests Yes, ZODB Generations Yes Yes Yes Yes
JBoss Seam Java Yes Pull Yes Yes, JPA, Hibernate Yes, JUnit, TestNG Yes, JAAS integration Yes, Facelets Yes, Hibernate Validator
jZeno Java Yes Yes Pull No, custom Yes Hibernate Yes, JUnit, TestNG Yes, role-based Yes, Composite Pattern Yes Yes
Kohana PHP Yes Push Yes Yes, framework extension Yes, unit_test module Yes, File and SQLite Driver based caches Yes
Lift Scala Yes Yes Yes Yes
Mach-II ColdFusion Yes, via CF or any JavaScript Library Yes Push Yes, via custom plugin Yes Transfer, Reactor, Hibernate Yes, CFUnit, CFCUnit Yes, via plugin Yes, ColdSpring
MonoRail .NET Yes, Prototype Active record pattern Push Yes Yes, Active record pattern Yes, Unit Tests Yes, via ASP.NET Forms Authentication Yes Yes Yes
Nitro Ruby Yes, jQuery Yes Push Yes Yes, Og Yes, RSpec Yes (automatic) Yes Yes Yes Yes
onTap ColdFusion Yes, native features + Prototype + script.aculo.us Yes, but not mandatory Push Yes Yes Yes, CFUnit, CFCUnit has potential - supports multiple db platforms Yes, Members onTap Plugin Yes Yes Yes, client + server
OpenXava Java No Yes, Model Driven Yes Yes, JPA, Hibernate and EJB2 CMP Yes, JUnit Yes, Hibernate tools Yes, uses JSR-168 portal security UI is automatically generated Yes, uses portal and JPA caching Yes
Pal PHP5 Yes, Ajax Components Yes Push and Pull No, roll your own Yes, optional Active record pattern, arbitrary SQL No, still not completed Yes, via plugins and filters Yes, via plugins Yes, allows both memcache and caching pages Yes, built-in extensible validation
PRADO PHP5 Yes, Active Controls Yes Push Yes Yes, Active record pattern, SQLMap Yes, PHPUnit, SimpleTest, Selenium (software) Yes, modular and role-based ACL Yes Yes Yes
Pylons Python Yes, helpers for Prototype and script.aculo.us Yes Push Yes Yes, SQLObject, SQLAlchemy Yes, via nose Yes, pluggable (mako, genshi, myghty, kid, ...) Yes, Beaker cache (memory, memcached, file, databases) Yes, preferred formencode
Qcodo PHP5 Yes, built-in Yes, QControl Push Yes Yes, Code Generation-based Inherent Yes, QForm and QControl Yes Yes
RIFE Java Yes, DWR (Java) Yes Push & Pull Yes Yes Yes, Out of container testing Yes Yes Yes, Integration with Terracotta Yes
Ruby on Rails Ruby Yes, Prototype, script.aculo.us Yes, ActiveRecord, Action Pack Push Yes, Localization Plug-in Yes, ActiveRecord Yes, Unit Tests, Functional Tests and Integration Tests Yes Yes, Plug-in Yes Yes Yes
Seaside Smalltalk Yes, Prototype, script.aculo.us, ... Yes Yes, GLORP, Gemstone/S, ... Yes, Unit Tests, SUnit No, intentionally Yes, Magritte
SilverStripe/Sapphire PHP 5.2+ Yes, Prototype, script.aculo.us Yes, Active record pattern Push & Pull Yes Yes, Active record pattern Yes, Unit Tests Yes (Automatic) Yes incl. OpenID Yes (object oriented) Yes Yes
Spring Framework Java Yes Yes Yes hibernate, iBatis, etc Yes, Acegi Commons Tiles, velocity etc Commons Validator
Stripes Java Yes Yes Push Yes Yes, Hibernate Yes Yes, framework extension Yes Yes
Symfony PHP5 Yes, Prototype, script.aculo.us, Unobtrusive Ajax with UJS and PJS plugins Yes Push Yes Yes, Propel, Doctrine Yes Plugin exists (alpha code, though) Yes, plugin Yes Yes Yes
Tapestry Java Yes Yes Pull Yes Yes, integrated with Hibernate(tapestry-hibernate module) Yes, tapestry5-acegi library Yes Yes, built-in validation system
Tigermouse PHP5 Yes, it is mostly Ajax-only framework Yes, Active record pattern Push Yes Yes, Active record pattern No No, Multiple RBMSes and access libraries supported Yes, through intercepting filters (ACL-based, customizable) Yes No Yes
TurboGears Python Yes, MochiKit Yes Push Yes Yes, SQLObject, SQLAlchemy Yes, nose No Yes, pluggable authentication providers, user->group<-permissions schema Yes, pluggable: Kid, Genshi, any Buffet-compatible engine No Yes, TurboGears widgets, ToscaWidgets, both utilizing FormEncode
web2py Python Yes Yes Push Yes Yes Yes Yes Yes Yes Yes Yes
WebObjects Java Yes Yes Push & Pull Yes Yes, EOF Yes, WOUnit (JUnit), TestNG, Selenium (software) Yes, in Project WONDER Yes Yes Yes
Wicket Java Yes Modular event driven Push Yes Yes Yes Yes Yes Yes
Widgetplus JavaScript Yes it is mostly Ajax-only framework Yes Push & Pull Yes No, Yes, No, Yes Yes Yes Yes
Zend Framework PHP5 (>=5.1.4) Yes, various libraries Yes Push Yes Yes, Table and Row data gateway Yes, Unit Tests Yes Yes, ACL-based Yes Yes Yes
ZK Framework Java Yes, 170+ Ajax components Yes Push & Pull Yes Yes, any ORM frameworks, such as Hibernate, TopLink Yes, Unit Tests, Functional Tests Yes, plugin, like Acegi Yes, DSP, Velocity, JSP, others pluggable Yes Yes, constraint, event validation, others pluggable
Zope2 Python Yes Pull Yes Yes, native OODBMS called ZODB, SQLObject, SQLAlchemy Yes, Unit Tests Yes, ACL-based Yes Yes Yes, CMFFormController
Zope3 Python Yes, via add-on products, e.g. Plone w/KSS Yes Pull Yes Yes, native OODBMS called ZODB, SQLObject, SQLAlchemy Yes, Unit Tests, Functional Tests Yes, ZODB generations Yes, ACL-based Yes Yes Yes
ztemplates Java jdk 1.5 or newer Yes, integrates YUI, Google etc. with annotations Yes Push, multiple actions per url Yes, standard Java Yes, use any J2EE ORM framework Yes, Unit Tests Yes, annotation based Yes, Velocity, JSP, others pluggable Yes, ZProperty
Lion Framework PHP Yes Yes Yes Push & Pull Yes No Yes No Yes Yes Yes Yes
Project Language Ajax MVC framework MVC Push/Pull i18n & l10n? ORM Testing framework(s) DB migration framework(s) Security Framework(s) Template Framework(s) Caching Framework(s) Form Validation Framework(s)

[edit] References

  1. ^ Catalyst::Manual::Tutorial::Testing - Catalyst Tutorial - Part 7: Testing - search.cpan.org

[edit] See also

Languages