This is a comparison of notable web application frameworks.
General
Basic information about each framework.
Perl
PHP
Java
Python
Ruby
Project |
Current Stable Version |
Release Date |
License |
Summary |
ColdFusion on Wheels |
1.0 |
24 November 2009 |
Apache v2 |
A full-stack convention-based MVC framework, inspired by Rails. |
ColdSpring |
1.2 |
12 September 2008 |
Apache v2 |
Dependency Injection and AOP framwork |
Fusebox |
5.5.1 |
8 March 2008 |
Apache |
The oldest CFML framework, supports MVC or not, convention or XML configuration. |
Mach-II |
1.6.1 |
29 March 2009 |
Apache |
An Object-Oriented MVC framework |
Model-Glue |
3.1.185 |
11 August 2009 |
Apache |
An Object-Oriented MVC implicit invocation, for web and RIA |
onTap |
3.3 |
7 November 2009 |
BSD |
A full-stack MVC framework with integrated ORM |
ASP.NET
Other
Comparison of Features
ASP.NET
Project |
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) |
ASP.NET MVC |
Yes |
Yes |
Push |
|
ORM-independent |
Unit Tests |
|
ASP.NET Forms Auth |
pluggable (default is WebForms) |
Yes |
Yes (client-side via plugins) |
BFC |
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 |
DotNetNuke |
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 |
MonoRail |
Prototype |
Active record pattern |
Push |
Yes |
Active record pattern |
Unit Tests |
|
via ASP.NET Forms Authentication |
Yes |
Yes |
Yes |
Vici MVC |
Yes |
Yes |
Push |
Yes |
ORM-independent |
Unit Tests |
|
via ASP.NET Forms Authentication |
Yes |
No |
Yes |
Project |
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) |
C++
Project |
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) |
CppCMS |
|
Yes |
Push |
Yes |
Limited, SQL library |
No |
No |
No |
Yes |
Yes |
Yes |
Wt |
Yes |
Yes |
Push & Pull |
Yes |
No |
|
|
Yes |
No |
No |
Yes |
Project |
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) |
CFML
Java
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) |
Apache Click |
Java |
Yes |
Page Oriented |
Pull |
Yes |
Hibernate and Cayenne |
Yes |
|
Template:Pluggable |
Velocity and JSP |
Template:Cached Templates |
Built-in validation |
Sling |
Java |
Yes |
Yes |
Push & Pull |
|
Uses JCR content repository |
|
|
Yes |
Yes |
Yes |
Apache Struts |
Java |
Yes |
Yes |
Push & Pull |
Yes |
Yes |
Unit Tests |
|
|
Yes |
|
Yes |
Apache Wicket |
Java |
Yes, extensions for YUI, ExtJS and more |
Modular event driven |
Pull |
Yes |
Yes, thanks to extensions |
Yes, mock objects, unit and integration tests through an extension |
|
Yes |
Yes |
Yes |
Yes |
Aranea |
Java |
Yes |
|
Pull |
Yes |
Yes |
|
|
|
mapping-applications using contributions from users to advantage |
|
|
IT Mill Toolkit |
Java |
GWT |
|
Pull |
Yes |
Yes |
JUnit, IT Mill Testing Tools |
|
|
Yes |
|
Yes |
ItsNat |
Java |
Yes |
event driven |
Push |
using Java i18n |
|
external and built-in |
|
pluggable |
pure HTML/SVG |
page caching |
normal Java |
JBoss Seam |
Java |
Yes |
Yes |
Pull |
Yes |
JPA, Hibernate |
JUnit, TestNG |
|
JAAS integration, Drools, Hibernate Filters, OpenID, CAPTCHA |
Facelets |
JbossCache, EHCache |
Hibernate Validator |
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 |
RIFE |
Java |
DWR (Java) |
Yes |
Push & Pull |
Yes |
Yes |
Out of container testing |
|
Yes |
Yes |
Integration with Terracotta |
Yes |
Spring |
Java |
|
Yes |
|
Yes |
Hibernate, iBatis, etc |
Yes, mock objects & unit tests |
|
Spring Security (formerly Acegi) |
Commons Tiles, Velocity, etc. |
ehcache etc. |
Commons Validator |
Stripes |
Java |
Yes |
Yes |
Push |
Yes |
Hibernate |
Yes |
|
framework extension |
Yes |
|
Yes |
Tapestry |
Java |
Yes |
Yes |
Pull |
Yes |
integrated with Hibernate (tapestry-hibernate module) |
|
|
tapestry5-acegi library |
Yes |
|
built-in validation system |
Vaadin |
Java |
GWT |
|
Pull |
Yes |
Yes |
Yes |
|
|
Yes |
|
Yes |
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 |
WebObjects |
Java |
Yes |
Yes |
Push & Pull |
Yes |
EOF |
WOUnit (JUnit), TestNG, Selenium |
in Project WONDER |
|
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) |
Google Web Toolkit |
Java, Javascript |
Yes |
|
|
Yes |
???, no direct data access |
JUnit (too early), jsUnit (too difficult), Selenium (best) |
No |
|
|
|
|
ZK |
Java, ZUML |
Yes |
Yes |
|
Yes |
any J2EE ORM framework |
|
|
|
|
|
|
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) |
PHP
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) |
AgilePHP |
PHP |
Toolkit-independent |
Yes |
Push,Pull,Component-based |
Yes |
Yes |
PHPUnit |
|
Yes |
Any template engine supported |
Yes |
Yes |
CakePHP |
PHP |
Prototype/script.aculo.us, jQuery/jQuery UI, MooTools/MooTools more |
Active record pattern (CakePHP 1.x), Data Mapper Pattern (CakePHP 2.x) |
Push |
Yes |
Active record pattern (CakePHP 1.x), Data Mapper Pattern (CakePHP 2.x) |
Unit Tests, Object Mocking, Fixtures, Code Coverage, Memory Analysis with SimpleTest and XDebug |
Yes |
ACL-based |
Themes, Layouts, Views and Elements |
Memcache, Xcache, APC, File |
Validation and Security |
CodeIgniter |
PHP |
framework extension |
Modified active record pattern |
Push |
Yes |
framework extension |
Unit Tests |
No |
Yes |
Yes |
Yes |
Yes |
Drupal |
PHP |
jQuery |
Yes[1][2] |
|
Yes[3][4] |
multiple (CCK, QCubed)[5] |
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 |
Fat-Free |
PHP |
Library-agnostic |
Yes |
Push |
Yes |
Framework global variable |
|
PDO-based |
Built-in |
Built-in |
Symbol table |
Yes |
FUSE |
PHP |
Yes |
Yes |
Push |
custom |
Yes |
SimpleTest |
|
Yes |
Yes |
Yes |
Yes |
Fusebox |
PHP |
Yes |
Not mandatory |
Push |
No, custom |
|
|
|
multiple plugins available |
|
|
via qforms or built in PHP validation |
Kohana |
PHP |
|
Yes |
Push |
Yes |
framework extension |
unit_test module |
|
|
Yes |
File and SQLite Driver based caches |
Yes |
Midgard |
PHP |
jQuery |
MidCOM |
Pull |
Yes |
Midgard |
PHPUnit |
datagard |
ACL-based |
PHP and TAL |
memcache |
Yes |
PEAR |
PHP |
|
|
|
|
|
|
|
|
|
|
|
Qcodo |
PHP 5 |
built-in |
QControl |
Push |
Yes |
Code Generation-based |
|
Inherent |
|
QForm and QControl |
Yes |
Yes |
Swiftlet |
PHP 5 (>=5.1) |
jQuery |
Yes |
Push |
Yes |
|
Yes |
|
Yes |
Yes |
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 |
Zend Framework |
PHP 5 (>=5.2.4) |
Toolkit-independent |
Yes |
Push & Pull |
Yes |
Table and Row data gateway |
Unit Tests |
Yes |
ACL-based |
Yes |
Yes |
Yes |
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 |
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) |
Python
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) |
CherryPy |
Python |
|
|
|
Yes |
|
No, because unittest and doctest are standard Python modules |
|
|
CherryTemplate |
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 |
Grok |
Python |
Yes |
Yes |
Pull |
Yes |
OODBMS called ZODB, SQLAlchemy, Storm |
Unit Tests, Functional Tests |
ZODB Generations |
Yes |
Yes |
Yes |
Yes |
Pyjamas |
Python, Javascript |
Yes |
Use PureMVC python version (compiled to javascript) |
|
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 |
TurboGears |
Python |
Toolkit-independent, provides support via JSON |
Yes |
Push |
Yes |
SQLAlchemy (default), SQLObject |
nose |
No |
Repoze.what & Repoze.who |
Genshi, additional plugins available |
Support for memcached, and any WSGI compliant system |
ToscaWidgets, utilizing FormEncode |
web2py |
Python |
Yes |
Yes |
Push |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
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 |
Zope 2 |
Python |
|
Yes |
Pull |
Yes |
native OODBMS called ZODB, SQLObject, SQLAlchemy |
Unit Tests |
|
ACL-based |
Yes |
Yes |
CMFFormController |
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) |
Ruby
Others
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 |
|
|
|
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. |
[6] |
|
ACL-based, external engines, etc. |
Template::Toolkit, HTML::Template, HTML::Mason, etc. |
Cache, Memcached, shared memory, etc. |
HTML::FormFu, HTML::FormValidator, etc. |
Flex |
Actionscript, MXML |
Not by name but similar technology [7] |
|
|
|
|
FlexUnit |
|
|
|
|
|
Grails |
Groovy |
Yes |
Active record pattern |
Push |
Yes |
GORM, Hibernate |
Unit Test,Integration test,Functional test |
multiple plugins(autobase, dbmigrate, etc.) |
Yes |
Yes |
Yes |
Yes |
Lift |
Scala |
Yes |
Yes |
Pull |
Yes |
Yes |
|
Yes |
Yes |
Yes |
Yes |
Yes |
Seaside |
Smalltalk |
Prototype, script.aculo.us, etc. |
|
|
Yes |
GLORP, Gemstone/S, etc. |
Unit Tests, SUnit |
|
|
No, intentionally |
|
Magritte |
OpenACS |
TCL |
Yes |
Yes |
|
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Sproutcore |
Javascript |
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) |
References
- ^ Drupal as an MVC framework
- ^ MVC vs. PAC
- ^ [1]
- ^ [2]
- ^ QDrupal
- ^ Catalyst::Manual::Tutorial::Testing - Catalyst Tutorial - Part 7: Testing - search.cpan.org
- ^ URLRequest
See also
Recent Comments