Monolune

Looking for a Complete Web Framework

Most of the web application frameworks in existence tend to fit into either the front-end category or the back-end category, but not both. I was looking for a web framework that fit into both categories while providing seamless interoperability between front-end and back-end. I had difficulties in finding one. I wonder why. By a 'full stack', 'isomorphic', or 'tierless' web application, I mean a complete web framework that handles and integrates the development of both the front-end (browser-side) and the back-end (server-side). This means that a single programming language can be used for the whole development process.

There are some existing 'full stack' JavaScript web frameworks that allow one to write entire web applications (front-end and back-end) using only one language. Full stack web frameworks tend to be written in JavaScript because the most complex part of a full stack web application is in the front-end which is where JavaScript has to be used, and because JavaScript has to be used anyway, the back-end is also written in JavaScript. With the advent of languages that compile to JavaScript, this does not have to be the case. Full stack web frameworks can just as easily be written using other programming languages where the front-end code can be compiled to JavaScript. Using only one programming language for a task encourages focus because less context and ecosystem switching is needed. This is the main reason to want full stack web frameworks. I do not like to write JavaScript, so I looked for non-JavaScript frameworks.

Specifically, it would be great to have web application frameworks that fulfil these criteria:

  • Uses only one programming language (not JavaScript).
  • No writing of JavaScript necessary (preferably no thinking about JavaScript required).
  • Client side (front-end) and server side (back-end) should be as seamless as possible (i.e. there should be little difference in how client side code is written versus server side code. Preferably zero difference. Preferably so seamless that there is no difference between client and server, like how people write desktop GUI programs).
  • Automatic AJAX as the result of the above.
  • Support for form validations and database abstractions.

I am aware that there are web frameworks that fulfil some or possibly all of the above criteria. For example:

  • Ocsigen - Complete web framework. No writing of JavaScript necessary for making client-server applications that update in real-time. Applications are written in OCaml. Interestingly, this framework has some serious industrial users, including Facebook.

  • AIDA/Web - Complete web framework with seamless AJAX integration. Able to update page based on both client and server side events. Applications are written in Smalltalk.

There are other web-specific programming languages like Links (links-lang) and Opa (opalang), but I am not in favour of using those because they are not general purpose programming languages. With general purpose programming languages, the existing ecosystem can be used. Not so much for web-specific languages, but I would not mind web-specific languages if there are no better choices.

So far, I only have two candidates. I have expected more. Complete web frameworks seem to be uncommon, and people do not seem to demand them. I wonder why.

A variant of this article was originally posted as a question on Stack Overflow, but I removed it after realizing that the question was off-topic. I tried to make a post on Reddit's Web Development sub-forum, but did not have enough 'karma points'. The question had nowhere to go, so I decided to make an article out of it.

Do you know of other complete web frameworks that I have not mentioned?