As an application framework, Play2 was chosen as an easy-to-configure and robust framework. Compared to Spring (another popular framework), it takes less time to make a small app from scratch. The Play comes with Guice for dependency injection and SBT as the package manager:
- Spark ML: The Spark ML library was chosen as it is one of the best-maintained libraries in the Java world. Many algorithms not available in the library itself are implemented by third-party developers and can be trained on top of Spark. A drawback of Spark is that it is quite slow, as by design it is supposed to be distributed; so it uses Hadoop and writes a lot into the filesystem.
- Akka: This allows implementing the actor's pattern—having several instances of independent objects and passing messages to each other concurrently, which increases robustness.
- Anorm: The...