Comparison of server-side web frameworks
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
Basic information about each framework.
Systems listed on a light purple background are no longer in active development.
ASP.NET
C++
ColdFusion Markup Language (CFML)
Elixir
Haskell
Java
JavaScript
Perl
PHP
Python
Ruby
Scala
Others
Comparison of features
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
ColdFusion Markup Language (CFML)
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
Grails
Groovy
Yes
Yes
Push
Yes
GORM, Hibernate
Unit tests , integration test , functional test
multiple plugins: autobase, dbmigrate, more
Spring Security ,[ 77] Apache Shiro [ 78]
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
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
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
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[ 79]
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[ 80]
Any
Yes
Push
Mostly[ 81]
Third party only
Ready for next release, Unit tests for v.4 and up
Yes
Yes
Yes
Yes
Yes
No[ 82]
Yes
Templates
Fat-Free Framework
≥ 5.4[ 83]
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[ 84]
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[ 85]
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[ 86]
Any
Yes
Push
Yes
Yes
PHPUnit , Selenium , Jasmine
Yes
Yes
Yes
APC , Database, File
Yes
Yes
Yes
Bootstrap
Laminas (formerly Zend Framework )
≥ 7.3[ 87]
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[ 88]
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[ 89]
Any
Yes
Push
Yes
Yes
Codeception PHPUnit
Yes
Yes
Volt, PHP
APC , Memcache , Memory, Redis , Redis Cluster, File
Yes
Yes
Yes
?
Pop PHP
≥ 8.2
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[ 90]
Prototype, script.aculo.us, own components[ 91]
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 [ 91]
APC , Database, eAccelerator , Memcached , XCache
Yes[ 91]
Yes[ 91]
?
?
SilverStripe (Sapphire)
≥ 7.1[ 92]
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[ 93]
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[ 94]
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[ 95]
Any
Yes
Push-pull
Yes
Yes
Yes
Partial
Yes
TYPO3 Fluid
Yes
Yes
Plugin exists
Plugin exists
?
Yii
≥ 5.4[ 96]
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[ 97]
?
?
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
—
—
—
—
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
Pyjs
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
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[ 98]
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
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[ 99]
FlexUnit
Lift
Scala
Yes
Yes
Pull
Yes
Yes
ScalaTest , Selenium [ 100]
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
Lists of frameworks for frontend development:
Other:
References