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.

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

http://gears.google.com/

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

http://www.freemarker.org/

Velocity

http://velocity.apache.org/

MultiP frameworks

MyFaces

A JavaServer faces implementation and component collection for JSF.

http://myfaces.apache.org/

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.

http://www.seamframework.org/

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.

http://struts.apache.org/

Struts 2

A completely rewritten web framework which has more in common with Webwork than with the former Struts version.

http://struts.apache.org/

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.

http://tapestry.apache.org/

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.

http://wicket.apache.org/

MultiP frameworks based on dynamic languages

Grails

A rails like framework written in Groovy. Its development stack includes the Spring framework and Hibernate.

http://grails.org/

Merb

Another light framework written in Ruby. It follows an open approach to integrate with different persistent technologies.

http://merbivore.com/

Ramaze

A light and elegant framework written in Ruby.

http://www.ramaze.net/

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.

http://www.dojotoolkit.org/

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.

https://ajax.dev.java.net/

SingleP frameworks (plugin based)

Adobe Flex

A flash based technology to render business applications in the browser.

http://www.adobe.com/products/flex/

http://flex.org/

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.

http://javafx.com/

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.

http://groovy.codehaus.org/

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.

http://jruby.codehaus.org/

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.

http://www.jython.org

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.

http://www.mortbay.org/jetty/

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.

http://www.scala-lang.org


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.

http://cxf.apache.org/

Jersey

It is the reference implementation and is very complete. The Netbeans IDE provides good support to develop REST with Jersey.

https://jersey.dev.java.net/

RestEasy

A certified Jax-RS implementation of JBoss.

http://www.jboss.org/resteasy/

Restlet

A light REST implementation with a friendly documentation.

http://www.restlet.org/



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

http://dojotoolkit.org/

JQuery

Library

http://jquery.com/

JQuery UI

Widget collection

http://ui.jquery.com/

MochiKit

Library

http://www.mochikit.com/index.html

Mootools

Library with some widgets

http://mootools.net/

Prototype

Library

http://www.prototypejs.org/

Rico

Library

http://openrico.org/

Scriptaculous

Library extension to prototype with some widgets

http://script.aculo.us/

Yahoo User Interface Library

Widget collections

http://developer.yahoo.com/yui/