Wikipedia relies on your donations: please give today.
[Expand]
Support Wikipedia: a non-profit project

Comparison of web application frameworks

From Wikipedia, the free encyclopedia

Jump to: navigation, search

This is a comparison of notable web application frameworks.

Contents

[hide]

[edit] General

Basic general information about the features

Project  ↓ Current Stable Version  ↓ Language  ↓ License  ↓
Agavi 0.11.6 PHP LGPL
AIDA/Web 5.6 Smalltalk MIT
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 1.3.8 Java Apache
Struts2 2.0.11.2 Java Apache
AppFuse Java
ASP Xtreme Evolution 1.0 VBScript LGPL
Aranea MVC 1.0.10 Java Apache
Axiom Stack 3.2.6 Javascript AGPL / Proprietary
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
CJAX 2.0.1 PHP GPL
CherryPy 3.1 Python BSD
Click Framework 1.4.1 Java Apache
CodeIgniter 1.7.0 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 1.0 Python BSD
DotNetNuke 4.8.0 ASP.NET BSD
Drupal 6.6 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
Gantry 3.53 Perl GPL/Artistic
Google Web Toolkit Java Apache
Grok 0.14 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 5.2.9 Java Apache
IVY Framework 0.8 (Pre-Development) PHP BSD
JavaServer Faces Java
JBoss Seam 2.0.0 GA Java LGPL
Jifty Perl
jZeno 1.0.36 Java LGPL
Kiwiki 1.0 Java FineNight Protected License
Kohana 2.2 PHP BSD
Lainsoft Forge 0.8 Java Artistic
LecoWeb 1.2 Java
Lift 0.6.0 Scala (JVM) Apache
Mason Perl
Maypole Perl
Mach-II 1.5 ColdFusion Apache
Merb 1.0 RC2 Ruby MIT
Midgard 8.09 LTS PHP LGPL
Model-Glue 2.0 ColdFusion Apache
MonoRail 1.0 RC3 ASP.NET Apache
Morfik 1.3.1.18 Basic,Pascal,Java,C# Commercial
Nette Framework 0.8 PHP Nette License (BSD-style open source license)
Nitro 0.41 Ruby BSD
onTap 3.2 ColdFusion BSD
OpenACS 5.3.2 Tcl GPL
OpenLaszlo Java
OpenXava 2.2.4 Java LGPL
Orinoco Framework PHP MIT License
PHPulse 3.1.3 PHP GPL
Play! 1.0-stable3 Java Apache 2
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
RoxPHP PHP MIT
Ruby on Rails 2.1 Ruby MIT/Ruby
Seaside 2.8 Smalltalk MIT License
Serenity Application Platform 2008.3.0 PHP
Shale Framework (software) Java
Simplicity PHP framework PHP GPL
SilverStripe / Sapphire 2.2.3 PHP BSD
SmartClient Java
SPIP 1.9.2 PHP GPL
Spring Framework 2.5 Java Apache
Stripes 1.4.3 Java LGPL
Symfony 1.1.1 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
WaveMaker Visual Ajax Studio 4.0 JavaScript Agpl
web2py 1.39 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
Yii Framework 1.0a PHP BSD
Zend Framework 1.6.1 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)  ↓
Agavi PHP Yes, toolkit independent Yes Yes (Push) Yes Yes, multiple Yes No Yes Yes, multiple Yes Yes
AIDA/Web Smalltalk Yes, Prototype, script.aculo.us Yes Yes Yes, Gemstone/S, GLORP, ... Yes, SUnit Yes
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 Yes Push Yes Yes Yes, Unit Tests Yes, Jakarta Tiles framework Yes, Jakarta Validator framework
Struts2 Java Yes Yes Push & Pull Yes Yes Yes, Unit Tests Yes Yes
Aranea MVC Java Yes Pull Yes Yes mapping-applications using contributions from users to advantage
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,...)
CJAX PHP Yes, Yes Push & Pull Yes Yes, (framework extension) Yes Unit Tests Yes, framework extension Yes, framework extension Yes, framework extension Yes, framework extension
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 (plugin exists, might be merged into trunk when more stable and feature complete) 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[2] [3] Yes Yes, multiple (CCK, Qcodo[4]) 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 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
Google Web Toolkit Javascript Sure  ???, no direct data access JUnit (too early), jsUnit (too difficult), Selenium (best) No
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
IVY Framework PHP Yes Yes, MooTools Push No, still not completed Yes No Yes Yes Yes Yes Yes, Data Dictionary
IT Mill Toolkit Java Yes, GWT Pull Yes Yes Yes, JUnit, IT Mill Testing Tools 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
Kiwiki Java Yes Yes Push and Pull Yes Yes Yes Yes Yes
Kohana PHP Yes Push Yes Yes, framework extension Yes, unit_test module Yes, File and SQLite Driver based caches Yes
LecoWeb Java Yes No Yes Yes Yes Yes Yes Yes Yes Yes
Lift Scala Yes Yes Yes Yes
Lainsoft Forge Java, JRuby Yes (not restricted) Yes Yes, via plug-in Yes, via plug-in Yes, via plug-in 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
Midgard PHP Yes, jQuery Yes, MidCOM Pull Yes Yes Midgard Yes, PHPUnit Yes, datagard Yes, ACL-based Yes, PHP and TAL Yes, memcache Yes
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
Nette Framework PHP5 (>=5.1.4) Yes, various libraries Yes, but not mandatory Push & Pull Yes Yes, via extension dibi Yes Yes, ACL-based Yes, multiple Yes, multiple Yes, client + server, extensible
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, optional Push Yes Yes, DataFaucet [1] Yes, CFUnit, CFCUnit, MXUnit DataFaucet has potential - supports multiple db platforms Yes, Members onTap Plugin Yes, very extensible Yes Yes, client + server, extensible
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
Orinoco Framework PHP Yes, Various Libraries Yes Push and Pull 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
PHPulse PHP5 Yes Yes Push Yes No, integrated DB objects No, optional Yes Yes Yes Yes
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
RoxPHP PHP5 Yes Push Yes Yes, Active record pattern No Yes Yes 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 Yes, ehcache 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
WaveMaker Visual Ajax Studio JavaScript (client), Java (server) Yes, Dojo Toolkit Yes Push Yes, Dojo Toolkit Yes, Hibernate (Java) Yes, JUnit Yes, Hibernate (Java) Yes, Spring Security, Acegi, Role-based access control Yes, Dojo Toolkit Yes, Dojo Toolkit Yes, Regular expression, schema-driven validation
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 Pull 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
Yii Framework PHP5 (>=5.1.0) Yes, jQuery-based js lib and widgets Yes Yes, Push and Pull Yes Yes, Active record pattern Yes, PHPUnit Yes, modular and role-based ACL 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, FreeMarker, JSP, others pluggable Yes, AJAX validation on server and form state update (YUI, JSON)
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
  2. ^ Drupal as an MVC framework
  3. ^ MVC vs. PAC
  4. ^ QDrupal

[edit] See also

Languages