From Wikipedia, the free encyclopedia
This page or section
may contain link spam masquerading as content. Spam on Wikipedia consists of external links mainly intended to promote a website. If you are familiar with the content of the external links, please help by removing promotional links in accordance with Wikipedia:External links . (August 2010 )
This is a comparison of notable web application frameworks .
General
Basic information about each framework.
Perl
PHP
Java
Python
Ruby
CFML (ColdFusion)
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
OpenRasta
No
Yes
Push
Yes
ORM-independent
Unit Tests
No
HTTP Digest and via ASP.NET Forms Authentication or host environment
Yes
No
No
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
Wt::Dbo
Boost.test
Yes
Yes
Yes
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
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 , and others
via Plugin
Yes
Yes
Yes
via Plugin
ColdFusion on Wheels
Yes
Yes
via Plugin
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 and Reactor
via MXUnit , and 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 , and others
via plugins
ColdSpring
Model-Glue
via CF or any JavaScript Library
Yes
Push
Transfer, Reactor, Hibernate
via MXUnit , and others
via plugins
ColdSpring
onTap
native features + Prototype + script.aculo.us
optional
Push
Yes
DataFaucet [2]
via MXUnit , and others
DataFaucet has potential - supports multiple db platforms
Members onTap Plugin
Yes
Yes
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)
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
JQuery
Page Oriented
Pull
Yes
Hibernate and Cayenne
Yes
pluggable
Velocity and JSP
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, with 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
FormEngine
Java
Yes
Yes
own connector API
AJAX validation on server and form state update
ItsNat
Java
Yes
event driven
Push
using Java i18n
external and built-in
pluggable
pure HTML/SVG
page caching
normal Java
JavaServer Faces
Java
Yes
Yes
Pull
Yes, with extensions
JUnit
Yes
Yes
Yes
Yes
JBoss Seam
Java
Yes
Yes
Pull
Yes
JPA , Hibernate
JUnit , TestNG
JAAS integration, Drools , Hibernate Filters, OpenID , CAPTCHA
Facelets
JBoss Cache , EHcache
Hibernate Validator
JVx WebUI
Java
Yes
Model Driven
Yes
Yes, pluggable
JUnit
Yes
Single sourcing
Yes, pluggable
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
Play
Java
Yes
Yes
Push and Pull
Yes
JPA , Hibernate
JUnit , Selenium
Separate module
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
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
JPA , 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
JPA with RequestFactory
JUnit (too early), jsUnit (too difficult), Selenium (best)
No
ZK
Java , ZUML
JQuery
Yes
Push & Pull
Yes
any J2EE ORM framework
Yes
HibernateUtil & SpringUtil
Spring Security
Macro components & Composition
Yes
client and 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)
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)
CakePHP
PHP
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
Yes
ACL -based
Themes, Layouts, Views and Elements
Memcache , XCache , APC , File
Validation and Security
CodeIgniter
PHP >= 5.1
Prototype /script.aculo.us , jQuery /jQuery UI
Modified active record pattern
Push
Plugins
No
Unit Tests
No
Yes
Yes
Yes
Yes
Drupal
PHP
jQuery /jQuery UI, more
No
Push & Pull
Yes
Optional module
SimpleTest
Yes
Yes
Yes
Memcache , APC , Varnish and more
Yes
eZ Components
PHP
No
Yes
Push
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Fusebox
PHP
Yes
Not mandatory
Push
No, custom
Multiple plugins available
via qforms or built in PHP validation
Joomla
PHP >= 5.1.x
Yes Mootools 1.2
Yes
Push & Pull
Yes
Yes
Unit Tests
No
Yes
Yes
Yes
No
Kajona
PHP 5
Yes
Yes
Yes
Yes
Yes
Unit Tests
Automatic
Yes
Yes
Yes
Yes
Kohana
PHP 5
Yes
MVC, HMVC
Push
Yes
Yes
PHPUnit , (as module)
Yes
Plugin
Yes
APC , Database, eAccelerator , File, Memcache , XCache
Yes
Midgard
PHP
jQuery
MidCOM
Pull
Yes
Midgard
PHPUnit
datagard
ACL -based
PHP and TAL
Memcache
Yes
Qcodo
PHP 5
built-in
QControl
Push
Yes
XML-based
Inherent
QForm and QControl
Yes
Yes
RedSpark
PHP 5
jQuery
Yes
Push & Pull
Yes
Yes
Yes
Yes
ACL -based
Yes
Yes
Yes
Symfony
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
Yes
Yes
Yes
Yii
PHP 5 (>=5.1.0)
jQuery , jQuery UI , own components, plugins
Yes
Push & Pull
Yes
Database Access Objects (DAO), Active Record , plugins
PHPUnit , Selenium
Yes
ACL -based, RBAC -based, plugins
PHP -based, PRADO-like, plugins
APC , Database, eAccelerator , File, Memcache , WinCache , XCache , Zend Platform
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)
jQuery /jQuery UI
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)
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
Django
Python
Django uses jquery in the admin, but is js-agnostic in the user templates
Full Stack
Push
Yes
Django ORM
Yes
reusable applications which might get merged into core e.g. South
ACL -based
Django Template Language
Cache Framework
Django Forms API
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, etc.)
Beaker cache (memory, memcached, file, databases)
preferred formencode
No
Pyramid
Python
No
Yes
Push
Yes
ORM-agnostic
Yes
depends on ORM
Yes
pluggable (Chameleon and Genshi; others may be plugged in)
Beaker cache (memory, memcached, file, databases)
preferred formencode
No
TurboGears
Python
Toolkit-independent, provides support via JSON
Full stack, best-of-breed based
Push
Yes
SQLAlchemy
nose
No
Repoze .what & Repoze.who
Genshi , additional plugins available
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
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
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
Application Express
PL/SQL
Yes
Yes
Yes
Yes
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::Object , etc.
It supports perl testing standards, Test Anything Protocol (TAP) [ 6]
ACL -based, external engines, etc.
Template::Toolkit, HTML::Template, HTML::Mason, PHP and any existing Perl template engine
Cache, Memcached, shared memory, etc.
HTML::FormHandler HTML::FormFu, HTML::FormValidator, etc.
Dancer
Perl
Yes
Yes
Push
Yes
DBIx::Class , ORMesque
Yes
Template::Toolkit, HTML::Mason, Text::MicroTemplate, any existing Perl template engine
Cache, Memcached, shared memory, etc.
DataFu, any existing Perl form validation software
Flex
Actionscript , MXML
Not by name but similar technology [ 7]
FlexUnit
Formspider
PL/SQL
Yes
Yes
Pull
Yes
Yes
Grails
Groovy
Yes
Active record pattern
Push
Yes
GORM, Hibernate
Unit Test , Integration test , Functional test
multiple plugins(autobase, dbmigrate, etc.)
Spring Security plugin
Yes
Yes
Yes
Kepler
Lua
Yes
Lift
Scala
Yes
Yes
Pull
Yes
Yes
Yes
Yes
Yes
Yes
Yes
OpenACS
Tcl
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
qooxdoo
JavaScript
Yes
Data binding
i18n
Testrunner
Form Validation
Seaside
Smalltalk
jQuery , jQuery UI , Prototype , script.aculo.us , etc.
Yes
Yes
GLORP , Gemstone/S , etc.
Unit Tests , SUnit
No, intentionally
Magritte
SproutCore
JavaScript
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)
References
See also