Comparison of web application frameworks
From Wikipedia, the free encyclopedia
(Redirected from List of web application frameworks)
This is a comparison of notable web application frameworks.
Contents |
[edit] General
| This section of the article is too long to read comfortably, and needs subsections. Please format the article according to the guidelines laid out at Wikipedia:Manual of Style (headings) |
Basic information about each framework.
[edit] Comparison of features
| This section of the article is too long to read comfortably, and needs subsections. Please format the article according to the guidelines laid out at Wikipedia:Manual of Style (headings) |
| 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 | ||||||
| Agavi | PHP | Toolkit-independent | Yes | Push | Yes | Doctrine & Propel integration | PHPUnit | Yes | Any template engine supported | Yes | Yes | |
| Ajile | JavaScript | Yes | Yes | Push & Pull | Yes | jsUnit | Yes | Yes | ||||
| Akelos | PHP | Prototype, script.aculo.us | Active record pattern | Push | Yes | Active record pattern | Unit Tests | Yes | Yes | Yes | Yes | |
| Apache Click | Java | Yes | Yes | Pull | Yes | Hibernate and Cayenne | Velocity and JSP | Built-in validation | ||||
| Apache Struts | Java | Yes | Yes | Push & Pull | Yes | Yes | Unit Tests | Yes | Yes | |||
| Apache Wicket | Java | Yes | Modular event driven | Pull | Yes | Yes | Yes | Yes | Yes | Yes | ||
| Aranea | Java | Yes | Pull | Yes | Yes | mapping-applications using contributions from users to advantage | ||||||
| ASP.NET MVC | ASP.NET | Yes | Yes | Push | ORM-independent | Unit Tests | ASP.NET Forms Auth | pluggable (default is WebForms) | Yes | Yes (client-side via plugins) | ||
| BFC | ASP.NET | 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 |
| CakePHP | PHP | Prototype, script.aculo.us | Active record pattern | Push | Yes | Active record pattern | Unit Tests | Yes | ACL-based | Yes | Yes | Yes |
| Camping | Ruby | No | Yes | Push | No | Active record pattern | via Mosquito | Yes | No | Yes | No | No |
| Catalyst | Perl | Toolkit-independent (REST & JSON support, specific plugins for Prototype etc.) | Yes | Push in its most common usage | Yes | DBIx::Class, Rose::DB, etc. | [1] | ACL-based, external engines, etc. | Template::Toolkit, HTML::Template, HTML::Mason, etc. | Cache, Memcached, shared memory, etc. | HTML::FormFu, HTML::FormValidator, etc. | |
| CherryPy | Python | Yes | No, because unittest and doctest are standard Python modules | CherryTemplate | Yes | |||||||
| CodeIgniter | PHP | framework extension | Modified active record pattern | Push | Yes | framework extension | Unit Tests | No | Yes | Yes | Yes | Yes |
| CppCMS | C++ | Yes | Push | Yes | Limited, SQL library | No | No | No | Yes | Yes | Yes | |
| Django | Python | Yes | Yes | Push | Yes | Django ORM | Yes | No (plugin exists, might be merged into trunk when more stable and feature complete) | ACL-based | Yes | Yes | Yes |
| DotNetNuke | ASP.NET | 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 |
| Drupal | PHP | jQuery | Yes[2][3] | Yes[4][5] | multiple (CCK, QCubed)[6] | simpletest, devel | Schema API | OG, Node Privacy By Role, ACL, Taxonomy Access List | PHPTemplate, Smarty, XTemplate, others | builtin, memcache, APC | Form API | |
| eZ Components | PHP | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
| Flex | Actionscript, MXML | Not by name but similar technology [7] | FlexUnit | |||||||||
| FUSE | PHP | Yes | Yes | Push | custom | Yes | SimpleTest | Yes | Yes | Yes | Yes | |
| Fusebox | ColdFusion, PHP | Yes | Not mandatory | Push | No, custom | via lexicons for Transfer and Reactor | CFUnit, CFCUnit | multiple plugins available | via lexicon for ColdSpring | via qforms or built in cf validation | ||
| Google Web Toolkit | Java, Javascript | Yes | Yes | ???, no direct data access | JUnit (too early), jsUnit (too difficult), Selenium (best) | No | ||||||
| Grails | Groovy | Yes | Active record pattern | Push | Yes | GORM, Hibernate | Unit Test | multiple plugins(autobase, dbmigrate, etc.) | Yes | Yes | Yes | Yes |
| Grok | Python | Yes | Yes | Pull | Yes | OODBMS called ZODB, SQLAlchemy, Storm | Unit Tests, Functional Tests | ZODB Generations | Yes | Yes | Yes | Yes |
| ItsNat | Java | Yes | event driven | Push | using Java i18n | external and built-in | pluggable | pure HTML/SVG | page caching | normal Java | ||
| IT Mill Toolkit | Java | GWT | Pull | Yes | Yes | JUnit, IT Mill Testing Tools | Yes | Yes | ||||
| JBoss Seam | Java | Yes | Pull | Yes | JPA, Hibernate | JUnit, TestNG | JAAS integration | Facelets | Hibernate Validator | |||
| Kohana | PHP | Yes | Push | Yes | framework extension | unit_test module | File and SQLite Driver based caches | Yes | ||||
| Lift | Scala | Yes | Yes | Pull | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
| Mach-II | CFML | via CF or any JavaScript Library | Yes | Push | via custom plugin | Transfer, Reactor, Hibernate | CFUnit, CFCUnit | via plugin | ColdSpring | |||
| Midgard | PHP | jQuery | MidCOM | Pull | Yes | Midgard | PHPUnit | datagard | ACL-based | PHP and TAL | memcache | Yes |
| MonoRail | ASP.NET | Prototype | Active record pattern | Push | Yes | Active record pattern | Unit Tests | via ASP.NET Forms Authentication | Yes | Yes | Yes | |
| Nitro | Ruby | jQuery | Yes | Push | Yes | Og | RSpec | (automatic) | Yes | Yes | Yes | Yes |
| onTap | ColdFusion | native features + Prototype + script.aculo.us | optional | Push | Yes | DataFaucet [3] | CFUnit, CFCUnit, MXUnit | DataFaucet has potential - supports multiple db platforms | Members onTap Plugin | very extensible | Yes | client + server, extensible |
| OpenACS | TCL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
| 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 | |
| Orinoco | PHP | Toolkit-independent | Yes | Push & Pull | Yes | |||||||
| PEAR | PHP | |||||||||||
| Pyjamas | Python, Javascript | Yes | Yes | ???, no direct data access | No | |||||||
| Pylons | Python | helpers for Prototype and script.aculo.us | Yes | Push | Yes | SQLObject, SQLAlchemy | via nose | pluggable (mako, genshi, myghty, kid, etc.) | Beaker cache (memory, memcached, file, databases) | preferred formencode | ||
| Qcodo | PHP 5 | built-in | QControl | Push | Yes | Code Generation-based | Inherent | QForm and QControl | Yes | Yes | ||
| RIFE | Java | DWR (Java) | Yes | Push & Pull | Yes | Yes | Out of container testing | Yes | Yes | Integration with Terracotta | Yes | |
| Ruby on Rails | Ruby | Prototype, script.aculo.us | ActiveRecord, Action Pack | Push | Localization Plug-in | ActiveRecord | Unit Tests, Functional Tests and Integration Tests | Yes | Plug-in | Yes | Yes | Yes |
| Seaside | Smalltalk | Prototype, script.aculo.us, etc. | Yes | GLORP, Gemstone/S, etc. | Unit Tests, SUnit | No, intentionally | Magritte | |||||
| SilverStripe (Sapphire) | PHP 5 (>=5.2) | Prototype, script.aculo.us | Active record pattern | Push & Pull | Yes | Active record pattern | Unit Tests | (Automatic) | incl. OpenID | (object oriented) | Yes | Yes |
| Spring | Java | Yes | Yes | Hibernate, iBatis, etc | Spring Security (formerly Acegi) | Commons Tiles, Velocity, etc. | ehcache etc. | Commons Validator | ||||
| Stripes | Java | Yes | Yes | Push | Yes | Hibernate | Yes | framework extension | Yes | Yes | ||
| Symfony | PHP 5 | Prototype, script.aculo.us, Unobtrusive Ajax with UJS and PJS plugins | Yes | Push | Yes | Propel, Doctrine | Yes | Plugin exists (alpha code, though) | plugin | Yes | Yes | Yes |
| Tapestry | Java | Yes | Yes | Pull | Yes | integrated with Hibernate (tapestry-hibernate module) | tapestry5-acegi library | Yes | built-in validation system | |||
| Tigermouse | PHP 5 | it is mostly Ajax-only framework | Active record pattern | Push | Yes | Active record pattern | No | No, Multiple RBMSes and access libraries supported | through intercepting filters (ACL-based, customizable) | Yes | No | Yes |
| TurboGears | Python | Toolkit-independent, provides support via JSON | Yes | Push | Yes | SQLAlchemy (default), SQLObject | nose | No | Repoze.what & Repoze.who | Genshi, additional plugins available | Support for memcached, and any WSGI compliant system | ToscaWidgets, utilizing FormEncode |
| 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 |
| web2py | Python | Yes | Yes | Push | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| WebObjects | Java | Yes | Yes | Push & Pull | Yes | EOF | WOUnit (JUnit), TestNG, Selenium | in Project WONDER | Yes | Yes | Yes | |
| Wigbi | PHP, JavaScript | Wigbi AJAX engine, jQuery, MooTools | No | No | Custom | Wigbi ORM engine | Plug-in | Plug-in | ||||
| ZK | Java, ZUML | Yes | Yes | Yes | any J2EE ORM framework | |||||||
| Zend | PHP 5 (>=5.2.4) | Toolkit-independent | Yes | Push & Pull | Yes | Table and Row data gateway | Unit Tests | Yes | ACL-based | Yes | Yes | Yes |
| Zope 2 | Python | Yes | Pull | Yes | native OODBMS called ZODB, SQLObject, SQLAlchemy | Unit Tests | ACL-based | Yes | Yes | CMFFormController | ||
| Zope 3 | Python | via add-on products, e.g. Plone w/KSS | Yes | Pull | Yes | native OODBMS called ZODB, SQLObject, SQLAlchemy | Unit Tests, Functional Tests | ZODB generations | ACL-based | 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) | ||
| 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) |
[edit] References
http://www.phpwact.org/php/mvc_frameworks
http://java-source.net/open-source/web-frameworks
http://pythonsource.com/open-source/web-frameworks
- ^ Catalyst::Manual::Tutorial::Testing - Catalyst Tutorial - Part 7: Testing - search.cpan.org
- ^ Drupal as an MVC framework
- ^ MVC vs. PAC
- ^ [1]
- ^ [2]
- ^ QDrupal
- ^ URLRequest

