There is nothing better than starting a new Web App. I am constantly getting ideas about how to create the next big thing. It is going to use Canvas, CSS3 and bleeding edge JavaScript and be unlike anything that the world has ever seen.
But I am halfway through the client programming when I suddenly realise that I need to communicate with a server. And suddenly reality comes crashing down and I realise that I am going to have to pick a backend language.
So let’s have a look at our options.
PHP
PHP is probably my first choice when it comes to quickly getting data to the client. It is light and seriously easy to install using something like the WAMP server. And communicating with a SQL server is simpler in PHP than any other language.
And it is this simplicity which has lead to its wide spread use. Free and easy for developers of any skill level to use, it is great for developers who just want to get some back end information to their website and with customers like Wikipedia and Facebook it is impossible to deny that it can scale to just about any level.
ASP.NET
ASP.NET is a great technology, for creating websites which integrate into an existing Microsoft technology stack. Having personally developed in ASP.NET for two years I can say that its built in support for things such as permissioning and Data Views makes it great for implementing relatively complex functionality.
If you already have an MSSql authentication server then adding login functionality to your pages is as easy as 3 or 4 clicks and a handful of keystrokes. And with built in support for Ajax and various other JavaScript macros makes it really easy to do complex things.
Of course there are some quite heated opinions about propriety technology and license fees so I will admit that it may not be the technology for everyone.
Sinatra
Sinatra is becoming increasingly popular among Ruby enthusiasts. Its dead simple syntax makes it really easy to create a basic application. I have actually grown to really enjoy Sinatra recently, even though I am not a Ruby fan.
In most languages if you want to create a unique page for different URLs, one has to do some simple regex parser and then redirect depending on what you read. And then to read the Get methods passed, you once again have to perform string splits and push the data into hashmaps etc.
Sinatra performs all these functions as standard, you simply give it the URL you want and the names of the get methods to look for and it does the rest without having to write a stitch of boilerplate code – this really makes it.
Java
Java is of course a very popular choice as well. With so many enterprise systems written in Java, when it comes to creating a Webapp which will provide an interface to this data, it makes sense to use Servlets to reuse as much of the existing code as possible.
In addition, the Java language is prefered many developers over the more… rhapsodian …nature of languages such as Perl, PHP or Ruby. And with dozens (literally) of different frameworks to pick from, there will definitely be something that will suit your tastes.
A special mention has to be made for GWT. While many developers are weary of it due to the fact that it cross compiles from Java to JavaScript, the Google Web Toolkit has been shown to be a very effective tool for creating webapps. And with Eclipse plugin it has become quite popular among some developers at Caplin.
Also, the elephant in the room. As a Caplin Developer it is somewhat of a no brainer for me to use Caplin Xaqua which is build in Java. If you want to stream realtime data to the browser there really is no other choice. If you are reading this I imagine you know all the advantages of using our technology so let us put Xaqua aside.
Node.js
Recently I have seen more and more applications using server-side Javascript, namely Node.js. Node.js has become very popular due to its simple event loop architecture and familiar syntax. Its event driven nature makes it particularly attractive as it allows it to scale to very large numbers of users. I must admit that I haven’t had much experience with this technology so I can’t speak any more about it merits.
So, what should I be using?
What back end language should I be looking at? Are there any options that I am completely unaware of? Incensed that I forgot your favourite technology? Leave a comment!
IF you are considering java but want the ease and speed of rails, try grails!
Always my first choice nowadays.