Last week, I have joined Zenexity. Joining a new company, is a great adventure. By meeting new people and working on different projects, you learn new things and discover other ways of doing things. This leads to impassioned discussions and knowledge sharing. On my side, I am starting to dig deeper into Scala.
Zenexity is the company who created the Play framework, a java web framework, which as you probably know, drops the craziness complexity of JEE to focus on simplicity.
In a recent presentation, I have spoken about collaboration. I notably mentioned that in the last five years applications and medias which integrate natively collaboration have known impressive success. Looking at collaboration is interesting, as it exhibits today web application concerns.
Integration of multiple data sources
Enabling collaboration means dealing with several data producers. Typically, for each you will have a connection, and one of the application responsibility will be to manage those connections. The management becomes harder when the number of producer raises. For instance, the application may reach a connections number limit, so in order to scale the application will need to detect idle producers for closing temporally their connection.
Dealing with large amout of data
When you add more potential data producer, this generally ends with more information to manage or at least more information you would like to store, for instance for statistics purpose. To achieve scalability you may choose a non relational database.
To ease collaboration, you need to provide a way for users to interact between them. Basically each user should be able to send notifications to others, directly or indirectly, and to do it efficiently traditional polling is not efficient.
The new coming release of Play tends to tackle those concerns. It will provide powerful abstractions which will enables you to write simply reactive web applications. Applications which, integrate multiple data sources, support multiple data stores, and could use efficient bidirectional communications.