Comparison of server-side web frameworks
Jump to navigation
Jump to search
This is a comparison of notable web frameworks, software used to build and deploy web applications. This article focuses on frameworks used for building the backend.
General
[edit | edit source]Basic information about each framework.
Systems listed on a light purple background are no longer in active development.
ASP.NET
[edit | edit source]| Project | Current stable version | Release date | License |
|---|---|---|---|
| ASP.NET Dynamic Data | |||
| Base One Foundation Component Library (BFC) | 7.51 | 2018-06-01 | Proprietary |
| Component-based Scalable Logical Architecture (CSLA) | 4.11.2 | 2019-07-31[1] | MIT |
| MonoRail | 2.1 | 2011-03-17[2] | Apache |
C++
[edit | edit source]| Project | Current stable version | Release date | License |
|---|---|---|---|
| CppCMS | 2.0.1 | 2025-11-02[3] | MIT |
| Drogon | 1.9.5 | 2024-06-08[4] | MIT |
| Poco | 1.14.2[5] | 2025-05-12[±] | Boost Software License |
| Wt | 4.10.4 | 2024-03-06[6] | GPL, Proprietary |
ColdFusion Markup Language (CFML)
[edit | edit source]| Project | Current stable version | Release date | License |
|---|---|---|---|
| ColdBox Platform | 7.3.0[7] | 2024-05-14[±] | Apache v2 |
Elixir
[edit | edit source]| Project | Current stable version | Release date | License |
|---|---|---|---|
| Phoenix | ; 0 seconds ago | MIT License |
Haskell
[edit | edit source]| Project | Current stable version | Release date | License |
|---|---|---|---|
| Snap | 1.1.3.2[8] | 2023-07-19 | BSD-3 |
| Yesod |
|
MIT License |
Java
[edit | edit source]| Project | Current stable version | Release date | License |
|---|---|---|---|
| Apache Click | 2.3.0 | 2011-03-27 | Apache 2.0 |
| Apache OFBiz | ; 0 seconds ago | Apache 2.0 | |
| Apache Shale | 1.0.4 | 2007-12-19 | Apache |
| Apache Sling | 12 | 2022-03-18 | Apache 2.0 |
| Apache Struts | ; 0 seconds ago | Apache 2.0 | |
| Apache Tapestry | ; 0 seconds ago | Apache 2.0 | |
| Apache Wicket | ; 0 seconds ago | Apache 2.0 | |
| AppFuse | 3.5.0 | 2015-02-20 | Apache 2.0 |
| Eclipse Mojarra (Jakarta Faces RI) | ; 0 seconds ago | CDDL, GNU GPL 2, Apache 2.0 | |
| Eclipse RAP | 4.1 | 2024-12-04 | Eclipse |
| Grails | ; 0 seconds ago | Apache | |
| Google Web Toolkit | 2.12.2 | 2025-03-03 | Apache 2.0 |
| JBoss Seam | 3.1.0 final | 2012-01-13 | GNU LGPL |
| JWt | ; 0 seconds ago | GPL, Proprietary | |
| Netty | ; 0 seconds ago | Apache License 2.0 | |
| OpenLaszlo | 4.9.0 | 2010-10-21 | CPL |
| Oracle ADF | 12.2.1.4 | 2019-10-09 | Oracle Technology Network Developer License |
| Play | ; 0 seconds ago | Apache 2.0 | |
| Spring | ; 0 seconds ago | Apache 2.0 | |
| Stripes | 1.6.0 | 2015-07-23 | Apache |
| Vaadin | ; 0 seconds ago | Apache 2.0 | |
| Wavemaker | 11.6.0[9] | 2024-03-03 | Apache |
| WebObjects | 5.4.3 | 2008-09-15 | Proprietary |
JavaScript
[edit | edit source]| Project | Current stable version | Release date | License |
|---|---|---|---|
| Express.js | ; 0 seconds ago | MIT License | |
| Fastify | ; 0 seconds ago | MIT License | |
| Meteor | ; 0 seconds ago | MIT License | |
| NestJS | ; 0 seconds ago | MIT License | |
| Next.js | ; 0 seconds ago | MIT License | |
| Nuxt.js | ; 0 seconds ago | MIT License | |
| Remix | ; 0 seconds ago | MIT License | |
| Sails.js | ; 0 seconds ago | MIT License | |
| SvelteKit | ; 0 seconds ago | MIT License |
Perl
[edit | edit source]| Project | Current stable version | Release date | License |
|---|---|---|---|
| Catalyst | 5.90131[10] | 2023-07-20[±] | Artistic, GPL |
| Dancer | 1.1.1 [11] | 2024-07-18[±] | Artistic, GPL |
| Maypole | 2.13 | 2008-04-18 | Artistic, GPL |
| Mojolicious | 9.37[12] | 2024-05-13[±] | Artistic |
PHP
[edit | edit source]| Project | Start date | Current stable version | Release date | License |
|---|---|---|---|---|
| CakePHP | 2005-08 |
|
MIT | |
| CodeIgniter | 2006-02-28 |
|
MIT | |
| Fat-Free | 2009-09 | 3.9.0[13] | 2024-12-29[±] | GPLv3 |
| FuelPHP | 2011-08 | 1.9.0[14] | 2021-12-28[±] | MIT |
| Gyroscope | 2008-11-20 | 20.4[15] | 2023-11-24 | BSD |
| Jamroom | 2003-07-28 | 7.0.1[16] | 2024-01-01[±] | MPL |
| Kajona | 2006 | 6.2[17] | 2017-06-08 | LGPLv2 |
| Laminas (formerly Zend Framework) | 2006-03 | 3.8.0[18] | 2024-11-21 | New BSD |
| Laravel | 2011-07-31 |
|
MIT | |
| Li3 (Lithium) | 2009-10 | 2.0.1[19] | 2024-03-218[±] | BSD |
| Phalcon | 2012-11-14 | 5.8.0[20] | 2024-07-09 | BSD |
| Pop PHP | 2012-03-19 | 6.0.0[21] | 2025-11-03 | BSD Licence |
| PRADO | 2004-01 | 4.3.1[22] | 2025-05-21[±] | New BSD[23] |
| SilverStripe | 2007-02-03 | 5.3.0[24] | 2024-11-04[±] | BSD |
| Smart.Framework | 2015-02-01 | svn.1925[25] | 2024-01-19[±] | BSD |
| Symfony | 2005-10 | 7.3.0[26] | 2025-05-29[±] | MIT |
| Yii | 2008-12-03 | 2.0.52[27] | 2025-08-13[±] | New BSD |
Python
[edit | edit source]| Project | Current stable version | Release date | License |
|---|---|---|---|
| BlueBream | ; 0 seconds ago | ZPL | |
| CherryPy | ; 0 seconds ago | BSD | |
| CubicWeb | ; 0 seconds ago | LGPL | |
| Django | ; 0 seconds ago | BSD | |
| FastAPI | ; 0 seconds ago | MIT | |
| Flask | ; 0 seconds ago | BSD | |
| Google App Engine | ; 0 seconds ago | LGPL, Proprietary | |
| Grok | ; 0 seconds ago | ZPL | |
| Gunicorn | ; 0 seconds ago | MIT | |
| Pylons | ; 0 seconds ago | BSD | |
| Pyramid | ; 0 seconds ago | BSD | |
| Tornado | ; 0 seconds ago | Apache | |
| TurboGears | ; 0 seconds ago | MIT, LGPL | |
| web2py | ; 0 seconds ago | LGPL3 | |
| Zope 2 | ; 0 seconds ago | ZPL |
Ruby
[edit | edit source]| Project | Current stable version | Release date | License |
|---|---|---|---|
| Padrino | 0.14.4 | 2019-01-14[28] | MIT |
| Ruby on Rails | ; 0 seconds ago | MIT | |
| Sinatra | ; 0 seconds ago | MIT |
Scala
[edit | edit source]| Project | Current stable version | Release date | License |
|---|---|---|---|
| Lift | 3.4.3 | 2020-11-28 | Apache 2.0 |
| Play | 2.8.8 | 2021-04-08 | Apache 2.0 |
| Scalatra | 2.8.1 | 2021-09-25 | BSD |
Others
[edit | edit source]| Project | Language | Current stable version | Release date | License |
|---|---|---|---|---|
| AIDA/Web | Smalltalk | 6.7 | 2014-09-14 | MIT |
| Oracle APEX | PL/SQL | 22.2 | 2022-11-10 | Proprietary freeware |
| Flex | ActionScript, MXML | 4.16.1 | 2019-11-23 | Apache |
| Grails | Groovy (JVM) | 6.2.2[29] | 2024-11-20 | Apache |
| Morfik | C#, BASIC, Pascal, Java | 3.0.8.1 | 2010-12-13 | Proprietary freeware |
| Opa | Opa | 1.1.1 | 2013-04-16[30] | MIT and AGPL |
| OpenACS | Tcl | 5.10.1[31] | 2024-09-03 | GPL |
| Rocket | Rust | 0.5.1[32] | 2024-05-23 | MIT or Apache |
| Tokio | Rust | 1.48.0[33] | 2025-10-14 | MIT |
| Seaside | Smalltalk | 3.5.9[34] | 2024-10-20 | MIT |
Comparison of features
[edit | edit source]C++
[edit | edit source]| 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 |
ColdFusion Markup Language (CFML)
[edit | edit source]| 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 | Quick & cbORM | Yes via TestBox | Yes | Yes | CFML | Yes | Yes |
Java
[edit | edit source]| 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 | |
| Grails | Groovy | Yes | Yes | Push | Yes | GORM, Hibernate | Unit tests, integration test, functional test | multiple plugins: autobase, dbmigrate, more | Spring Security,[35] Apache Shiro[36] | Yes | Yes | Yes |
| JavaServer Faces | Java | Yes | Yes | Pull | Yes | JPA, Hibernate and any other Java EE ORM framework | JUnit | Yes | Facelets, JSP | Yes | Native validators, integration with Bean 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) |
| JBoss Seam | Java | Yes | Yes | Pull | Yes | JPA, Hibernate | JUnit, TestNG | JAAS integration, Drools, Hibernate Filters, OpenID, CAPTCHA | Facelets | JBoss Cache, Ehcache | Hibernate Validator | |
| JWt | Java | Yes | Yes | Push-pull | Yes | Yes | Yes | Yes | ||||
| Play | Java, Scala | Yes | Yes | Push-pull | Yes | JPA, Hibernate | JUnit, Selenium | Yes | via Core Security module | Yes | Yes | Server-side validation |
| 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 | Push-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 |
| 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) |
| WebObjects | Java | Yes | Yes | Push-pull | Yes | EOF | WOUnit (JUnit), TestNG, Selenium | in Project WONDER | Yes | Yes | Yes | |
| 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
[edit | edit source]| 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) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| AngularJS | XHR, JSONP | Yes | i18n and l10n | Karma (unit testing), Protractor (end-to-end testing) | Content Security Policy (CSP), XSRF | Templates | Caching | Form validation (client-side) | |||
| EmberJS | Yes | Yes | Yes | Ember Data | QUnit | Handlebars | |||||
| qooxdoo | Yes | Data binding | i18n | Testrunner | Form Validation | ||||||
| SproutCore | Yes | Yes |
Perl
[edit | edit source]| 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) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Catalyst | 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 | 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 |
| Maypole | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
| Mojolicious | 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
[edit | edit source]| Project | PHP version | 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 | RAD | Mobility |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CakePHP | ≥ 7.4[37] | Any | Yes | Yes, Push & Cells | Yes | ORM, Data Mapper Pattern, SQL Relational Algebra Abstraction Layer | Unit tests, object mocking, fixtures, code coverage, memory analysis with PHPUnit and Xdebug and Continuous Integration via Travis | Yes | CRUD based, ACL-based, Multiple Plugins | Themes, Layouts, Cells, Views, Elements, Plugins for Twig, Bootstrap, etc. | Memcache, Redis, XCache, APC, File | Validation via Contexts (Table (DAO), Entity (VO) & Controller), CSRF Protection | Plugin CRUD | Cake Bake | Mobile Agent Detection, Layouts |
| CodeIgniter | ≥ 8.1[38] | Any | Yes | Push | Mostly[39] | Third party only | Ready for next release, Unit tests for v.4 and up | Yes | Yes | Yes | Yes | Yes | No[40] | Yes | Templates |
| Fat-Free Framework | ≥ 5.4[41] | 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 | ≥ 5.3.3[42] | Yes | MVC, HMVC | Push | Yes | Yes | PHPUnit | Yes | Yes, Plugins available | Yes, Plugins available | File, Redis, Memcache, more | Yes | Yes | ? | ? |
| Gyroscope | ≥ 5.4 | nano.js, replaceable[43] | LCHH | Push-pull | Mostly | Data-source agnostic | No | Built-in Schema comparison tool and UDF editor | ACL-based, replaceable | Implementation-specific; helper functions and theme templates available | APC, Memcache | Yes | Interactive code generator | Yes | Dedicated mobile and tablet layouts, landscape-portrait transformation |
| Kajona | ≥ 7[44] | Any | Yes | Push | Yes | Yes | PHPUnit, Selenium, Jasmine | Yes | Yes | Yes | APC, Database, File | Yes | Yes | Yes | Bootstrap |
| Laminas (formerly Zend Framework) | ≥ 7.3[45] | 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 | ? | ? |
| Laravel | ≥ 8.0[46] | Any | Yes | Push | Yes | Eloquent | PHPUnit | Yes | Yes | Yes | APC, Database, File, Memcache, Redis | Yes | Yes | Yes | Yes |
| Li3 (Lithium) | ≥ 5.3.6 | Any | Yes | Push | Yes | Yes | Unit tests, builtin test framework or other independent | No | Yes, Plugins available | PHP, Twig Plugin available | Memcache, Redis, XCache, APC, File | Yes, with CSRF Protection and Form Signing | No | Yes | ? |
| Phalcon | ≥ 8.0[47] | Any | Yes | Push | Yes | Yes | Codeception PHPUnit | Yes | Yes | Volt, PHP | APC, Memcache, Memory, Redis, Redis Cluster, File | Yes | Yes | Yes | ? |
| Pop PHP | ≥ 8.3 | Any | Yes | Push | Yes | Yes | PHPUnit with CI via GitHub Actions | Yes | ACL-based | Yes | APC, Database, File, Memcache, Redis, Session | Yes | Yes | Yes | ? |
| PRADO | ≥ 7.3[48] | Prototype, script.aculo.us, own components[49] | No | Push-pull | Yes | Data access objects (DAO), active record pattern, SQLMap data mapper | PHPUnit, SimpleTest, Selenium | No | Yes | XML-based, similar to ASP.NETs[49] | APC, Database, eAccelerator, Memcached, XCache | Yes[49] | Yes[49] | ? | ? |
| SilverStripe (Sapphire) | ≥ 7.1[50] | jQuery, jQuery UI | Yes | Push-pull | Yes | Active record pattern | Unit tests, Selenium | Automatic | incl. OpenID | Themes | Yes | Yes | Yes | Yes | Yes |
| Silex | ≥ 5.3.9 | Yes | Yes | Yes | Yes | Plugin exists (Doctrine) | Yes | No | Yes | PHP, Twig | Plugin exists | Yes | Plugin exists | ? | ? |
| Smart.Framework | ≥ 7.3[51] | Yes | Yes | Yes | Yes | Yes (PostgreSQL, MySQL, SQLite, MongoDB, Solr, others via plugins) | Yes | No | Yes | Yes (Markers, Twig, others via plugins) | Yes (File, Redis, others via plugins) | Yes | No | Yes | Yes, (jQuery mobile, Bootstrap, others via plugins) |
| Symfony | ≥ 8.1[52] | 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 | ? | ? |
| TYPO3 | ≥ 7.2[53] | Any | Yes | Push-pull | Yes | Yes | Yes | Partial | Yes | TYPO3 Fluid | Yes | Yes | Plugin exists | Plugin exists | ? |
| Yii | ≥ 5.4[54] | 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[55] | ? | ? |
Python
[edit | edit source]| 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 | — | — | — | — | pluggable | — | — | — | pluggable | — | — | Yes |
| Django | Python | Yes | Yes | Push | Yes | Yes | Yes | Yes | Yes | built-in, Jinja2, Mako, Cheetah | Yes | Yes | Yes |
| FastAPI | Python | Yes | — | — | — | ORM-agnostic | via pytest | depends on ORM | Yes | Jinja2 | — | Yes | Yes |
| Flask | Python | Yes | — | — | Yes | ORM-agnostic | via unittest | depends on ORM | Yes | Jinja2 | Yes | Yes | Yes |
| Jam.py | Python, JavaScript | Yes | Event driven | Yes | Yes | Yes | via pytest and mocha | Yes | Yes | Yes | Yes | Yes | Yes |
| 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 | native: pluggable: Redis, Beaker (memory, memcached, file, databases) | preferred formencode | No | |
| Pyramid | Python | Yes | Yes | Push | Yes | ORM-agnostic | Yes | depends on ORM | Yes | pluggable: Jinja2, Chameleon, Mako, Genshi, more | default: native session factory. pluggable: Redis, PyNaCl, Beaker (memory, memcached, file, databases), more | deform, formencode, WTForms, more | Yes |
| TACTIC | Python | Yes | Yes | Pull | No | Yes | Yes | Yes | Yes | Mako | No | Yes | No |
| Tornado | Python | See Advanced Async Example implements AJAX | — | — | — | — | — | — | — | — | — | — | Yes |
| 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 | Yes |
| web2py | Python | Yes | Yes | Push | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes[56] |
| 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 |
Ruby
[edit | edit source]| 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) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 Rack middleware | Yes | through Rack middleware | No |
Others
[edit | edit source]| 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[57] | FlexUnit | |||||||||
| Lift | Scala | Yes | Yes | Pull | Yes | Yes | ScalaTest, Selenium[58] | Yes | Yes | 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
[edit | edit source]Lua error in mw.title.lua at line 392: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal'). Lists of frameworks for frontend development:
Other:
- Common Gateway Interface, used before web frameworks
- Comparison of shopping cart software
- Content management system
- Dynamic web page
- Java view technologies and frameworks
- List of content management systems
- List of rich web application frameworks
- List of web service frameworks
References
[edit | edit source]- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ a b c d Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).