Tiles has served the purpose of rendering views for the Model-View-Controller pattern in JavaEE for years.
Tiles-3 introduces a complete standalone and super simple abstraction around request/response objects.
We've all seen that the various technologies like Servlet, Portlet, JSP, Velocity, FreeMarker seem to have a different abstraction of a common pattern. They all have a concept of:
Now all of these scopes are concentrated into "Request" interfaces, that acts as a single point of reference for the developer. In theory, everything you need for rendering a view can be obtained by an object that implements Request, and Request implementations can be built that do not rely on an application server environment.
Currently there are bindings for Servlet, Portlet, JSP, Mustache, Velocity and FreeMarker.