Basic information about each 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) |
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) |