Comparison of web application frameworks

From Wikipedia, the free encyclopedia

Jump to: navigation, search

This is a comparison of notable web application frameworks.

Contents

[edit] General

Basic information about each framework.

Project Current Stable Version Language License
AIDA/Web 5.6 Smalltalk MIT
Ajile 1.2.1 JavaScript MPL / GPL / LGPL
Akelos 0.8 PHP LGPL
Apache Click 1.5 Java Apache
Apache Cocoon 2.2.0 Java Apache
Apache Struts 2.0.12 Java Apache
Apache Wicket 1.3.3 Java Apache
AppFuse 2.0.2 Java Apache
Aranea 1.0.10 Java Apache
Axiom Stack 3.2.6 Javascript AGPL / Proprietary
BFC 7.40 ASP.NET Proprietary
CakePHP 1.2.2.8120 PHP MIT
Camping 1.5 Ruby MIT
Catalyst 5.7014 Perl GPL / Artistic
CherryPy 3.1 Python BSD
CodeIgniter 1.7.1 PHP BSD-style
ColdSpring ColdFusion
CSLA ASP.NET
Django 1.0.2 Python BSD
DotNetNuke 4.8.0 ASP.NET BSD
Drupal 6.10 PHP GPL
eZ Components 2008.2.1 PHP BSD
Flex 3.0 ActionScript, MXML MPL
FUSE 1.2 PHP MIT
Fusebox 5.1 ColdFusion Apache
Google Web Toolkit 1.6.4 Java Apache
Grok 0.14 Python ZPL
Grails 1.0.4 Groovy (JVM) Apache
Hamlets 1.4 Java BSD
Horde 3.2 PHP LGPL
Interchange 5.6.1 Perl GPL
ItsNat Java AGPL / Proprietary
IT Mill Toolkit 5.3.0 Java Apache
JavaServer Faces 1.2 Java
JBoss Seam 2.1.1 GA Java LGPL
Kepler 1.1 Lua MIT
Kohana 2.3 PHP BSD
Lift 0.6.0 Scala (JVM) Apache
LISA 0.1.6 PHP GPL
ManyDesigns Portofino 1.0.12 Java GPL
Mason Perl GPL / Artistic
Maypole Perl GPL / Artistic
Mach-II 1.6 CFML 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# Proprietary
Nette 0.8 PHP BSD-style
Nitro 0.41 Ruby BSD
onTap 3.2 ColdFusion BSD
OpenACS 5.4.3 Tcl GPL
OpenLaszlo 4.1 Java Common Public License
OpenXava 3.1 Java LGPL
Orbit 2.0.1 Lua MIT
PEAR 1.4.0 PHP PHP / Various
Orinoco PHP MIT
Pyjamas 0.5 Python Apache
Pylons 0.9.6 Python BSD
Qcodo 0.3.32 PHP MIT
Qcubed 1.0 stable PHP MIT
Reasonable Server Faces Java
RIFE 1.6.2 Java Apache
Ruby on Rails 2.3 Ruby MIT / Ruby
Seaside 2.8 Smalltalk MIT
Shale 1.0.4 Java Apache
Simplicity PHP GPL
SilverStripe (Sapphire) 2.3.0 PHP BSD
SmartClient Java LGPL
Sofia 2.3 Java GPL
SPIP 1.9.2 PHP GPL
Spring 2.5.6 Java Apache
Stripes 1.4.3 Java LGPL
Symfony 1.2.5 PHP MIT
Tapestry 4.1.6/5.0.18 Java Apache
ThinWire 1.2 Java GPL
Tigermouse PHP
TurboGears 1.0.8 Python MIT / LGPL
Wavemaker 4.0.2 JavaScript AGPL
web2py 1.54 Python GPL with a commercial exception
WebObjects 5.4.3 Java Proprietary
WebWork 2.2.6 Java Apache
Zend 1.7.8 PHP BSD
ZK 3.6.0 Java GPL
Zoop 1.2 PHP ZPL
Zope 2 2.10 Python ZPL
Zope 3 3.3 Python ZPL
ztemplates 0.9.9.6 Java Apache
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)
AIDA/Web Smalltalk Prototype, script.aculo.us Yes Gemstone/S, GLORP, etc. SUnit Yes
Ajile JavaScript Yes Yes Push & Pull Yes jsUnit Yes Yes
Akelos PHP Prototype, script.aculo.us Active record pattern Push Yes Active record pattern Unit Tests Yes Yes Yes Yes
Apache Click Java Yes Yes Pull Yes Hibernate and Cayenne Velocity and JSP Built-in validation
Apache Struts Java Yes Yes Push & Pull Yes Yes Unit Tests Yes Yes
Apache Wicket Java Yes Modular event driven Pull Yes Yes Yes Yes Yes Yes
Aranea Java Yes Pull Yes Yes mapping-applications using contributions from users to advantage
BFC ASP.NET Yes Not mandatory Push & Pull Yes through active data dictionary Unit Tests SQL Server, Oracle, DB2, Sybase, MySQL security groups and rules Yes metadata and result sets data dictionary-driven
CakePHP PHP Prototype, script.aculo.us Active record pattern Push Yes Active record pattern Unit Tests Yes ACL-based Yes Yes Yes
Camping Ruby No Yes Push No Active record pattern via Mosquito Yes No Yes No No
Catalyst Perl Toolkit-independent (REST & JSON support, specific plugins for Prototype etc.) Yes Push in its most common usage Yes DBIx::Class, Rose::DB, etc. [1] ACL-based, external engines, etc. Template::Toolkit, HTML::Template, HTML::Mason, etc. Cache, Memcached, shared memory, etc. HTML::FormFu, HTML::FormValidator, etc.
CherryPy Python Yes No, because unittest and doctest are standard Python modules CherryTemplate Yes
CodeIgniter PHP framework extension Modified active record pattern Push Yes framework extension Unit Tests No Yes Yes Yes Yes
Django Python Yes Yes Push Yes Django ORM Yes No (plugin exists, might be merged into trunk when more stable and feature complete) ACL-based Yes Yes Yes
DotNetNuke ASP.NET Yes No Pull Yes SubSonic, NHibernate Unit Tests Yes ACL-based (OpenID, LiveID, Active Directory, LDAP, CardSpace, ASP.NET Forms Auth) Yes Pluggable ASP.NET Validators, built-in API
Drupal PHP jQuery Yes[2][3] Yes[4][5] multiple (CCK, QCubed)[6] simpletest, devel Schema API OG, Node Privacy By Role, ACL, Taxonomy Access List PHPTemplate, Smarty, XTemplate, others builtin, memcache, APC Form API
eZ Components PHP No Yes Yes Yes Yes Yes Yes Yes Yes Yes
Flex Actionscript, MXML Not by name but similar technology [7] FlexUnit
FUSE PHP Yes Yes Push custom Yes SimpleTest Yes Yes Yes Yes
Fusebox ColdFusion, PHP Yes Not mandatory Push No, custom via lexicons for Transfer and Reactor CFUnit, CFCUnit multiple plugins available via lexicon for ColdSpring via qforms or built in cf validation
Google Web Toolkit Java, Javascript Yes Yes  ???, no direct data access JUnit (too early), jsUnit (too difficult), Selenium (best) No
Grails Groovy Yes Active record pattern Push Yes GORM, Hibernate Unit Test multiple plugins(autobase, dbmigrate, etc.) Yes Yes Yes Yes
Grok Python Yes Yes Pull Yes OODBMS called ZODB, SQLAlchemy, [[Storm (software)}|Storm]] Unit Tests, Functional Tests ZODB Generations Yes Yes Yes Yes
ItsNat Java Yes event driven Push using Java i18n external and built-in pluggable pure HTML/SVG page caching normal Java
IT Mill Toolkit Java GWT Pull Yes Yes JUnit, IT Mill Testing Tools Yes Yes
JBoss Seam Java Yes Pull Yes JPA, Hibernate JUnit, TestNG JAAS integration Facelets Hibernate Validator
Kohana PHP Yes Push Yes framework extension unit_test module File and SQLite Driver based caches Yes
Lift Scala Yes Yes Yes Yes
Mach-II CFML via CF or any JavaScript Library Yes Push via custom plugin Transfer, Reactor, Hibernate CFUnit, CFCUnit via plugin ColdSpring
Midgard PHP jQuery MidCOM Pull Yes Midgard PHPUnit datagard ACL-based PHP and TAL memcache Yes
MonoRail ASP.NET Prototype Active record pattern Push Yes Active record pattern Unit Tests via ASP.NET Forms Authentication Yes Yes Yes
Nette PHP 5 (>=5.1.4) Toolkit-independent Not mandatory Push & Pull Yes via extension dibi Yes ACL-based multiple multiple client + server, extensible
Nitro Ruby jQuery Yes Push Yes Og RSpec (automatic) Yes Yes Yes Yes
onTap ColdFusion native features + Prototype + script.aculo.us optional Push Yes DataFaucet [3] CFUnit, CFCUnit, MXUnit DataFaucet has potential - supports multiple db platforms Members onTap Plugin very extensible Yes client + server, extensible
OpenACS TCL Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
OpenXava Java Yes Model Driven Yes JPA, Hibernate and EJB2 CMP JUnit Hibernate tools uses JSR-168 portal security UI is automatically generated uses portal and JPA caching Yes
Orinoco PHP Toolkit-independent Yes Push & Pull Yes
PEAR PHP
Pyjamas Python

, Javascript

Yes Yes  ???, no direct data access No
Pylons Python helpers for Prototype and script.aculo.us Yes Push Yes SQLObject, SQLAlchemy via nose pluggable (mako, genshi, myghty, kid, etc.) Beaker cache (memory, memcached, file, databases) preferred formencode
Qcodo PHP 5 built-in QControl Push Yes Code Generation-based Inherent QForm and QControl Yes Yes
RIFE Java DWR (Java) Yes Push & Pull Yes Yes Out of container testing Yes Yes Integration with Terracotta Yes
Ruby on Rails Ruby Prototype, script.aculo.us ActiveRecord, Action Pack Push Localization Plug-in ActiveRecord Unit Tests, Functional Tests and Integration Tests Yes Plug-in Yes Yes Yes
Seaside Smalltalk Prototype, script.aculo.us, etc. Yes GLORP, Gemstone/S, etc. Unit Tests, SUnit No, intentionally Magritte
SilverStripe (Sapphire) PHP 5 (>=5.2) Prototype, script.aculo.us Active record pattern Push & Pull Yes Active record pattern Unit Tests (Automatic) incl. OpenID (object oriented) Yes Yes
Spring Java Yes Yes Hibernate, iBatis, etc Spring Security (formerly Acegi) Commons Tiles, Velocity, etc. ehcache etc. Commons Validator
Stripes Java Yes Yes Push Yes Hibernate Yes framework extension Yes Yes
Symfony PHP 5 Prototype, script.aculo.us, Unobtrusive Ajax with UJS and PJS plugins Yes Push Yes Propel, Doctrine Yes Plugin exists (alpha code, though) plugin Yes Yes Yes
Tapestry Java Yes Yes Pull Yes integrated with Hibernate (tapestry-hibernate module) tapestry5-acegi library Yes built-in validation system
Tigermouse PHP 5 it is mostly Ajax-only framework Active record pattern Push Yes Active record pattern No No, Multiple RBMSes and access libraries supported through intercepting filters (ACL-based, customizable) Yes No Yes
TurboGears Python MochiKit Yes Push Yes SQLObject, SQLAlchemy nose No pluggable authentication providers, user->group<-permissions schema pluggable: Kid, Genshi, any Buffet-compatible engine No TurboGears widgets, ToscaWidgets, both utilizing FormEncode
Wavemaker JavaScript (client), Java (server) Dojo Toolkit Yes Push Dojo Toolkit Hibernate (Java) JUnit Hibernate (Java) Spring Security, Acegi, Role-based access control Dojo Toolkit Dojo Toolkit 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 EOF WOUnit (JUnit), TestNG, Selenium in Project WONDER Yes Yes Yes
Zend PHP 5 (>=5.1.4) Toolkit-independent Yes Push Yes Table and Row data gateway Unit Tests Yes ACL-based Yes Yes Yes
ZK Java Yes. Direct RIA architecture, 200+ Ajax components Yes Push & Pull Yes any ORM frameworks, such as Hibernate, TopLink Unit Tests, Functional Tests plugin, like Acegi DSP, Velocity, JSP, others pluggable Yes constraint, event validation, others pluggable
Zope 2 Python Yes Pull Yes native OODBMS called ZODB, SQLObject, SQLAlchemy Unit Tests ACL-based Yes Yes CMFFormController
Zope 3 Python via add-on products, e.g. Plone w/KSS Yes Pull Yes native OODBMS called ZODB, SQLObject, SQLAlchemy Unit Tests, Functional Tests ZODB generations ACL-based Yes Yes Yes
ztemplates Java JDK 1.5 or newer integrates YUI, Google etc. with annotations Yes Push, multiple actions per URL standard Java use any J2EE ORM framework Unit Tests annotation based Velocity, FreeMarker, JSP, others pluggable AJAX validation on server and form state update (YUI, JSON)
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. ^ [1]
  5. ^ [2]
  6. ^ QDrupal
  7. ^ URLRequest

[edit] See also

Personal tools
Languages