Migrating from Developing Asynchronous Multi-Threading Programs to Reactive Programs in Java

Modern software application development imposes standards regarding high performance, scalability, and minimal system latency. Multi-threading asynchronous programming is one of the standard solutions proposed by the industry for achieving such objectives. However, the recent introduction of the rea...

Full description

Saved in:
Bibliographic Details
Main Authors: Andrei Zbarcea, Cătălin Tudose
Format: Article
Language:English
Published: MDPI AG 2024-12-01
Series:Applied Sciences
Subjects:
Online Access:https://www.mdpi.com/2076-3417/14/24/12062
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1850239806990188544
author Andrei Zbarcea
Cătălin Tudose
author_facet Andrei Zbarcea
Cătălin Tudose
author_sort Andrei Zbarcea
collection DOAJ
description Modern software application development imposes standards regarding high performance, scalability, and minimal system latency. Multi-threading asynchronous programming is one of the standard solutions proposed by the industry for achieving such objectives. However, the recent introduction of the reactive programming interface in Java presents a potential alternative approach for addressing such challenges, promising performance improvements while minimizing resource utilization. The research examines the migration process from the asynchronous paradigm to the reactive paradigm, highlighting the implications, benefits, and challenges resulting from this transition. To this end, the architecture, technologies, and design of a support application are presented, outlining the practical aspects of this experimental process while closely monitoring the phased migration. The results are examined in terms of functional equivalence, testing, and comparative analysis of response times, resource utilization, and throughput, as well as the cases where the reactive paradigm proves to be a solution worth considering. Across multiple scenarios, the reactive paradigm demonstrated advantages such as up to 12% reduction in memory usage, 56% faster 90th percentile response times, and a 33% increase in throughput under high-concurrency conditions. However, the results also reveal cases, such as data-intensive scenarios, where asynchronous programming outperforms reactive approaches. Additionally, possible directions for further research and development are presented. This paper not only investigates the design and implementation process but also sets a foundation for future research and innovation in dependable systems, collaborative technologies, sustainable solutions, and distributed system architecture.
format Article
id doaj-art-112c0ac31ebc4ef8a34f94a97e2b6359
institution OA Journals
issn 2076-3417
language English
publishDate 2024-12-01
publisher MDPI AG
record_format Article
series Applied Sciences
spelling doaj-art-112c0ac31ebc4ef8a34f94a97e2b63592025-08-20T02:01:03ZengMDPI AGApplied Sciences2076-34172024-12-0114241206210.3390/app142412062Migrating from Developing Asynchronous Multi-Threading Programs to Reactive Programs in JavaAndrei Zbarcea0Cătălin Tudose1Faculty of Automatic Control and Computers, National University of Science and Technology POLITEHNICA Bucharest, 060042 Bucharest, RomaniaFaculty of Automatic Control and Computers, National University of Science and Technology POLITEHNICA Bucharest, 060042 Bucharest, RomaniaModern software application development imposes standards regarding high performance, scalability, and minimal system latency. Multi-threading asynchronous programming is one of the standard solutions proposed by the industry for achieving such objectives. However, the recent introduction of the reactive programming interface in Java presents a potential alternative approach for addressing such challenges, promising performance improvements while minimizing resource utilization. The research examines the migration process from the asynchronous paradigm to the reactive paradigm, highlighting the implications, benefits, and challenges resulting from this transition. To this end, the architecture, technologies, and design of a support application are presented, outlining the practical aspects of this experimental process while closely monitoring the phased migration. The results are examined in terms of functional equivalence, testing, and comparative analysis of response times, resource utilization, and throughput, as well as the cases where the reactive paradigm proves to be a solution worth considering. Across multiple scenarios, the reactive paradigm demonstrated advantages such as up to 12% reduction in memory usage, 56% faster 90th percentile response times, and a 33% increase in throughput under high-concurrency conditions. However, the results also reveal cases, such as data-intensive scenarios, where asynchronous programming outperforms reactive approaches. Additionally, possible directions for further research and development are presented. This paper not only investigates the design and implementation process but also sets a foundation for future research and innovation in dependable systems, collaborative technologies, sustainable solutions, and distributed system architecture.https://www.mdpi.com/2076-3417/14/24/12062Javaasynchronous programmingmulti-threadingreactive programmingmigration from asynchronous to reactive
spellingShingle Andrei Zbarcea
Cătălin Tudose
Migrating from Developing Asynchronous Multi-Threading Programs to Reactive Programs in Java
Applied Sciences
Java
asynchronous programming
multi-threading
reactive programming
migration from asynchronous to reactive
title Migrating from Developing Asynchronous Multi-Threading Programs to Reactive Programs in Java
title_full Migrating from Developing Asynchronous Multi-Threading Programs to Reactive Programs in Java
title_fullStr Migrating from Developing Asynchronous Multi-Threading Programs to Reactive Programs in Java
title_full_unstemmed Migrating from Developing Asynchronous Multi-Threading Programs to Reactive Programs in Java
title_short Migrating from Developing Asynchronous Multi-Threading Programs to Reactive Programs in Java
title_sort migrating from developing asynchronous multi threading programs to reactive programs in java
topic Java
asynchronous programming
multi-threading
reactive programming
migration from asynchronous to reactive
url https://www.mdpi.com/2076-3417/14/24/12062
work_keys_str_mv AT andreizbarcea migratingfromdevelopingasynchronousmultithreadingprogramstoreactiveprogramsinjava
AT catalintudose migratingfromdevelopingasynchronousmultithreadingprogramstoreactiveprogramsinjava