Inspired by a talk from Thomas Thwaites about the complexity of creating a simple toaster from scratch, I thought it would be a nice idea to decompose an application I recently build to give you an indication of the complexity.

But first let’s watch Thomas’s talk:

I will use the Kluwer Support portal I recently built as an example. I created a new portlet which was deployed into Liferay, an enterprise portal, which runs on top of the JBoss Application Server which is programmed in Java running on the Java Virtual Machine running on top of the CentOS operating system running on top of an Hardware Abstraction Layer running on top of hardware. Liferay uses Spring to inject services  in my portlet which retrieve data through Hibernate from MySQL.

In order to implement the customer requirements the portlet had to use Spring to separate presentation from business logic which connect to a SOAP web service through HTTP using Axis in order to retrieve data which was index by Solr, a Lucene based search server in order to be able to render a search form using JavaServer Pages and Velocity as HTML which is styled using CSS and made interactively using JavaScript.

If this technological enumeration (a total of 21) makes your head spin you got another thing coming because I only scratched the surface. I estimate it took an army of a million computer scientists over a billion man-hours to make this application work. A small miracle in my opinion!