I spent most of my (little) career until now building web applications using the MVC pattern with action-based (Spring MVC, Struts2, Servelt/JSP) and component-based (Tapestry, JSF) Java technologies. It has always been a classical model where the client requests a server that responds with a HTML page. Of course, I have built ajax powered web apps but I never got the chance to develop a real time single page application with a modern Javascript framework like Angular, Backbone or Ember.
So I decided to give it a try by building ChessHub.io with a completely new technology stack and way of thinking:
- Moving form Java to Javascript
- Moving from SQL to NoSQL
- Moving from multi-threaded Java servers to the single threaded NodeJS
- Moving from classic MVC + Ajax to real time with ExpressJS and Socket IO
- Moving from synchronous processing to an asynchronous model