Comparison of server-side web frameworks
Appearance
This is a comparison of notable web application frameworks.
General
Basic information about each framework.
ASP.NET
| Project | Language | Current stable version | Release date | License |
|---|---|---|---|---|
| ASP.NET MVC Framework (ASP.NET MVC) | ASP.NET | 5.1 | 2014-01-17 | Apache v2[1] |
| Base One Foundation Component Library (BFC) | ASP.NET | 7.43 | 2011-01-15 | Proprietary |
| Component-based Scalable Logical Architecture (CSLA) | C#, Visual Basic .NET | 4.3.10 | 2012-03-04 | Proprietary freeware, no limit on use type |
| MonoRail | ASP.NET | 2.1 RC | 2011-03-17 | Apache |
| OpenRasta | ASP.NET | 2.0 RC | 2009-11-04 | MIT |
| Nancy | C#, Visual Basic .NET | 0.6.0 | 2011-06 | MIT |
C
| Project | Current stable version | Release date | License |
|---|---|---|---|
| Saetta Web Server | 1.4.2 | 2011-03-06 | Proprietary |
C++
| Project | Current stable version | Release date | License |
|---|---|---|---|
| CppCMS | 1.0.3 | 2013-01-04[2] | LGPL, Proprietary |
| Poco | 1.4.6p1 | 2013-03-06[3] | Boost Software License |
| Tntnet | 2.2 | 2013-04-21[4] | LGPL |
| Wt | 3.3.1 | 2013-10-16[5] | GPL, Proprietary |
ColdFusion Markup Language (CFML)
| Project | Current stable version | Release date | License |
|---|---|---|---|
| ColdBox Platform | 3.8.1 | 2014-02-04 | Apache v2 |
| ColdFusion on Wheels | 1.1.8 | 2012-07-10 | Apache v2 |
| ColdSpring | 1.2 | 2008-09-12 | Apache v2 |
| Fusebox | 5.5.1 | 2008-03-08 | Apache |
| FW/1 | 2.1.1 | 2013-04-14 | Apache v2 |
| Mach-II | 1.8.1 | 2010-09-20 | GPLv3 with Classpath exception |
| Model-Glue | 3.1.299 | 2010-03-05 | Apache |
| onTap | 3.3 | 2009-11-07 | BSD |
Haskell
| Project | Current stable version | Release date | License |
|---|---|---|---|
| Yesod | 1.2 | 2013-05-02[6] | MIT License |
| Happstack | 7.0 | 2012-03-29 | BSD-3 |
Java
| Project | Current stable version | Release date | License |
|---|---|---|---|
| Apache Click | 2.3.0 | 2011-03-27 | Apache Software License 2.0 (ASL 2.0) |
| Apache OFBiz | 12.04.02 | 2013-07-30 | Apache Software License 2.0 (ASL 2.0) |
| Apache Shale | 1.0.4 (Retired) | 2007-12-19 | Apache |
| Apache Sling | 6 | 2011-04-18 | Apache 2.0 |
| Apache Struts 2 | 2.3.16 | 2013-12-08 | Apache 2.0 |
| Apache Tapestry | 5.3.7 | 2013-04-24 | Apache |
| Apache Wicket | 6.13.0 | 2014-01-14 | Apache 2.0 |
| AppFuse | 2.1 | 2011-04-04 | Apache |
| Eclipse RAP | 2.0 | 2013-02-11 | Eclipse |
| FormEngine | 2.0.1 | 2011-05-08 | Proprietary |
| Grails | 2.3.5 | 2014-01-16 | Apache |
| Google Web Toolkit | 2.5.1 | 2013-03-11 | Apache |
| Hamlets | 1.7 | 2011-03-11 | BSD |
| ItsNat | 1.2 | 2011-05-24 | LGPL, proprietary |
| JavaServer Faces | 2.2.4 | 2013-10-03 | CDDL, GPL 2, Apache 2.0, |
| JBoss Seam | 3.1.0 final | 2012-01-13 | LGPL |
| Jspx-bay | 1.2 | 2013-02-14 | Apache 2.0 |
| JVx | 1.1 | 2013-01-23 | Apache 2.0 |
| OpenLaszlo | 4.9.0 | 2010-10-21 | CPL |
| OpenXava | 4.7 | 2013-04-02 | LGPL |
| Oracle ADF | 12.1.2.0 | 2013-07-11 | Oracle Technology Network Developer License |
| Play! | 2.2.0 | 2013-09-20 | Apache 2.0 |
| RIFE | 1.6.1 | 2007-07-14 | CDDL, LGPL |
| Spring | 3.2.3 | 2013-05-17 | SpringSource |
| Stripes | 1.5.7 | 2012-05-17 | Apache |
| ThinWire | 1.2 | 2007-09-17 | GPL |
| Vaadin | 7.1.9 | 2013-12-04 | Apache 2.0 |
| Wavemaker | 6.5.3 | 2013-03-14 | Apache |
| WebObjects | 5.4.3 | 2008-09-15 | Proprietary |
| WebWork | 2.2.6 | 2007-07-21 | Apache |
| ZK | 6.5.2 | 2013-03-26 | LGPL, ZOL |
| ztemplates | 2.4.0 | 2011-09-11 | Apache |
JavaScript
| Project | Current stable version | Release date | License |
|---|---|---|---|
| Meteor | 0.6.4 | 2013-06-10 | MIT |
| SmartClient | 9.0 | 2013-07-03 | LGPL |
| multiple frameworks based on node.js | 0.8.9 | 2012-07-11 | MIT |
| qooxdoo | 3.5 | 2013-12-10 | LGPL or Eclipse |
| SproutCore | 1.8 (beta 2.0) | 2012-03-07 | MIT |
| Wakanda | 5.0 | 2013-07-10 | AGPL or Commercial |
| WaveMaker (client side) | 6.3.3 | 2011-09-22 | Apache |
Scala
| Project | Current stable version | Release date | License |
|---|---|---|---|
| Play! | 2.2.0 | 2013-09-20 | Apache 2.0 |
| Lift | 2.5 | 2013-06-02 | Apache 2.0 |
| Scalatra | 2.2.0 | 2013-02-06 | BSD |
Perl
| Project | Current stable version | Release date | License |
|---|---|---|---|
| Catalyst | 5.90042 | 2013-07-16 | Artistic, GPL |
| Dancer | 1.3118 | 2013-09-01 | Artistic, GPL |
| Mason | 2.20 | 2012-07-12 | Artistic, GPL |
| Maypole | 2.13 | 2008-04-18 | Artistic, GPL |
| Mojolicious | 4.45 | 2013-10-07 | Artistic |
PHP
| Project | Start date | Current stable version | Release date | License |
|---|---|---|---|---|
| Agavi | 2005-05 | 1.0.7 | 2011-12-22 | LGPL |
| Aiki Framework | 2009-09 | 0.9.1 | 2012-02-23[7] | GPLv3 |
| AppFlower | 2009-02 | 1.3 | 2012-10-09 | GPLv3 |
| Ayoola Framework | 2011-01 | 1.4.1 | 2014-01-12 | Proprietary |
| CakePHP | 2005-08 | 2.4.2 | 2013-10-23 | MIT |
| Cgiapp | 2004-12 | 1.0 | 2004-12-01[8] | LGPL |
| CodeIgniter | 2006-02-28 | 2.1.4 | 2013-07-08[9] | OSLv3 |
| Drupal | 2001-01 | 7.26 | 2014-01-15[10] | GPLv3 |
| Fat-Free | 2009-09 | 3.1.0 | 2013-08-19 | GPLv3 |
| FuelPHP | 2011-08 | 1.7.1 | 2013-12-01 | MIT |
| Hazaar MVC | 2012-08 | 1.0 | 2013-03-19 | Apache 2.0 |
| Joomla | 2013-12-01 | 1.1.0 | 2013-12-01 | GPLv2 |
| Kajona | 2006 | 4.2 | 2013-07-16 | LGPLv2 |
| Laravel | 2011-06-11 | 4.1 | 2013-12-11 | MIT |
| Lithium | 2009-10 | 0.11 | 2012-10-03 | BSD |
| PHPixie | 2012-07 | 2.1 | 2012-04-24 | BSD |
| PRADO | 2004-01 | 3.2.2[11] | 2013-07-20 | New BSD[12] |
| Qcodo | 2005-10 | 0.4.22 | 2011-08-15[13] | MIT |
| SilverStripe | 2005-11 | 3.0.5 | 2013-02-20 | BSD |
| Seagull | 2003-10 | 1.0.4 | 2013-01-04 | BSD |
| Solodev CMS | 2005-11 | 8.0 | 2006-11-12 | Proprietary |
| Symfony | 2005-10 | 2.3.1 | 2013-06-19 | MIT |
| TYPO3 Flow | 2011-10 | 2.0.0 | 2013-07-12 | LGPLv3 |
| Xyster Framework | 2007-09 | 02 Build 01 | 2010-10-18 | BSD |
| Yii | 2008-01 | 1.1.14 | 2013-08-11 | New BSD |
| Zend Framework | 2006-03 | 2.2.5 | 2013-10-31 | New BSD |
Python
| Project | Current stable version | Release date | License |
|---|---|---|---|
| BlueBream | 1.0 | 2011-01-18 | ZPL |
| Bottle | 0.12 | 2014-02-02 | MIT |
| CherryPy | 3.2.2 | 2011-10-28 | BSD |
| CubicWeb | 3.15.2[14] | 2012-07-24 | LGPL |
| Django | 1.6.2 | 2014-02-06[15] | BSD |
| Flask | 0.10.1 | 2013-06-14[16] | BSD |
| Grok | 1.4 | 2011-04-04 | ZPL |
| Nagare | 0.4.1 | 2012-01-18 | BSD |
| Pyjamas | 0.8 | 2012-06-01 | Apache |
| Pylons | 1.0.1 | 2012-08-14 | BSD |
| Pyramid | 1.4.0 | 2012-12-18 | BSD |
| TACTIC | 4.0[17] | 2013-05-07 | EPL |
| Tornado | 3.1.1[18] | 2013-09-01 | Apache |
| TurboGears | 2.3 | 2013-08-28 | MIT, LGPL |
| web2py | 2.8.1 | 2013-11-28[19] | LGPL3 |
| Webware | 1.1 | 2011-08-03 | Python |
| Zope 2 | 2.13.15 | 2012-06-22[20] | ZPL |
Ruby
| Project | Current stable version | Release date | License |
|---|---|---|---|
| Camping | 2.1 | 2010-08-20 | MIT |
| Ruby on Rails | 4.0.2 | 2013-12-03 | MIT, Ruby |
| Ramaze | 2012.12.08 | 2012-12-08 | Ruby |
| Sinatra | 1.4.4 | 2013-10-21 | MIT |
| Merb | 1.1.2 | 2010-06-17 | MIT |
| PureMVC | 2.0.4 | 2008-08-14 | CC +Attribution |
Others
| Project | Language | Current stable version | Release date | License |
|---|---|---|---|---|
| AIDA/Web | Smalltalk | 6.5 | 2012-08-27 | MIT |
| Application Express | PL/SQL | 4.2.3 | 2013-09-16 | Proprietary freeware |
| Compojure | Clojure | 1.0.1 | 2012-01-08 | Eclipse |
| Flex | ActionScript, MXML | 4.9 | 2013-01-11 | Apache |
| Grails | Groovy (JVM) | 2.1.6 | 2013-07-14 | Apache |
| Kepler | Lua | 1.1.1 | 2009-03-11 | MIT |
| Morfik | C#, BASIC, Pascal, Java | 3.0.8.1 | 2010-12-13 | Proprietary freeware |
| Ocsigen | OCaml | 2.3.0 | 2012-12-10[21] | LGPL |
| Opa | Opa | 1.1.0 | 2013-02-12[22] | MIT and AGPL |
| OpenACS | Tcl | 5.7.0 | 2011-07-17 | GPL |
| Seaside | Smalltalk | 3.0 | 2010-09-13 | MIT |
| Zotonic | Erlang | 0.9.0 | 2012-12-17 | Apache |
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 | 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 | |
| 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 | No | Yes | |
| Tntnet | Yes | No | No | Yes | Tntdb | No | No | No | Yes | No | No |
ColdFusion Markup Language (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, 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 |
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, Cayenne | Yes | pluggable | Velocity, JSP | Cached templates | Built-in validation | ||
| Apache OFBiz | Java, Groovy, XML, | jQuery | Yes | Push-pull | Yes | Entity Engine (Internal kind of ORM, not really ORM, notably used by Atlassian Jira) | JUnit | Entity Engine Tools, Data File Tool, CSV Parser, Apache POI | Internal Security framework based on OWASP | Freemarker (Recommended), Velocity (Support Available), JSP (Support Available) | Internal Cache Maintenance with Distributed Cache Clearing for clusters | Server side validation, Client Side Validation (JQuery) | |
| 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 | Native or Bean Validation | ||
| Apache Wicket | Java | Extensions for YUI, ExtJS, more | No (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,[23] Apache Shiro[24] | 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 | Java, 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,ZATS | HibernateUtil, SpringUtil | Spring Security | Macro components & composition | Yes | client, server |
JavaScript
| 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) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| qooxdoo | Yes | Data binding | i18n | Testrunner | Form Validation | ||||||
| SproutCore | Yes | Yes | |||||||||
| Wakanda | Yes | Yes | Native Object NoSQL DB | CommonJS Unit Testing | Data Security and Access Control | Storage (application.storage, user.storage, SessionStorage) |
Perl
| 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 | Commonly used with DBIx::Class | Test::Mojo | Signed session cookie | Built-in Perl templating, Template::Toolkit and several others via plugins | ? | Not explicitly, use any Perl Modules |
PHP
| 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 | Yes | 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, Redis, XCache, APC, File | Validation, security | Yes |
| CodeIgniter | 2006-01 | PHP >= 5.1 | Any | Yes | Push | Mostly[25] | Third party only | Ready for next release | Yes | Yes | Yes | Yes | Yes | No[26] |
| Drupal | 2001-01 | PHP | jQuery, jQuery UI, more | PAC | — | 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 >= 5.3 | jQuery | Yes | Push-Pull | Yes | Yes | PHPUnit, Selenium | Automatic | Yes | Yes | Yes | Yes | Yes |
| Laravel | 2011-06 | PHP >= 5.3.7 | Any | Yes | ? | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? |
| 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[27] | Yes | Push-pull | Yes | Data access objects (DAO), active record pattern, SQLMap data mapper | PHPUnit, SimpleTest, Selenium | No | Yes | XML-based, similar to ASP.NETs[28] | APC, Database, eAccelerator, Memcached, XCache | Yes[29] | Yes[30] |
| Qcodo | 2005-10 | PHP 5 | built-in | QControl | Push | Yes | XML-based | Inherent | QForm and QControl | Yes | Yes | No | ||
| QCubed | 2008-11 | PHP >= 5.2 | Built-in | QControl | Push | Yes | Yes | Yes | Inherent (Cross DB compatible QQuery Layer) | Built-in (XSS Protection via HTMLPurifier, SQL escaping built into QQuery, Source IP based security for sensitive scripts) | QForm and QControl (entire application or only select parts) | Memcached (in-memory caching) and QCache (on-disk caching for costly resources) | Built-in (Deeply integrated and customizable at will) | Query Classes, Data Entry and Search forms, DB data type and length validation, basic administration panels generated |
| 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[31] |
| 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 | — | Yes | Yes | PHPUnit | Yes | Yes | Yes | Yes | Yes | No |
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 | ||
| CubicWeb | Python | Yes | controller & URL dispatching | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | |
| Django | Python | Yes | Full stack | Push | Yes | Django ORM | Yes | Provided by South | ACL-based | Django Template Language | Cache Framework | Django Forms API | Yes |
| Flask | Python | Yes | Yes | Push | Yes | Yes | Yes | Yes | Yes | Jinja2 | Yes | Yes | 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, 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 |
| 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 |
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 |
| 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 | through a Rack middleware | Yes | through a Rack middleware | No |
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, more | SUnit | Yes | Yes | ||||
| Application Express | PL/SQL | Yes | Yes | Yes | Yes | Yes | ||||||
| Flex | ActionScript, MXML | Not by name but similar technology[32] | FlexUnit | |||||||||
| Kepler | Lua | Yes | ||||||||||
| Lift | Scala | Yes | Yes | Pull | Yes | Yes | ScalaTest, Selenium [33] | Yes | Yes | Yes | Yes | Yes |
| Ocsigen | OCaml | Yes | Yes | Yes | ||||||||
| Opa | Opa | Yes | Yes | MongoDB | Yes | Yes | Yes | |||||
| OpenACS | Tcl | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
| Seaside | Smalltalk | jQuery, jQuery UI, Prototype JavaScript Framework, script.aculo.us, more | Yes | Yes | GLORP, Gemstone/S, more | Unit tests, SUnit | No, intentionally | Magritte | ||||
| 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) |
See also
- Comparison of free software eCommerce web application frameworks
- Web application framework
- Content management system
- List of content management frameworks
- List of content management systems
- Java view technologies and frameworks
References
- ^ "ASP.NET MVC, Web API, Razor and Open Source - ScottGu's Blog". Weblogs.asp.net. Retrieved 2013-08-18.
- ^ "CppCMS Blog". Blog.cppcms.com. Retrieved 2013-08-18.
- ^ "Overview | POCO C++ Libraries". Pocoproject.org. 2013-05-16. Retrieved 2013-08-18.
- ^ "Tntnet homepage". Tntnet.org. Retrieved 2013-08-18.
- ^ "Wt, C++ Web Toolkit - Blog". Webtoolkit.eu. Retrieved 2013-08-18.
- ^ "Yesod Web Framework for Haskell". Yesodweb.com. 2013-07-19. Retrieved 2013-08-18.
- ^ "aikiframework in Launchpad". Launchpad.net. Retrieved 2013-08-18.
- ^ "Cgiapp.class.php - Browse /Cgiapp.class.php at". Sourceforge.net. Retrieved 2013-08-18.
- ^ "CodeIgniter 2.1.4 Released / Blog / EllisLab". Codeigniter.com. Retrieved 2013-09-13.
- ^ "Drupal core". drupal.org. 2003-09-28. Retrieved 2013-11-23.
- ^ "PRADO Documentation: New Features". pradosoft.com. Retrieved 2013-10-16.
- ^ "License of PRADO". pradosoft.com. 2013. Retrieved 2013-10-16.
- ^ "Qcodo Development Framework - Forums". Qcodo.com. Retrieved 2013-08-18.
- ^ "cubicweb 3.15.2 (CubicWeb's Forge)". Cubicweb.org. Retrieved 2013-08-18.
- ^ "Django 1.6.2 and Django 1.7a2 released". Djangoproject.com. 2014-02-06. Retrieved 2014-02-07.
- ^ "Flask Changelog — Flask 0.10.1 documentation". Flask.pocoo.org. Retrieved 2013-08-18.
- ^ "Southpaw Launches Tactic 4.0 - TACTIC by Southpaw - TACTIC by Southpaw". Southpawtech.com. 2013-05-07. Retrieved 2013-08-18.
- ^ "What's new in Tornado 3.1.1". Tornadoweb.org. 2013-09-01. Retrieved 2013-12-16.
- ^ "web2py/CHANGELOG at master · web2py/web2py · GitHub". Github.com. 2013-11-28. Retrieved 2013-12-08.
- ^ "Getting Zope 2 — The Zope 2 Application Server". Zope2.zope.org. 2013-07-16. Retrieved 2013-08-18.
- ^ http://ocsigen.org/lwt/install
- ^ "The Opa Blog: Some great news on Opa". Blog.opalang.org. Retrieved 2013-08-18.
- ^ "Grails Plugin: Spring Security Core Plugin". Grails.org. 2012-04-06. Retrieved 2013-08-18.
- ^ "Grails Plugin: Apache Shiro Integration for Grails". Grails.org. 2012-04-11. Retrieved 2013-08-18.
- ^ "Language helper included, must activate & set desired language by parsing HTTP headers". Codeigniter.com\accessdate=2013-08-18.
- ^ "Change Log : CodeIgniter User Guide". EllisLab, Inc. Retrieved 19 March 2012.
{{cite web}}: no-break space character in|title=at position 11 (help) - ^ "PRADO QuickStart Tutorial". Pradosoft.com. Retrieved 2013-08-18.
- ^ "PRADO QuickStart Tutorial". Pradosoft.com. Retrieved 2013-08-18.
- ^ "PRADO QuickStart Tutorial". Pradosoft.com. Retrieved 2013-08-18.
- ^ "PRADO QuickStart Tutorial". Pradosoft.com. Retrieved 2013-08-18.
- ^ "Initial Prototyping: Scaffolding | Building a Blog System Using Yii | Yii PHP Framework". Yiiframework.com. Retrieved 2013-08-18.
- ^ "URLRequest - Adobe ActionScript® 3 (AS3 ) API Reference". Livedocs.adobe.com. 2013-07-01. Retrieved 2013-08-18.
- ^ "ScalaTest". ScalaTest. Retrieved 2013-08-18.