The world of the internet evolves at a frenzied pace. Every day sees new ideas and frameworks, and it is easy to get lost both at the client/frontend side and the server/backend side. However, there are clear trends. Over the last few years, we have moved away from backend frameworks that represented the entire page with every request, and a small Javascript layer which made the application dynamic. We now have backends that present an API to the customer, and complex JavaScript frameworks which use this API and mobile applications.
In this context, over the last few years the largest companies in the sector have put a lot of effort and money into making JavaScript an extremely fast platform. And it has quickly gone from a language everybody joked about because it was written in 10 days to the language of choice.
We are living interesting times in which each new framework tries to add its own grain of sand. Frameworks such as Angular try to make a complex frontend framework into something manageable. React Native among others try to offer a platform for writing both mobile and web applications. And there are also options such as Meteor that try to close the gap between backend and frontend and provide a single framework for both.
There are also in-depth ideas that are becoming more popular and refer to both server and client. These concern the use of functional programming patterns instead of the traditional object-based approach; the aim is to achieve a cleaner code and benefit from its advantages in a competitive market. Scala and Erlang/Elixir are two prominent names in this area. Additionally, the different uses of JavaScript try to maximize its functional aspects.
After mentioning these general trends, we are now going to look into the most noteworthy frontend and backend frameworks.
Angular
Image source: WikiMedia Commons
Created by Google, Angular has quickly become the most popular client framework thanks to its innovative ideas. It uses directives similar to HTML tags which Angular manages itself. It has been specifically designed for complex projects: it provides tools for managing dependencies, models, controllers and routing.
But the Angular team is preparing a second, fully rewritten version of the framework. It will be written in TypeScript, a JavaScript compiler. Even though Google has promised to keep the first version, it may be time to begin work on 2.0.
React
Image source: WikiMedia Commons
Published in 2013 with the backing of Facebook, React is becoming popular at a spectacular speed. It is unavoidable to compare it to Angular: unlike Google’s solution, React is more heavily focused on the user interface and representing changes in the application status efficiently. It has been designed to enable combinations with other libraries such as routers or Flex for model management.
One of React’s strengths is the React Native project: it offers native performance on iOS and Android platforms by transferring JavaScript code to native components. Even though there is still a long way to go before you can write a single application and run it on all three platforms, and you still need to write a version for each system, React Native does allows you learn only one technology and reuse it on the web, iOS and Android. And if you do it right, you can even reuse most of the code.
Polymer
Published in 2013 by Google, Polymer is a component-oriented library. The idea is to create websites from reusable elements so that you can compose applications from blocks without having to master their internal operation. In this way, HTML is extended in a natural manner.
While Angular is intended for comprehensive development, Polymer focuses on the presentation layer and can be integrated with other frameworks such as Angular2.
Meteor
Another example from the JavaScript ecosystem, Meteor is a backend and client framework that aims to develop applications quickly, and reduce the time to production of the first version as much as possible. In other words, it is rooted in the culture of ‘fail fast’. For this reason, it may be a good option for start-ups that wish to test their ideas in the market without having to invest time and money in developing the first version. It contains very interesting concepts such as a database at the client side, MiniMongo, which synchronizes with the server in real time using WebSockets.
Phoenix
Now, let’s talk about backend. Even though Ericsson’s language, Erlang, is turning 30 next year, its extraordinary virtual machine specialized in mass scalability and tolerance to system failures is having a new lease of life in web backends. Members of the Ruby community have created Elixir. With a more friendly syntaxis than Erlang, this language smooths out the learning curve without compromising maximum platform utilization.
Elixir’s most promising web framework is Phoenix. Version 1.0.0 was published three months ago with spectacular performance results. This is a very promising proposal for project backends with growth aspirations.
The world of Scala
Over the last few years, very promising new languages have been born into the world of Java. They run on its virtual machine and can reuse libraries created in Java. First, we have Clojure. You only have to watch its creator’s conferences to realize that this Lisp is worth your while. And then there is Scala. A functional language, Scala also allows you to program in the traditional imperative fashion. This may reduce the learning curve, and it explores the enthusiasm of a large number of Java developers who are looking for a more expressive language.
Even though Scala is not restricted to the web, it has very powerful backend frameworks such as Play and Akka.
Haskell and its environment
Although not many people can say they use it on a daily basis, Haskell deserves a second look. This functional language is pure and strongly typed. It is likely not used by many and presents a hard learning curve but its extremely solid underlying ideas are spilling into other platforms. It is often the case that the creators of the most innovative languages and frameworks are familiar with Haskell, and we often employ these ideas without being aware of it. Scala and Clojure? There is always someone exchanging emails about how they compare to Haskell. JavaScript promises? A lot of people regard them as Haskell monads.
So, the web of the future may not be built with Haskell, but it will definitely be created by someone who knows about Haskell. For the strong-hearted developers among you, you can read directly from the source, Learn You a Haskell. We should also mention two web frameworks: Yesod for complex applications, and Scotty for smaller projects, maybe an API.
And we couldn’t forget the usual suspects
Image source: iStock Photo
We developers love to be optimistic and talk about a new language or framework which, so it has been foretold, will solve all our problems. However, we must remember that often the best way of creating the web of the future is to build on existing work and past lessons.
Mature backend frameworks such as Ruby on Rails, Django for Python and Symfony on PHP (version 3.0 was released this week) have shown to be sufficiently solid and flexible to result in successful projects. Their advantages have been maximized; their weak points have been tempered under fire; and there are countless communities with very experienced members.
In this case, you should use the components in each framework that allow you to build REST APIs such as Django REST Framework or Symfony FOSRestBundle. They will be your way into client frameworks in JavaScript and mobile applications.
Follow us @BBVAAPIMarket
Cover image source: iStock Photo