Infinitely Scalable, Time-Deterministic Java Services.
When people talk about scalability, or a system being able to scale, they’re usually referring to how much it will cost to have the system support a certain number of users. A system being infinitely scalable when this cost is linear with the number of users. If we consider this cost being somewhat related to the processing power required, it is clear that any algorithm with an asymptotic behavior greater than O(n) seriously threaten the scalability of the whole system. In this workshop, we will discuss how not only developers can ensure that their software is “scalable” but also how the responsiveness of their system can be guaranteed. Achieving such a feat is not easy! It requires the worst-case execution time (WCET) asymptotic behavior of all methods being used to be known, common resources to be lock-free, lazy initialization prohibited and most importantly a mindset to develop algorithms with a smooth, continuous behavior as input size increases. In this workshop, we will illustrate how to put these principles in practice using Java 8 and Javolution real-time library. We will show simple examples based on Java 8 latest features (e.g. closures) and we will conclude with scalability benchmarks of various implementations of common collection classes (map/set/list).