
Contemporary concurrent server applications, commonly built of smaller and independent services, are using concurrent threads to serve many incoming requests and often have to perform under excessive load. Those applications are relatively easy to develop in general-purpose, imperative programming languages such as Java, and have great tooling support. However, such applications are not easily scalable, mostly due to relying on oversized OS kernel threads, which can be created only in a limited number on finite hardware resources. Furthermore, heavyweight OS threads are implemented so robustly and generically to support various usage scenarios, and are, therefore, wasteful in resources and often inefficient in addressing specific application demands. Those challenges in software development resulted in various asynchronous programming techniques. This paper presents an exploration of a novel structured concurrency model in the Java Virtual Machine (JVM), introduced within OpenJDK's Project Loom. It is focused on the exploitation of fibers, new lightweight implementation of virtual threads within the JVM depending on delimited continuations. Furthermore, on several applications' benchmark cases, we analyzed performance with traditional threads and new fibers in different configurations. Finally, we discussed the current challenges of implementing fibers as a feasible approach for the more efficient future of Java.
Structured Concurrency, Fibers, Java, Java Virtual Machine, Threads, Delimited Continuations
Structured Concurrency, Fibers, Java, Java Virtual Machine, Threads, Delimited Continuations
| selected citations These citations are derived from selected sources. This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | 6 | |
| popularity This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network. | Top 10% | |
| influence This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | Top 10% | |
| impulse This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network. | Average |
