JRush Episode 4: Q&A Session

Transcript:

Q&A Session Introduction

I would prefer to call this a panel discussion rather than a simple Q&A session. We likely have a number of questions from our audience, which I would like to voice to our speakers now. Additionally, I have a "secret" question for every speaker at this panel, which, of course, is about Java.


Question for Dmitry: ARM Servers Availability

Dmitry, you mentioned that ARM servers are available in the cloud at AWS. Do we know of any other cloud providers or manufacturers offering ARM servers where they can be accessed or purchased?

  • Dmitry: Yes, I mentioned that at the end of the talk. You can rent servers built on Hunter Ultra in Oracle Cloud or Azure, or you can buy physical servers from multiple vendors based on Ultra. Graviton servers, however, are available only on AWS EC2. There are other providers as well, such as Alibaba Cloud.
  • Host: Interesting! I found that instances on ARM servers like AWS Gravitons are really cheaper than Intel ones, so it’s definitely worth checking.

Question for Mary: Streaming Technologies

Mary, we know of several different streaming technologies like Apache Spark, Apache Flink, and Apache Pulsar. Could you briefly explain the differences between them?

  • Mary: Sure! Apache Pulsar is more of an event-streaming broker, ideal for message ingestion. Apache Spark is more suited for batch processing of streaming data, often used in machine learning and AI applications. Apache Flink allows both ingestion and event-streaming processing, making it great for complex SQL-based data operations. Together, they form a strong combination, leveraging their individual strengths.
  • Host: That’s great. Can this technology help with fraud detection?
  • Mary: Yes, definitely. For instance, Apache Pulsar can monitor data in real time to detect unusual activities in financial systems, helping prevent fraud. Event streaming software can be highly effective for such purposes.


Technical Question: Garbage Collection in Pulsar

There’s a concern about garbage collection causing "stop-the-world" events in Pulsar. How does it handle this issue?

  • Mary: That’s a great question. Currently, I don’t have the exact answer but can look it up. However, Pulsar’s federated architecture, which uses multiple nodes, minimizes the likelihood of stop-the-world pauses affecting the entire system.

Question for Dr Mo: Kubernetes in Production

Dr Mo, could you share your experience using Kubernetes or OpenShift in production?

  • Dr Mo: Sure. At Discover, we use OpenShift, which builds on Kubernetes with added features for developers and operation engineers. OpenShift simplifies deployment, scalability, and management through an intuitive console and CI/CD integration.
  • Host: Is transferring solutions across cloud providers easy with OpenShift?
  • Dr Mo: Yes, with tools like Red Hat’s Advanced Cluster Management, you can manage applications across clouds easily. It’s more seamless with OpenShift compared to vanilla Kubernetes, though complex applications might require additional work.

Final Question: Java’s Longevity

Java recently celebrated its 28th anniversary. What do you think makes Java so popular after all these years?

  • Mary: The vibrant community and robust technology keep Java alive. The Java Community Process (JCP) and the absence of major internal disputes make it unique. Java’s reliability in production also speaks volumes.
  • Dr Mo: Java simplifies development by abstracting complexities like memory management. Its active development, backward compatibility, and community support make it indispensable in industries like finance.
  • Dmitry: Java’s strict backward compatibility and a strong ecosystem have fostered trust and continuous development over decades.

Summary

At the end of JRush Episode 4 “Modern Java development for Banking and FinTech”, we had a very fruitful discussion with our speakers, Dr Mo Haghighi, Mary Grygleski, and Dmitry Chuyko, who answered the questions from the audience, such as Where can we get access to Arm servers? Can Apache Pulsar be used for fraud detection in banking? How to use Kubernetes in production? And more!

About Dmitry

Dmitry Chuyko is a Senior Performance Architect at BellSoft, an OpenJDK committer, and a public speaker. Prior to joining BellSoft, Dmitry worked on the Hotspot JVM at Oracle, and before that he had many years of programming experience in Java. He is currently focused on optimizing HotSpot for x86 and ARM, previously being involved in rolling out JEP 386, which enables the creation of the smallest JDK containers.

Social Media

Videos
card image
Apr 2, 2026
Java Memory Options You Need in Production

JVM memory tuning can be tricky. Teams increase -Xmx and assume the problem is solved. Then the app still hits OOM. Because maximum heap size is not the only thing that affects memory footprint. The JVM uses RAM for much more than heap: metaspace, thread stacks, JIT/code cache, direct buffers, and native allocations. That’s why your process can run out of memory while heap still looks “fine”. In this video, we break down how JVM memory actually works and how to control it with a minimal, production-safe set of flags. We cover heap sizing (-Xms, -Xmx), dynamic resizing, direct memory (-XX:MaxDirectMemorySize), and total RAM limits (-XX:MaxRAMPercentage) — especially in containerized environments like Docker and Kubernetes. We also explain GC choices such as G1, ZGC, and Shenandoah, when defaults are enough, and why GC logging (-Xlog:gc*) is mandatory before tuning. Finally, we show how to diagnose failures with heap dumps and OOM hooks. This is not about adding more flags. It’s about understanding what actually consumes memory — and making decisions you can justify in production.

Videos
card image
Mar 26, 2026
Java Developer Roadmap 2026: From Basics to Production

Most Java roadmaps teach tools. This one teaches order — the only thing that actually gets you to production. You don’t need to learn everything. You need to learn the right things, in the right sequence. In this video, we break down a practical Java developer roadmap for 2026 — from syntax and OOP to Spring, databases, testing, and deployment. Structured into 8 levels, it shows how real engineers grow from fundamentals to production-ready systems. We cover what to learn and what to ignore: core Java, collections, streams, build tools, Git, SQL and JDBC before Hibernate, the Spring ecosystem, testing with JUnit, and deployment with Docker and CI/CD. You’ll also understand why most developers get stuck — jumping into frameworks too early, skipping SQL, or treating tools as knowledge. This roadmap gives you a clear path into real-world Java development — with priorities, trade-offs, and production context.

Further watching

Videos
card image
Apr 30, 2026
Java Flight Recorder Tutorial: How to Profile Java Applications

High CPU, GC spikes, or slow startup are common production issues, but logs and metrics don’t always reveal what the JVM is actually doing. Java Flight Recorder (JFR) provides a precise, low-overhead view of JVM behavior, safe for use even in production environments. In this video, you’ll learn how to use JFR to identify real bottlenecks such as CPU hotspots, memory allocation pressure, thread contention, and I/O stalls. We walk through the full workflow, including starting recordings with JVM flags, controlling them via jcmd, running JFR inside Docker containers, and attaching to live systems using ephemeral containers. Then we analyze a real Spring Boot recording in JDK Mission Control, breaking down GC behavior, allocation patterns, thread states, and method-level hotspots. If you want to move from symptoms to root cause with more confidence, this approach will help. Full article with commands and examples: [https://bell-sw.com/blog/how-to-profile-java-applications-with-jfr-beginner-s-guide/](https://bell-sw.com/blog/how-to-profile-java-applications-with-jfr-beginner-s-guide/)

Videos
card image
Apr 22, 2026
Dynamic SQL Queries with Spring Data JPA in 6 Minutes

If your repository layer has multiple queries for different filter combinations, your data access logic is already getting harder to maintain. In this video, we implement dynamic SQL queries in Spring Data JPA using Specifications — a composable approach that helps avoid query duplication and keeps your filtering logic clean. We build a flexible filtering system with optional parameters (category, language, format, price) and show how Specification.unrestricted() skips empty filters, while Specification.allOf(...) combines them into a single query. We also address a common issue: string-based field access. It’s fragile and can break at runtime when your model changes. Using the JPA Static Metamodel, we move to compile-time safety. The result is a cleaner, more maintainable way to implement dynamic filtering in Spring-based applications.

Videos
card image
Apr 8, 2026
Best Oracle Java Alternatives in 2026 Comparison of OpenJDK Distributions

A comparison of major OpenJDK distributions (Temurin, Liberica, Zulu, Corretto, Semeru, etc.), covering who maintains them, how updates are delivered, and what lifecycle guarantees they provide. We also explain why upstream OpenJDK isn’t production-ready and how your vendor choice impacts real-world systems. Useful for Spring Boot, containers, and Kubernetes to avoid hidden risks and choose the right runtime.