The Web Framework Evaluation - Part 9 - Appendix
In this article series, we are going to explore web frameworks. This article is taken from my eBook 'The Web Framework Evaluation'.
You can get the eBook at http://www.laliluna.de/shop.
Difference between the free article and the eBook in PDF format.
- eBook is printable
- eBook includes the upcoming detailed framework evaluations about 1-2 months earlier
- eBook includes a number of performance and load tests showing rendering performance and memory consumption under load.
Appendix
References
Hypertext Transfer Protocol � HTTP/1.1 RFC
http://tools.ietf.org/html/rfc2616
Dissertation of Roy Thomas Fielding
http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
Wikipedia article
http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
Related technologies
Google Gears
Allows a web application to interact with the users desktop and store information in a local database
Monkeybars
Allows to write a Java Swing application using JRuby.
http://monkeybars.rubyforge.org/
Template engines
A part from JSP classic web applications may use other technologies to render a page to the browser.
Freemarker
Velocity
MultiP frameworks
MyFaces
A JavaServer faces implementation and component collection for JSF.
Seam
Integration framework which makes the development of applications based on JSF and EJB3 seamless. The range of technologies is more open today and instead of EJB3 you might use simple Java based applications with Hibernate or Spring. There are alternatively view technologies as well, but as the time of writing JSF is still the main focus.
Stripes
A very easy too learn framework which follows an action � request approach like Struts 1
http://www.stripesframework.org/
Struts 1
It is probably still the best known web framework around and present in a lot of existing applications. After a lot of issues with the Struts 2 approach, the project basically died in 2005. Surprisingly there is a minor bugfix release in 2008.
Struts 2
A completely rewritten web framework which has more in common with Webwork than with the former Struts version.
Tapestry or T5
T5 is the newest version of tapestry and is a complete rewrite of the existing code. It is very powerful and elegant but is known to change the API frequently. The version 5 tries to provide a more stable architecture to prevent this.
Webwork
A mature framework existing for many years.
http://www.opensymphony.com/webwork/
Wicket
Wicket has an interesting approach to define components inside of your Java code.
MultiP frameworks based on dynamic languages
Grails
A rails like framework written in Groovy. Its development stack includes the Spring framework and Hibernate.
Merb
Another light framework written in Ruby. It follows an open approach to integrate with different persistent technologies.
Ramaze
A light and elegant framework written in Ruby.
SingleP frameworks (Javascript)
Dojo
Dojo includes a Javascript library and a development model for Javascript applications. In addition it provides widgets including advanced widgets to visualize data in grids and charts.
Google Webtool Kit (GWT)
GWT allows you to develop the code in Java and generate the Javascript application. You can stay with the development language, you probably know quite good � Java � and still get your Javascript application.
http://code.google.com/webtoolkit/
JMaki
A framework developed by Sun with the intention to integrate different widget collections into a single application. Netbeans supports a visual development environment for JMaki.
SingleP frameworks (plugin based)
Adobe Flex
A flash based technology to render business applications in the browser.
http://www.adobe.com/products/flex/
Java FX
A development language and API to create graphical animations. You can integrate Swing components as well and create a nice mixture of a business application together with graphical animations and effects.
Java Swing
Basically, it is a component library to develop desktop applications. But as you can distribute Java Swing application easily using Java WebStart it a possible solution for web applications as well. It is a core part of Java and runs everywhere where Java is running.
http://java.sun.com/javase/technologies/desktop/articles.jsp
Silverlight
Microsoft plugin to create interactive web applications. It supports multiple scripting languages including Ruby and is integrated in Microsoft's development stack.
http://www.microsoft.com/silverlight/
Moonlight (Silverlight for Linux)
This is a port of Silverlight to Linux using Mono.
http://www.mono-project.com/Moonlight
Dynamic languages
Groovy
Groovy is a young language directly coming from the Java community. It doesn't come with a lot of libraries but it can be compiled to Java code and can use everything of Java. You can write your Hibernate or Java code in Groovy, if you like. There are not many web frameworks written in Groovy. At least a well know one is Grails.
JRuby
JRuby is an implementation of Ruby in Java. The base implementation of Ruby is in C. Ruby version 1.0 dates from 1996. It has a very rich library collection. The most popular is the web framework Ruby on Rails.
JPython
JPython is a implementation of Python in Java. The first release of Python dates from 1994. It is know to be rock solid and has a very rich set of libraries.
PHP
PHP is a well known scripting language. The Java based PHP implementation is a project started by the people behind the Jetty servlet engine.
Scala
Scala is a very young language, which dates from 2003. It is intended to use the libraries of Java. I am currently not aware of web frameworks written in Scala, but I have to admit that I don't know Scala very well.
RESTful frameworks
Apache CFX
Is a web service framework which does not only provide support for REST but also for Soap, XML/HTTP and Corba using a variety of protocols.
Jersey
It is the reference implementation and is very complete. The Netbeans IDE provides good support to develop REST with Jersey.
RestEasy
A certified Jax-RS implementation of JBoss.
http://www.jboss.org/resteasy/
Restlet
A light REST implementation with a friendly documentation.
Javascript Libraries and Widgets
Libraries include functions to abstract from Browser dependent Javascript to select parts and modify parts of the DOM tree of the browser. Common functionality is Ajax handling, drap and drop, visual effects, style manipulation and other things.
Widget collections include things like panels, calendar inputs, sliders, tree tables and many more.
Dojo Toolkit
Library for application development with Javascript, includes a number of widgets
JQuery
Library
JQuery UI
Widget collection
MochiKit
Library
http://www.mochikit.com/index.html
Mootools
Library with some widgets
Prototype
Library
Rico
Library
Scriptaculous
Library extension to prototype with some widgets
Yahoo User Interface Library
Widget collections