Basic information about each framework.
| 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 |
Yes |
ORM-independent |
Unit tests, Functional Tests, Integration Tests |
Entity Framework |
ASP.NET Forms Authentication (Default), Pluggable |
Razor (Default), ASPX, Pluggable |
Yes |
Yes (client-side via plugins) |
| BFC |
Yes |
Not mandatory |
Push & pull |
Yes |
via active data dictionary |
Unit tests |
|
security groups and rules |
Yes |
metadata, 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 Authentication) |
Yes |
Pluggable |
ASP.NET Validators, built-in API |
| Kentico CMS |
Yes |
Yes |
Push & Pull |
Yes |
Proprietary, customizable |
Unit tests |
Yes, Import toolkit |
ACL-based (OpenID, LiveID, Active Directory, LDAP, CardSpace, ASP.NET Forms Authentication, FB connect) |
Yes |
Yes, Customizable |
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 |
| OpenRasta |
No |
Yes |
Push |
Yes |
ORM-independent |
Unit tests |
No |
HTTP Digest and via ASP.NET Forms Authentication or host environment |
Yes |
No |
No |
| 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) |
| ColdBox Platform |
Yes |
Yes |
Push-pull |
Yes |
Yes |
via MockBox, MXUnit, others |
via plugin |
Yes |
Yes |
Yes |
via plugin |
| ColdFusion on Wheels |
Yes |
Yes |
|
via plugin jLingua |
Yes |
Yes integrated RocketUnit |
via plugin |
Yes |
|
via plugin |
Yes |
| Fusebox |
via CF or any JavaScript library |
optional |
Push |
No, custom |
via lexicons for Transfer, Reactor |
via MXUnit, others |
No |
via plugins |
|
via lexicon for ColdSpring |
No |
| Mach-II |
via CF or any JavaScript library |
Yes |
Push |
via plugin |
Transfer, Reactor, Hibernate |
via MXUnit, others |
|
via plugins |
|
ColdSpring |
|
| Model-Glue |
via CF or any JavaScript library |
Yes |
Push |
|
Transfer, Reactor, Hibernate |
via MXUnit, others |
|
via plugins |
|
ColdSpring |
|
| onTap |
native features + Prototype + script.aculo.us |
optional |
Push |
Yes |
DataFaucet [1] |
via MXUnit, others |
DataFaucet has potential - supports multiple db platforms |
Members onTap Plugin |
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) |
| Apache Click |
Java |
jQuery |
Page oriented |
Pull |
Yes |
Hibernate, Cayenne |
Yes |
|
pluggable |
Velocity, JSP |
Cached templates |
Built-in validation |
| Apache OFBiz |
Java |
Prototype |
Yes |
Push-pull |
Yes |
Entity Engine(OOTB ORM) |
JUnit |
Entity Engine Tools, Data File Tool, CSV Parser, Apache POI |
OOTB Security framework |
Freemarker(Recommended), Velocity(Support Available), JSP(Support Available) |
OOTB Cache Maintenance |
Server side validation, Client Side Validation(Prototype) |
| Apache 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 Tapestry |
Java |
Prototype, jQuery |
Yes |
Pull |
Yes |
JPA, Hibernate, Cayenne |
Selenium, TestNG, JUnit |
|
Spring Security, Shiro |
Yes |
with extensions |
JSR 330 (Bean Validation) |
| Apache Wicket |
Java |
Extensions for YUI, ExtJS, more |
Modular event driven |
Pull |
Yes |
with extensions |
Mock objects, unit and integration tests via extension |
|
Yes |
Yes |
Yes |
Yes |
| FormEngine |
Java |
Yes |
|
|
Yes |
own connector API |
|
|
|
|
|
Ajax validation on server and form state update |
| Grails |
Groovy |
Yes |
Active record pattern |
Push |
Yes |
GORM, Hibernate |
Unit tests, integration test, functional test |
multiple plugins: autobase, dbmigrate, more |
Spring Security,[18] Apache Shiro[19] |
Yes |
Yes |
Yes |
| ItsNat |
Java |
Yes |
event driven |
Push |
using Java i18n |
|
external, built-in |
|
pluggable |
pure HTML-SVG |
page caching |
normal Java |
| JavaServer Faces |
Java |
Yes |
Yes |
Pull |
Yes |
Yes, with extensions |
JUnit |
|
Yes |
Facelets, JSP |
Yes |
Native validators, integration with Bean Validation |
| JBoss Seam |
Java |
Yes |
Yes |
Pull |
Yes |
JPA, Hibernate |
JUnit, TestNG |
|
JAAS integration, Drools, Hibernate Filters, OpenID, CAPTCHA |
Facelets |
JBoss Cache, EHcache |
Hibernate Validator |
| Jspx-bay |
Java |
Yes |
Page oriented |
|
|
Own API |
|
|
JAAS integration |
Master-content pages |
|
Yes, Internal UI validation controls |
| JVx WebUI |
Java |
Yes |
Model Driven |
|
Yes |
Yes, pluggable |
JUnit |
|
Yes |
Single sourcing |
|
Yes, pluggable |
| OpenXava |
Java |
Yes |
Model Driven |
|
Yes |
JPA, Hibernate, EJB2 CMP |
JUnit |
Hibernate tools |
uses JSR-168 portal security |
UI is automatically generated |
uses portal and JPA caching |
Yes |
| Play |
Scala |
Yes |
Yes |
Push-pull |
Yes |
JPA, Hibernate |
JUnit, Selenium |
Yes |
via Core Security module |
Yes |
Yes |
Server-side validation |
| RIFE |
Java |
DWR |
Yes |
Push-pull |
Yes |
Yes |
Out of container testing |
|
Yes |
Yes |
Integration with Terracotta |
Yes |
| Spring |
Java |
Yes |
Yes |
Push |
Yes |
Hibernate, iBatis, more |
Mock objects, unit tests |
|
Spring Security (formerly Acegi) |
JSP, Commons Tiles, Velocity, Thymeleaf, more |
ehcache, more |
Commons validator, Bean Validation |
| Stripes |
Java |
Yes |
Yes |
Pull |
Yes |
JPA, Hibernate |
Yes |
|
framework extension |
Yes |
|
Yes |
| Vaadin |
Java |
GWT |
|
Pull |
Yes |
Yes |
Yes |
|
|
Yes |
|
Yes |
| Wavemaker |
JavaScript (client), Java (server) |
Dojo Toolkit |
Yes |
Push |
Dojo Toolkit |
Hibernate |
JUnit |
Hibernate |
Spring Security (formerly 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 |
JPA with RequestFactory |
JUnit (too early), jsUnit (too difficult), Selenium (best) |
via Java |
Yes |
|
|
Bean Validation |
| ZK |
Java, ZUML |
jQuery |
Yes |
Push-pull |
Yes |
any J2EE ORM framework |
JUnit,ZTL |
HibernateUtil, SpringUtil |
Spring Security |
Macro components & composition |
Yes |
client, server |
| 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) |
| Catalyst |
Perl |
Toolkit-independent (REST & JSON support, specific plugins for Prototype JavaScript Framework, more) |
Yes |
Push in its most common usage |
Yes |
DBIx::Class, Rose::DB::Object, more |
Supports Perl testing standards, Test Anything Protocol (TAP) |
|
ACL-based, external engines, more |
Template::Toolkit, HTML::Template, HTML::Mason, PHP and any extant Perl template engine |
Cache, Memcached, shared memory, more |
HTML::FormHandler HTML::FormFu, HTML::FormValidator, more |
| Dancer |
Perl |
Yes |
Yes |
Push |
Yes |
DBIx::Class, ORMesque |
Yes |
? |
? |
Template::Toolkit, HTML::Mason, Text::MicroTemplate, any extant Perl template engine |
Cache, Memcached, shared memory, more |
DataFu, any extant Perl form validation software |
| Mason |
Perl |
? |
? |
? |
? |
? |
? |
? |
? |
? |
? |
? |
| Maypole |
Perl |
? |
? |
? |
? |
? |
? |
? |
? |
? |
? |
? |
| Mojolicious |
Perl |
Toolkit-independent (REST & JSON support |
No explicit model support though commonly used as MVC |
Push |
Yes |
Yes |
No |
Test::Mojo |
No |
Yes |
Built-in Perl templating, Template::Toolkit and several others via plugins |
No |
| Project |
Start Date |
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) |
Scaffolding |
| AppFlower |
2009-02 |
PHP 5 |
Yes, ExtJS |
Yes |
Push |
Yes |
Propel |
Yes |
Plugin exists |
Plugin |
Yes |
Yes |
Yes |
Yes |
| CakePHP |
2005-08 |
PHP >= 5.2 |
Prototype, script.aculo.us, jQuery, jQuery UI, MooTools, MooTools More |
Yes |
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 PHPUnit (cakephp 2.0) |
Yes |
ACL-based |
Themes, layouts, views, elements |
Memcache, XCache, APC, File |
Validation, security |
Yes |
| CodeIgniter |
2006-01 |
PHP >= 5.1 |
Any |
Yes |
Push |
Mostly[20] |
Third party only |
Ready for next release |
Yes |
Yes |
Yes |
Yes |
Yes |
No[21] |
| Drupal |
2001-01 |
PHP |
jQuery, jQuery UI, more |
PAC |
N/A |
Yes |
Optional module |
SimpleTest |
Yes |
Yes |
Yes |
Memcache, APC, Varnish, more |
Yes |
No |
| Fat-Free Framework |
2009-09 |
PHP |
Any |
MVC, RMR |
Push-pull |
Yes |
Data mappers for SQL, MongoDB, Flat-File |
Built-in |
Yes |
Yes |
Yes |
APC, Memcache, XCache, WinCache, and Filesystem |
Yes |
No |
| FuelPHP |
2010-10 |
PHP >= 5.3.x |
Yes |
MVC, HMVC |
Push |
Yes |
Yes |
PHPUnit |
Yes |
Yes, Plugins available |
Yes, Plugins available |
File, Redis, Memcache, more |
Yes |
Yes |
| Fusebox |
1997-11 |
PHP |
Yes |
Not mandatory |
Push |
No, custom |
|
|
|
Multiple plugins available |
|
|
via qforms or built in PHP validation |
Yes |
| Joomla |
2005-09 |
PHP >= 5.3.x |
Yes Mootools 1.3 |
Yes |
Push-pull |
Yes |
Yes |
Unit tests |
No |
Yes |
Yes |
Yes |
Yes |
No |
| Kajona |
2004-06 |
PHP 5 |
Yes |
Yes |
Yes |
Yes |
Yes |
Unit tests |
Automatic |
Yes |
Yes |
Yes |
Yes |
No |
| Midgard |
1999-05 |
PHP |
jQuery |
MidCOM |
Pull |
Yes |
Midgard |
PHPUnit |
datagard |
ACL-based |
PHP, TAL |
Memcache |
Yes |
No |
| PHPixie |
2012-07 |
PHP |
Toolkit-independent |
MVC, HMVC |
Push |
Yes |
Yes, Active record pattern |
PHPUnit |
Yes, PHPixie Migration Module |
Yes |
PHP, HAML |
APC, Database, File cache, eAccelerator, XCache |
Yes, PHPixie Validation Module |
No |
| PRADO |
2004-07 |
PHP >= 5.3.0 |
Prototype, script.aculo.us, own components[22] |
Yes |
Push-pull |
Yes |
Data access objects (DAO), active record pattern, SQLMap data mapper |
PHPUnit |
No |
Yes |
XML-based, similar to ASP.NETs[23] |
APC, Database, eAccelerator, Memcached, XCache |
Yes[24] |
Yes[25] |
| Qcodo |
2005-10 |
PHP 5 |
built-in |
QControl |
Push |
Yes |
XML-based |
|
Inherent |
|
QForm and QControl |
Yes |
Yes |
No |
| SilverStripe (Sapphire) |
2005-11 |
PHP >= 5.2 |
jQuery, jQuery UI |
|
Push-pull |
Yes |
Active record pattern |
Unit tests |
Automatic |
incl. OpenID |
|
Yes |
Yes |
Yes |
| Solodev CMS |
2005-11 |
PHP 5 |
jQuery, jQuery UI, more |
|
Push-pull |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
| Symfony |
2005-10 |
PHP 5 |
Prototype, script.aculo.us, Unobtrusive Ajax with UJS and PJS plugins |
Yes |
Push |
Yes |
Propel, Doctrine (YAML) |
Yes |
Plugin exists (alpha code) |
Plugin |
PHP, Twig |
Yes |
Yes |
Yes |
| Symfony 2 |
2010 |
PHP >= 5.3.3 |
Any |
Yes |
Push |
Yes |
Propel, Doctrine (YAML) |
Yes |
Plugin exists |
Yes |
PHP, Twig |
Yes |
Yes |
Yes |
| Yii |
2008-01 |
PHP >= 5.1.0 |
jQuery, jQuery UI, own components, plugins |
Yes |
Push-pull |
Yes |
Data Access Objects (DAO), Active Record Pattern, Plugins (incl. Doctrine 2.0) |
PHPUnit, Selenium |
Yes |
ACL-based, RBAC-based, plugins |
PHP-based, PRADO-like, plugins |
APC, Database, eAccelerator, File, Memcache, Redis, WinCache, XCache, Zend Platform |
Yes |
Yes[26] |
| Zend Framework |
2006-03 |
PHP >= 5.2.4 |
Toolkit-independent |
Yes |
Push-pull |
Yes |
Table and row data gateway or Doctrine |
Unit tests, PHP Unit or other independent |
Yes |
ACL-based |
Yes |
APC, Database, File, Memcache, Zend Platform |
Yes |
Yes |
| Zend Framework 2 |
2010-06 |
PHP >= 5.3.3 |
Toolkit-independent |
Yes |
Push-pull |
Yes |
Table and row data gateway and Doctrine 2.0 for Zend Framework 2.0 |
Unit tests, PHP Unit or other independent |
Yes |
ACL-based |
Yes |
APC, Database, File, Memcache, Zend Platform |
Yes |
Yes |
| Zikula |
2008-06 |
PHP |
Yes |
Yes |
N/A |
Yes |
Yes |
PHPUnit |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
| 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 3.* |
| CherryPy |
Python |
Yes |
controller & URL dispatching |
|
Yes |
ORM agnostic |
use stdlib's unittest and doctest |
depends on ORM |
|
Templating engine agnostic |
Yes |
Form validation engine agnostic |
Yes |
| CubicWeb |
Python |
Yes |
controller & URL dispatching |
|
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
| Flask |
Python |
Yes |
Yes |
Push |
Yes |
Yes |
Yes |
Yes |
Yes |
Jinja2 |
Yes |
Yes |
No |
| 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 |
|
|
|
|
No |
| Pylons |
Python |
helpers for Prototype and script.aculo.us |
controller |
Push |
Yes |
ORM-agnostic |
via nose |
depends on ORM |
|
pluggable: Mako, Genshi, Myghty, Kid, more |
Beaker cache (memory, memcached, file, databases) |
preferred formencode |
No |
| Pyramid |
Python |
Yes |
Yes |
Push |
Yes |
ORM-agnostic |
Yes |
depends on ORM |
Yes |
pluggable: Chameleon, Genshi; Mako, more |
Beaker cache (memory, memcached, file, databases) |
preferred formencode |
Yes |
| Django |
Python |
Yes |
Full stack |
Push |
Yes |
Django ORM |
Yes |
Provided by South |
ACL-based |
Django Template Language |
Cache Framework |
Django Forms API |
Yes |
| TACTIC |
Python |
Yes |
Yes |
Pull |
No |
Yes |
Yes |
Yes |
Yes |
Mako |
No |
Yes |
No |
| TurboGears |
Python |
Toolkit-independent, provides support via JSON |
Full stack, best-of-breed based |
Push |
Yes |
SQLAlchemy |
nose |
SQLAlchemy-Migrate |
Repoze.what & Repoze.who |
pluggable: Genshi, more |
Support for memcached, and any WSGI compliant system |
ToscaWidgets, utilizing FormEncode |
No |
| web2py |
Python |
Yes |
Yes |
Push |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
No |
| Webware |
Python |
No |
Optional |
Pull |
No |
Yes |
Yes |
No |
Yes |
Yes |
No |
No |
No |
| BlueBream (Zope 3) |
Python |
via add-on products, e.g. Plone w/KSS |
Yes |
Pull |
Yes |
ZODB, SQLObject, SQLAlchemy |
Unit tests, functional tests |
ZODB generations |
ACL-based |
Yes |
Yes |
Yes |
No |
| Zope 2 |
Python |
|
Yes |
Pull |
Yes |
ZODB, SQLObject, SQLAlchemy |
Unit tests |
|
ACL-based |
Yes |
Yes |
CMFFormController |
No |
| mnml |
Python |
No |
No |
|
No |
No |
only development server |
No |
|
Templating engine agnostic |
No |
Form validation engine agnostic |
No |