Community manager Kevin Farnham

Technology writer and software engineer focused on high-performance low-latency big-data Java, Python, C/C++ programming.

  • Evolution of Java Memory Architecture (Pre Java 8.0)

    Welcome to a series of articles on key concepts in Core Java and J2EE. The series revolves around memory architecture, connection and memory leaks, core Java syntax and semantics, Java Object layout/anatomy, multi-threading, asynchronous task execution, design patterns, Java agents, class loading, API design, OOPs & SOLID.

    In this part, we focus on the Java Memory Architecture, from before Java 8.

    Sumith Puri
    Read more
  • Towards Continuous Performance Regression Testing

    JfrUnit is an extension for JUnit 5 which integrates Flight Recorder into unit tests.

    It makes it straightforward to initiate a JFR recording for a given set of event types, execute some test routine, and then assert the JFR events which should have been produced.

    Stay tuned for next parts in this series, where we’ll explore how to trace the SQL statements executed by an application using the JMC Agent and assert these query events using JfrUnit.

    Read more
  • Safe Writing to Files in IoT and Industrial Systems

    Especially on IoT devices, file corruption on shutdown is a common concern.

    This article discusses how to write to disk safely in Java, combining disk sync, shutdown hooks, and atomic renaming of files.

    Michael Roeschter
    Read more
  • A Compendium of 2021 Java & OpenJDK Predictions

    Now that 2021 is well underway, many prominent Java developers have taken the time to predict what 2021 may bring to the Java universe.

    In this post, I arrange these predictions and observations by topic, in essence creating a series of brief panel discussions about each topic area: a sort of mini-Java conference in the form of an article!

    Read more
  • High Performance Rendering in JavaFX

    In this article, we comparatively evaluate four different approaches to render particles in JavaFX in terms of runtime performance.

    The approaches are Canvas, PixelBuffer AWT, PixelBuffer CPU and PixelBuffer GPU.

    The evaluation suggests the following order of approaches from fastest to slowest:

    – PixelBuffer GPU (fastest).
    – PixelBuffer CPU.
    – PixelBuffer AWT.
    – Canvas (slowest).

    Almas Baimagambetov
    Read more
  • Continuous Production Profiling and Diagnostics

    I’ve gotten a lot of questions about continuous production profiling lately. Why would anyone want to profile in production, or, if production profiling seems reasonable, why the heck leave it on continuously?

    I thought I’d take a few moments and share my take on the problem and the success I’ve seen the past years applying continuous production profiling in systems in the real world.

    Profiling these days is no longer limited to high overhead development profilers. The capabilities of the production time profilers are steadily increasing and their value is becoming less controversial, some preferring them for complex applications even during development.

    Read more
  • Peter Lawrey Talks about Low-Latency, High-Performance Java

    About 7 years ago, I attended a session given by Java Champion Peter Lawrey, leader of Chronical Software, at a JavaOne conference. Since most of my prior development work in the realm of low-latency high-performance was C/C++ software, I was very interested in hearing what Peter might say about how Java addresses this problem.

    I caught up with Peter again recently, and asked him some questions about what’s happened since then, and where we are today. Here are my questions and Peter’s responses.

    Read more
  • Timing Differences Between Compiling .java Code Files and Executing .class Bytecode Files

    Java bytecode is somewhat similar to the Assembly Language utilized by languages like C. Bytecode is a low level instruction set that the JVM executes in order to enact the processing created by the developer with their Java (or any other JVM language) program.

    In this article, we see that the time to execute the bytecode for a simple program is a small fraction of the time to compile it using javac.

    Read more
  • Startup Speed of Spring and Quarkus JARs on the Raspberry Pi

    For my book “Getting Started with Java on Raspberry Pi”, an example was described to store sensors and measurements in an H2-database through REST APIs with a Spring application on the Raspberry Pi.

    The application takes some time to start on a Raspberry Pi, and Adam Bien who does the podcast, asked me if I could compare this to a similar Quarkus application, which resulted in some nice results.

    Read more
  • What is JVM Bytecode?

    Everyone who programs in Java, or any of the other languages built on top of the Java Virtual Machine (Scala, Closure, Kotlin, Groovy, Nashorn, Jython, JRuby, et al.) is familiar with the term “bytecode.”

    But how many of us understand what JDK bytecode actually is?

    Read more
  • Useful JVM Options: Heap Sizing

    The HotSpot JVM has a lot of options available. Maybe too many. Sometimes we are looking for a specific option or the “magic” one that can give a serious boost in an application.

    I have summed up here, in my humble opinion, some of the most useful JVM options in the context of heap sizing.

    Read more

Subscribe to foojay updates:
Copied to the clipboard