InfoQ Homepage Java Content on InfoQ
-
Reactive Real-Time Notifications with SSE, Spring Boot, and Redis Pub/Sub
Explore the power of reactive programming for building scalable real-time notification systems. Using Spring Boot Reactive and Spring WebFlux, leverage non-blocking operations to handle high-volume, asynchronous data flows efficiently. Discover how Redis Pub/Sub enables event-driven messaging and how the SSE protocol provides persistent connections for instant client updates without polling.
-
Java-Based No-Code and Low-Code Application Bootstrapping Tools Review
Low-code and no-code software development platforms help establish common ground for product development. They can help developers avoid repetitive bootstrapping tasks and speed up development. This article reviews four of the most common tools.
-
How Functional Programming Can Help You Write Efficient, Elegant Web Applications
Many things can make software more challenging to understand and, consequently, to maintain. One of the most complex and problematic causes is managing internal mutable states. When the internal state is poorly managed, the software behaves unexpectedly, leading to bugs and fixing, which introduces unnecessary complexity. FP solves this problem by providing immutability mechanisms and more.
-
Embracing Reactive Applications on JVM: a Deep Dive into Modern I/O Models and Vert.x
This article discusses the shift from blocking to non-blocking and asynchronous I/O models, highlighting their role in modern software development. It focuses on Vert.x, a toolkit for building reactive applications on the JVM, featuring the Multi-Reactor Pattern, Event Bus, and Verticles. Vert.x is ideal for cloud, Big Data, and IoT, as shown through benchmarks and real-world examples.
-
WebAssembly, the Safer Alternative to Integrating Native Code in Java
Developers typically choose between porting the code or dynamic linking to run native code on the JVM. This article examines these approaches, using SQLite as an example, and introduces a third option: Chicory Wasm runtime. This alternative combines the advantages of traditional methods while addressing their limitations, potentially offering a more secure solution to integrate native code.
-
Java Virtual Threads: a Case Study
This article explores JDK 21's virtual threads, comparing their performance with Open Liberty's thread pool. It covers key findings like throughput, ramp-up times, and memory footprint. Despite advantages, virtual threads showed unexpected performance issues, especially in CPU-intensive workloads. This analysis guides Java developers on when and how to use virtual threads in their applications.
-
Elevating Kubernetes Logging for Enhanced Observability
In this article, we will explore the challenges, strategies, and best practices that will help you achieve seamless log management in your Kubernetes environment.
-
Optimizing Spring Boot Config Management with ConfigMaps: Environment Variables or Volume Mounts
Spring Boot stands out as a viable framework for its agility and streamlined workflow. Yet, effective configuration management remains a pivotal factor influencing deployment efficiency and ongoing maintenance. ConfigMaps, a feature in Kubernetes, provides configuration strategies for Spring Boot applications.
-
Modernizing Testing Practices for Jakarta EE Projects
This article focuses on the increasing adoption of data-driven testing in Java enterprise applications and sheds light on the Data and NoSQL Jakarta specifications. It highlights the significance of modern testing libraries such as JUnit Jupiter and AssertJ and emphasizes the importance of container-based frameworks like Testcontainers in enhancing testing practices.
-
Getting Technical Decision Buy-In Using the Analytic Hierarchy Process
Making large, important technical decisions is a critical aspect of a senior individual contributor's role. This article examines how Comcast has employed the Analytic Hierarchy Process (AHP), a decision-making framework developed in the 1970s, and adapted it for making technical and non-technical decisions both large and small.
-
Spring Boot 3.2 and Spring Framework 6.1 Add Java 21, Virtual Threads, and CRaC
Spring Framework 6.1 and Spring Boot 3.2 run on Java 21. They make concurrent programming simpler and more efficient with virtual threads, as well as improving reactive programming and Kotlin coroutines. For “Scale to Zero” startup time reduction, the OpenJDK project CRaC received initial support, while the existing GraalVM Native Image integration got faster through a GraalVM release.
-
Architecting with Java Persistence: Patterns and Strategies
Explore a spectrum of Java persistence patterns, from data-oriented to domain-centric. Delve into Driver, Mapper, DAO, Active Record, and Repository for robust architectural foundations.