The Web is RESTful
 In 2000, Roy Fielding, one of the primary authors of the HTTP specifications, wrote a doctoral dissertation titled “Architectural Styles and the Design of Network-based Software Architectures” ([REF1, REF2, REF3]). In this text, he coined the term “Representational State Transfer” to describe the networking principles that characterise the World Wide Web.
In the broadest terms, REST outlines how to define and address sources of specific information, commonly known as resources. Resources are referred to individually with a universal resource identifier, such as the URL used for Web addresses. The term REST often describes any simple interface used to transmit domain-specific data over HTTP without the need for additional messaging layers or session tracking.
REST is an architectural style, not a standard, a protocol or implementation specification. The largest REST application is the Web itself, characterised by the use of HTTP for transport and URLs as addressing mechanisms. REST can support any type of media. [REF4]
REST is a resource-oriented architecture and identifies the key architectural principles of why the World Wide Web is so prevalent and scalable.
The Evolution of Web Application Architectures (from the Java perspective)
Around the year 1995, web pages were mostly static HTML pages served by a classic web server that could have been considered as nothing more than network file servers.
Yet the need of including dynamic content raised and standards like CGI (Common Gateway Interface) or Servlets on the Java side made their entrance.
In 1999, Sun Microsystems released the first version of its J2EE Java 2 Enterprise Edition 1.2 standard, introducing Java Server Pages 1.1. The architecture of J2EE was heavily influenced by distributed computing architectures like CORBA and DCE, and the web presentation technology JSP, based on the servlet technology, was inspired by PHP and ASP. Content was managed by the server and “dynamic” HTML pages where generated on the server before being delivered to the client browser for mostly static display.
Today, in 2012, the topology of the web has changed. Web applications are rich applications doing more than just showing data. They provide rich look-and-feel, are responsive and highly dynamic. Browsers have become powerful run-time environments for executing software. HTML, together with CSS, evolved (and is still evolving) from a simple display description language into a Rich Internet Application (RIA) user interface description standard, taking into account modern SEO, semantic web requirements, the advent of mobile clients, micro formats, the separation of semantic (HTML5) and layout (CSS3), and much more.
HTML5 and CSS3 are designed for the web, both now and in the future. These are the specifications that we will be working with for the next decade at least, so the process of its development is relatively slow and considered. For further reading, see [REF5].
In terms of, the Java ecosystem is fragmented. Many technologies exist, variously advanced and modern. Examples are Struts, Spring MVC, Tapestry, Wickets, JSP, Java ServerFaces (JSF), Grails, GWT, Play!, Stripes, Vaadin, to name a few.
A lot of the modern Java presentation technologies like JSF 2 and Vaadin remove the “burden” of knowing and understanding the principles of the modern web from the Java developer. By keeping a representation and a state of each front-end component (button, list) on the server-side, Java developers interact with the web page using server-side executed Java code, at the price of adding a (sometimes) huge overhead in managing these states and obviously breaking with the nature of the modern web.
The client, in our case the web browser, should handle what it is supposed to handle – the user interaction, and the server should do what it does best, data manipulation, business logic execution and centralisation of domain knowledge – in a presentation agnostic way.
This topology is however not alien to the Java Enterprise world as the existence of a powerful REST support by the Java EE 6 standard (JSR 311, JAX-RS) shows.
Risk Assessment – The Developer
With the architecture discussed in this essay however, we require developers to be “polyglot”.
The concept of polyglot programming exists since quite some time in the IT world [REF6], but with the advent of the modern web, more languages and technologies have been added to the portfolio of the modern Java developer, which has to embrace these new challenges.
Don’t be weary, embrace it!
[REF1] Architectural Styles and the Design of Network-based Software Architectures
UNIVERSITY OF CALIFORNIA, IRVINE
DISSERTATION, DOCTOR OF PHILOSOPHY in Information and Computer Science by Roy Thomas Fielding, 2000
[REF2] Principled Design of the Modern Web Architecture
Roy T. Fielding (Day Software) and Richard N. Taylor
University of California, Irvine, May 2002
[REF3] Principled Design of the ModernWeb Architecture
Roy T. Fielding and Richard N. Taylor
Information and Computer Science, University of California, Irvine, 2000
[REF4] QuickStudy: Representational State Transfer (REST)
It describes the principles that keep things moving smoothly on the Web.
Russell Kay, August 6, 2007
[REF5] Why HTML5 Rocks
[REF6] MEME AGORA, Polyglot Programming
Neal Ford, Dec 05, 2006