From Wikipedia, the free encyclopedia
Content deleted Content added
|
|
Line 45: |
Line 45: |
|
| [[Artistic License|Artistic]] / [[GPL]] |
|
| [[Artistic License|Artistic]] / [[GPL]] |
|
|- |
|
|- |
|
!{{rh}}| [[Mojolicious (software)|Mojolicious]] |
|
!{{rh}}| [[ Mojolicious]] |
|
| 2.0 |
|
| 2.0 |
|
| 2011-10-17 |
|
| 2011-10-17 |
Revision as of 13:55, 20 November 2011
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 Razor)
|
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
|
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
|
Yes
|
Push
|
Yes
|
CppDB
|
No
|
No
|
Yes
|
Yes
|
Yes
|
Yes
|
Wt
|
Yes
|
Yes
|
Push & Pull
|
Yes
|
Wt::Dbo
|
Boost.test
|
|
Yes
|
Yes
|
Yes
|
Yes
|
Tntnet
|
Yes
|
No
|
No
|
Yes
|
Tntdb
|
No
|
No
|
No
|
Yes
|
No
|
No
|
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 [3]
|
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)
|
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
|
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
|
Yes
|
Yes
|
Push
|
Yes
|
ORM-agnostic
|
Yes
|
depends on ORM
|
Yes
|
pluggable ((Chameleon, Genshi), (Mako); others may be plugged in)
|
Beaker cache (memory, memcached, file, databases)
|
preferred formencode
|
No
|
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
|
TurboGears
|
Python
|
Toolkit-independent, provides support via JSON
|
Full stack, best-of-breed based
|
Push
|
Yes
|
SQLAlchemy
|
nose
|
SQLAlchemy-Migrate
|
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
|
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)
|
Spring
|
Java
|
Yes
|
Yes
|
Push
|
Yes
|
Hibernate, iBatis, etc
|
Yes, mock objects & unit tests
|
|
Spring Security (formerly Acegi)
|
JSP, Commons Tiles, Velocity, Thymeleaf, etc.
|
ehcache etc.
|
Commons Validator
|
Apache Click
|
Java
|
JQuery
|
Page Oriented
|
Pull
|
Yes
|
Hibernate and Cayenne
|
Yes
|
|
pluggable
|
Velocity and JSP
|
Cached Templates
|
Built-in validation
|
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 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
|
Yes, with extensions
|
JUnit
|
|
Yes
|
Facelets, JSP
|
Yes
|
Native validators and 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 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 (Software)
|
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
|
Stripes
|
Java
|
Yes
|
Yes
|
Pull
|
Yes
|
JPA, Hibernate
|
Yes
|
|
framework extension
|
Yes
|
|
Yes
|
Apache 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)
|
via Java
|
Yes
|
|
|
|
ZK
|
Java, ZUML
|
JQuery
|
Yes
|
Push & Pull
|
Yes
|
any J2EE ORM framework
|
JUnit,ZTL
|
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)
|
Scaffolding
|
AppFlower
|
PHP 5
|
Yes, ExtJS
|
Yes
|
Push
|
Yes
|
Propel
|
Yes
|
Plugin exists
|
Plugin
|
Yes
|
Yes
|
Yes
|
Yes
|
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
|
Yes
|
CodeIgniter
|
PHP >= 5.1
|
Any, its agnostic
|
Yes
|
Push
|
Mostly[20]
|
Third party only
|
Ready for next release
|
Yes
|
Yes
|
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
|
No
|
Zeta Components (previously eZ Components)
|
PHP
|
Toolkit-independent
|
Yes
|
Push
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
No
|
Fusebox
|
PHP
|
Yes
|
Not mandatory
|
Push
|
No, custom
|
|
|
|
Multiple plugins available
|
|
|
via qforms or built in PHP validation
|
Yes
|
FuelPHP
|
PHP >= 5.3.x
|
Yes
|
MVC, HMVC
|
Push
|
Yes
|
Yes
|
PHPUnit
|
Yes
|
Yes, Plugins available
|
Yes, Plugins available
|
File, Redis, Memcache and more
|
Yes
|
Yes
|
Joomla! Platform
|
PHP >= 5.3.x
|
Yes Mootools 1.3
|
Yes
|
Push & Pull
|
Yes
|
Yes
|
Unit Tests
|
No
|
Yes
|
Yes
|
Yes
|
Yes
|
No
|
Kajona
|
PHP 5
|
Yes
|
Yes
|
Yes
|
Yes
|
Yes
|
Unit Tests
|
Automatic
|
Yes
|
Yes
|
Yes
|
Yes
|
No
|
Kohana
|
PHP 5
|
Yes
|
MVC, HMVC
|
Push
|
Yes
|
Yes
|
PHPUnit, (as module)
|
Yes
|
Plugin
|
Yes
|
APC, Database, eAccelerator, File, Memcache, XCache
|
Yes
|
No
|
Midgard
|
PHP
|
jQuery
|
MidCOM
|
Pull
|
Yes
|
Midgard
|
PHPUnit
|
datagard
|
ACL-based
|
PHP and TAL
|
Memcache
|
Yes
|
No
|
Movicon
|
PHP
|
No
|
Yes
|
Push
|
Yes
|
No
|
Unit Tests
|
No
|
Yes
|
Yes
|
File
|
No
|
No
|
Outglow
|
PHP 5
|
jQuery, jQuery UI, OJAX
|
Bridges
|
Push
|
Yes
|
No
|
No
|
Yes
|
Yes
|
Custom
|
Yes
|
Yes
|
No
|
Qcodo
|
PHP 5
|
built-in
|
QControl
|
Push
|
Yes
|
XML-based
|
|
Inherent
|
|
QForm and QControl
|
Yes
|
Yes
|
No
|
Rain Framework
|
PHP 5
|
jQuery
|
Yes
|
Push
|
Yes
|
|
|
|
sanitize input, output and query
|
RainTPL
|
Yes
|
Yes
|
No
|
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
|
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
|
Yes[21]
|
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
|
No
|
SilverStripe (Sapphire)
|
PHP 5 (>=5.2)
|
jQuery/jQuery UI
|
|
Push & Pull
|
Yes
|
Active record pattern
|
Unit Tests
|
(Automatic)
|
incl. OpenID
|
|
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)
|
Scaffolding
|
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
|
Yes
|
Yes
|
|
Yes
|
Gemstone/S, GLORP, etc.
|
SUnit
|
|
Yes
|
|
|
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)
|
|
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[22]
|
|
|
|
|
FlexUnit
|
|
|
|
|
|
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
|
Ocsigen
|
OCaml
|
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