Jump to content

Comparison of server-side web frameworks

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 15.219.153.77 (talk) at 15:52, 2 September 2010 (→‎Python: CherryPy does support Ajax.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

This is a comparison of notable web application frameworks.

General

Basic information about each framework.

Perl

Project Current Stable Version Release Date License
Catalyst 5.80024 2010-05-07 Artistic / GPL
Interchange 5.6.2 2009-09-17 GPL
Mason 1.45 2010-04-03 Artistic / GPL
Maypole 2.13 2008-04-17 Artistic / GPL
Reaction 0.002000 2009-04-29 Artistic / GPL

PHP

Project Current Stable Version Release Date License
CakePHP 1.3.3 2010-07-18 MIT
CodeIgniter 1.7.2 2009-09-11 BSD-style
Horde 3.3.8 2010-04-28 LGPL
Qcodo 0.4.16 2010-06-09 MIT
Seagull 0.6.7 2010-02-23 BSD
Simple Pattern Framework 1.0.0 2010-08-01 GPL
Symfony 1.4.6 2010-06-29 MIT
Yii 1.1.3 2010-07-04 BSD
Zend Framework 1.10.7 2010-07-30 BSD
Project Current Stable Version Release Date License

Java

Project Current Stable Version Release Date License
Apache Click 2.1.0 Apache
Apache Cocoon 2.2.0 Apache
Apache Struts 2.1.8.1 Apache
Apache Wicket 1.4.10 2010-08-11 Apache
AppFuse 2.0.2 Apache
Aranea 1.0.10 Apache
Eclipse RAP 1.2.0 Eclipse Public License
FormEngine 1.6.3 MIT
Google Web Toolkit 2.0 Apache
Hamlets 1.6 2010-01-29 BSD
ItsNat 1.0 AGPL / Proprietary
JavaServer Faces 2.0
JBoss Seam 2.2.0 GA LGPL
ManyDesigns Portofino 3.1.0 GPL v3
OpenLaszlo 4.1 Common Public License
OpenXava 4m5 2010-07-28 LGPL
Play 1.0.3 Apache
RIFE 1.6.2 Apache
Shale 1.0.4 Apache
Sling 5 2009-05-14 Apache 2.0
SmartClient LGPL
Sofia 2.3 GPL
Spring 3.0.0 Apache
Stripes 1.5.3 Apache
Tapestry 4.1.6/5.1.0.5 Apache
ThinWire 1.2 GPL
Vaadin 6.4.1 Apache
WebObjects 5.4.3 Proprietary
WebWork 2.2.6 Apache
ZK 5.0 LGPL
ztemplates 0.9.9.6 Apache

Python

Project Current Stable Version Release Date License
BlueBream 3.4 ZPL
CherryPy 3.1.2 2009-04-12 BSD
CubicWeb 3.8.1 2010-04-28 LGPL
Django 1.2.1 2010-05-24[1] BSD
Grok 1.1 2010-05-18 ZPL
Pyjamas 0.7 2010-04-25 Apache
Pylons 1.0.0 2010-05-28 BSD
TurboGears 2.1b2 2010-03-27 MIT / LGPL
web2py 1.79.1 2010-06-05 GPLv2 with a commercial exception, GPL does not apply to apps developed with web2py
Webware 1.0.2 2009-06-07 Python License
Zope 2 2.12.10 2010-07-20 ZPL
Zope 3 3.4.1 2010-06-22 ZPL
Project Current Stable Version Release Date License

Ruby

Project Current Stable Version Release Date License
Camping 2.1 2010-08-20 MIT
Merb 1.0.15 2009-11-04 MIT
Nitro 0.41 2006-12-12 BSD
Ruby on Rails 3.0 2010-08-29 MIT / Ruby
Ramaze 2010.04.04 2010-04-04 GPL
Sinatra 1.0 2010-03-23 MIT

CFML (ColdFusion)

Project Current Stable Version Release Date License
ColdFusion on Wheels 1.0.5 2010-06-18 Apache v2
ColdSpring 1.2 2008-09-12 Apache v2
Fusebox 5.5.1 2008-03-08 Apache
FW/1 1.0 2010-01-04 Apache
Mach-II 1.8.0 2010-02-09 GPLv3 with Classpath exception
Model-Glue 3.1.185 2009-08-11 Apache
onTap 3.3 2009-11-07 BSD

ASP.NET

Project Current Stable Version Language License
ASP.NET MVC 2.0 ASP.NET Ms-PL
BFC 7.40 ASP.NET Proprietary
Csla 3.7.0 C#, VB.NET Proprietary; Free to use for non-commercial and commercial applications.
DotNetNuke 4.8.0 ASP.NET BSD
MonoRail 2.0 ASP.NET Apache
OpenRasta 2.0 RC ASP.NET MIT
Vici MVC 2.0.1 ASP.NET MIT
Project Current Stable Version Language License

Other

Project Current Stable Version Language License
AIDA/Web 5.6 Smalltalk MIT
CppCMS 0.0.4 C++ LGPL
Flex 4.0 ActionScript, MXML MPL
Grails 1.3.4 Groovy (JVM) Apache
Helma 1.6.3 Javascript Helma License version 2.0
Kepler 1.1 Lua MIT
Lift 2.0 Scala (JVM) Apache
Midgard 8.09 LTS PHP LGPL
Morfik 2.3.0.6 Basic,Pascal,Java,C# Proprietary
OpenACS 5.4.3 Tcl GPL
qooxdoo 1.2 JavaScript LGPL or Eclipse Public License
Seaside 2.8 Smalltalk MIT
Sproutcore 1.0 BETA Javascript MIT
Compojure 0.3.2 Clojure Eclipse Public License
Wavemaker 4.0.2 JavaScript AGPL
Wt 3.1.1 C++ GPL
Project Current Stable Version Language License

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)
ColdFusion on Wheels Yes Yes via Plugin Yes via Plugin Yes 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 [1] 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 Yes 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
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
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 (Java) 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 ???, no direct data access JUnit (too early), jsUnit (too difficult), Selenium (best) No
ZK Java, ZUML Yes Yes Push & Pull Yes any J2EE ORM framework Yes Spring Security macro components 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)
Banshee PHP PHP 5 Banshee AJAX, jQuery/jQuery UI Yes Push Module demos, security audit script No ACL-based XSLT 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
CodeIgniter PHP Prototype/script.aculo.us, jQuery/jQuery UI]] Modified active record pattern Push Yes framework extension Unit Tests No Yes Yes Yes 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
Midgard PHP jQuery MidCOM Pull Yes Midgard PHPUnit datagard ACL-based PHP and TAL memcache Yes
phunction PHP 5 No Optional No No No No OpenID Views APC, File Yes
Qcodo PHP 5 built-in QControl Push Yes XML-based Inherent QForm and QControl Yes Yes
Simple Pattern Framework PHP 5 No Yes Push Yes Active PHP Database Query Debugger No Self Administered Smarty Yes Self Administered
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, though) plugin Yes Yes Yes
Yii PHP 5 (>=5.1.0) jQuery, jQuery UI, own components Yes Push & Pull Yes Database Access Objects (DAO), Active Record PHPUnit Plugin 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
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
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.*

Ruby

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)
Camping No Yes Push No Active record pattern via Mosquito Yes No Yes No No
Nitro jQuery Yes Push Yes Og RSpec (automatic) Yes Yes Yes Yes
Ruby on Rails Prototype, script.aculo.us, jQuery ActiveRecord, Action Pack Push Yes ActiveRecord Unit Tests, Functional Tests and Integration Tests Yes Plug-in Yes Yes Yes
Sinatra No Yes Push No ORM-independent Rack::test Yes No Yes through a Rack middleware 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)

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::Object, etc. It supports perl testing standards, Test Anything Protocol (TAP) [2] ACL-based, external engines, etc. Template::Toolkit, HTML::Template, HTML::Mason, PHP and any Perl existing template engine Cache, Memcached, shared memory, etc. HTML::FormHandler HTML::FormFu, HTML::FormValidator, etc.
Flex Actionscript, MXML Not by name but similar technology [3] 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 No
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 Yes
qooxdoo JavaScript Yes Data binding i18n Testrunner Form Validation
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