foojay

Code Interoperability Mode for OpenCL Portability Across Various Programming Languages with TornadoVM

TornadoVM is a programming framework for accelerating Java applications on heterogeneous devices, like multi-core CPUs, GPUs and FPGAs. Java developers can use the TornadoVM API to prototype Java methods within their code bases for hardware acceleration. TornadoVM is hardware-agnostic, but the generated code (i.e., kernels) for acceleration can be executed only through the TornadoVM runtime. This blog outlines the key …

Read More »

Tuning Java Applications for Low Latency on Linux

Introduction I have lost count of the number of times I have been told that Java is not a suitable language in which to develop applications where performance is a major consideration. My first response is usually to ask for clarification on what is actually meant by “performance” as two of the most common measures – throughput and latency, sometimes …

Read More »

Unleashing the Power of Lightweight Concurrency: A Comprehensive Guide to Java Virtual Threads (Part 1)

Introduction Java Virtual Threads, also known as lightweight threads, is an exciting new feature introduced in Project Loom. Virtual threads aim to simplify concurrent programming in Java by providing an efficient and easy-to-use concurrency model. In this article, we’ll cover the basics of Java Virtual Threads, how they work, why they are beneficial for developers, and how they overcome the …

Read More »

Interview with Paul Kocian aka @Orango_Mango

Some time ago on Twitter, I discovered @Orango_Mango, who shared his progress in creating a 3D engine with JavaFX. The shared videos started with a Rubik’s cube in January ’23, over a basic tumbling car in February, to a full Minecraft-like world in April. Who is this @OrangoMango? And why did he take up the challenge to create a 3D …

Read More »

Spring Boot Debugging with Aspect-Oriented Programming (AOP)

Aspect-Oriented Programming (AOP) is a programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns. In simple terms, it helps you keep your code clean, modular, and easy to maintain. We can leverage AOP to debug Spring Boot applications more effectively and seamlessly. In this post, we will explore how to use AOP to debug a …

Read More »

Using Async-Profiler and Jattach Programmatically with AP-Loader

Using async-profiler and jattach can be quite a hassle. First, you have to download the proper archive from GitHub for your OS and architecture; then, you have to unpack it and place it somewhere. It gets worse if you want to embed it into your library, agent, or application. Library developers cannot just use maven dependency but have to create …

Read More »

Hidden and Not-So-Hidden Gems In Java 20

Let’s see the preview and incubator JEPs in Java 20, as well as many smaller enhancements, bug fixes, and deprecations. March 2023 marked the latest feature release of the Java platform, which was delivered on time through the six-month release cadence as Java 20. Like Java 19, which became generally available in September 2022, Java 20 targeted JEPs—seven, in this …

Read More »

Timefold Forks OptaPlanner: Open Source Solver in Java

OptaPlanner is an Open Source project used globally to optimize operational planning. Every day, it saves thousands of organizations time, money and resources. Today, OptaPlanner is entering a new chapter. The project I created and worked on for seventeen years has matured under Red Hat’s wings for the past ten years. Last year, when Red Hat’s strategy changed, it became …

Read More »

Leverage the Richness of HTTP Status Codes

If you’re not a REST expert, you probably use the same HTTP codes over and over in your responses, mostly 200, 404, and 500. If using authentication, you might perhaps add 401 and 403; if using redirects 301 and 302, that might be all. But the range of possible status codes is much broader than that and can improve semantics …

Read More »