The best programming language or platform for mobile backend development depends on the application itself. This is because different languages can be used to achieve different outcomes.
Furthermore, it also depends on whether you want to leverage backend ecosystems that are already there (for example, in web development, to leverage Drupal or WordPress, PHP makes the most sense). Sometimes, the architecture of the backend can also end up being more important than the coding language itself.
So where do you start? Sure there are a lot of choices, but at Intersog, we like the three listed below above everything else.
1. Elixir
Elixir (or even Erlang) is a great choice for backend development of mobile apps if you expect to see heavy traffic. This approach will also save you a lot of time and headache as you don’t have to worry about scaling.
Elixir will reduce your build time if you expect low traffic. This is because you won’t have to spend much time building your backend from scratch.
Elixir is built on top of Erlang and the primary benefit of the latter is fault tolerance. Furthermore, Erlang also does concurrency quite well with the help of a virtual machine. Elixir, on the other hand, lets you do a lot more with significantly less code.
However, there are some vendor lock-ins that can become a problem later on. But if time to market is your priority, it might be worth it.
Speaking of time to market, there is an even faster option. In this scenario, you’re probably better off checking out Google’s Firebase!
2. Firebase
If you’re aiming to develop an MVP asap, then Google’s Firebase will probably be your best bet. By taking advantage of this tool, you can basically build the app quickly without ever having to worry about the infrastructure.
This programming language comes with a lot of built-in features that also help speed things up. Furthermore, you also get access to the cloud servers and file storage.
However, if you’re going to use Firebase, you will have to add an extra method to provide data relations. The best option here is to use JSON to cross-link objects to implement these relations.
Because it’s built on a cloud server much like an enterprise solution that offers more stability, we at Intersog are huge fans of Firebase!
Check out case study: How We Built a Native Android App Using Firebase
3. Go
While there has been a lot of chatter about Go (often called golang) recently, few mobile app developers I have spoken to seem to like it. It really doesn’t offer much more when compared to other languages like Ruby. One of the key reasons why many developers don't like using Go is the fact that since it's a Google-owned language, they can have some copyright issues, which isn't likely in reality. Others are biased against Golang as they don't think this language is a major improvement over other languages and don't understand why they should waste their time learning it at all.
Go is bootstrapped, relatively new and is perfectly suited for writing micro services, while Java/C# will likely continue to dominate in the enterprise environment.
Go has decent libraries, frameworks and support in IDEs, but not as good as in the Javaland. It actually brings a new style of programming to the table, and its constructs are simpler to understand and use than, say, Scala or Java.
For a basic backend, Go again is not the best option because you will have to write a lot of the boilerplate code.
By the way, one of the biggest evangelists and contributors to the global Node.js community, TJ Holowaychuk moved from Node.js to Go back in 2014 and he wrote a famous Farewell Node.js article on Medium explaining why Go is a way to go.
"Error-handling in Go is superior in my opinion, " TJ Holowaychuk
In addition, Java is a great programming language to build and scale apps and websites. What’s more, if your app needs a large amount of code, Java is the way forward.
While it’s a bit slower and more complicated than other languages like PHP, Java is better designed enabling you to start from a clean base. Furthermore, implementations are by default and compiled into native code for high performance.
So I guess we won’t hear much about it in the future unless there are some drastic changes!