<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Fabrice Bibonne</title><link>https://fbibonne.frama.io/en/posts/</link><description>Recent content in Posts on Fabrice Bibonne</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 18 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://fbibonne.frama.io/en/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>ArrayList vs LinkedList: Digging into the Benchmark Puzzle</title><link>https://fbibonne.frama.io/en/posts/2026-05-18-arraylist-vs-linkedlist/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://fbibonne.frama.io/en/posts/2026-05-18-arraylist-vs-linkedlist/</guid><description>&lt;h2 id="introduction"&gt;
 Introduction
 &lt;a class="heading-link" href="#introduction"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;This article is a follow-up to the &lt;a href="https://javaspecialists.eu/archive/Issue334-ArrayList-vs-LinkedList-Puzzle.html" class="external-link" target="_blank" rel="noopener"&gt;Java Specialists&amp;rsquo; Newsletter Issue 334&lt;/a&gt; and to an email exchange with Heinz Kabutz. The issue is about a performance comparison between LinkedList and ArrayList and asks why ArrayList is less performant than LinkedList. The article presents a series of JMH benchmarks that progressively isolate and identify the actual cause of ArrayList&amp;rsquo;s apparent underperformance in the original demo.&lt;/p&gt;</description></item><item><title>Revealing the Origin of Spring Boot Property Values with the `Origin` API</title><link>https://fbibonne.frama.io/en/posts/2026-02-01-spring-boot-originprovider/</link><pubDate>Sun, 01 Feb 2026 00:00:00 +0000</pubDate><guid>https://fbibonne.frama.io/en/posts/2026-02-01-spring-boot-originprovider/</guid><description>&lt;p&gt;&lt;em&gt;This article is an AI-assisted translation of the original French content.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update of 23/04/2026: more precise description of property resolution in Spring&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;UML diagrams are difficult to read in dark display mode: it is recommended to switch to light mode (button at the bottom right of the page)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://fbibonne.frama.io/images/spring-boot-origin-provider/illustrationColoree.png" alt="Illustration of property display with their origin"&gt;&lt;/p&gt;
&lt;p&gt;Spring Boot has &lt;a href="https://docs.spring.io/spring-boot/reference/features/external-config.html" class="external-link" target="_blank" rel="noopener"&gt;an extremely rich external configuration feature&lt;/a&gt;
allowing applications to be configured from very varied sources
(files in the classpath, external files, environment variables, system properties, command-line arguments, Servlet context &amp;hellip;).
The multiplicity of sources can sometimes lead to confusion and result in incorrect application configuration. All the more so because the
misconfigured property can be difficult to identify if it prevents the application from starting and displaying
enough logs to diagnose the problem.&lt;/p&gt;</description></item><item><title>Migrating from Java 21 to Java 25</title><link>https://fbibonne.frama.io/en/posts/2025-10-02-upgrade-to-java-25/</link><pubDate>Thu, 02 Oct 2025 00:00:00 +0000</pubDate><guid>https://fbibonne.frama.io/en/posts/2025-10-02-upgrade-to-java-25/</guid><description>&lt;p&gt;&lt;em&gt;This article is an AI-assisted translation of the original French content.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Java 25 was released on September 16th and is now available for download from major distributors (Eclipse Temurin for example) as well as in Docker images for most systems. Here are some tips for migrating.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The migration from Java 21 to Java 25 should not cause major breakage in typical enterprise applications. The removals concern elements that have been deprecated for several versions or are no longer used. The rest of this document covers the main changes and a summary of the more minor ones. Deprecations, however, are not mentioned.&lt;/p&gt;</description></item><item><title>Serving Parquet files with Spring MVC</title><link>https://fbibonne.frama.io/en/posts/2025-05-26-spring-parquet/</link><pubDate>Mon, 26 May 2025 00:00:00 +0000</pubDate><guid>https://fbibonne.frama.io/en/posts/2025-05-26-spring-parquet/</guid><description>&lt;p&gt;&lt;em&gt;This article is an AI-assisted translation of the original French content.&lt;/em&gt;&lt;/p&gt;
&lt;h1 id="serving-parquet-files-with-spring-mvc"&gt;
 Serving Parquet files with Spring MVC
 &lt;a class="heading-link" href="#serving-parquet-files-with-spring-mvc"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Given the growing use of the Parquet format for distributing large volumes of data as tables via HTTP, backends may be required to serve Parquet files. The purpose of this post is to show how a Java backend with Spring MVC can do this very simply.&lt;/p&gt;</description></item><item><title>Displaying HTTPS requests in Java</title><link>https://fbibonne.frama.io/en/posts/2025-04-06-https-java/</link><pubDate>Mon, 07 Apr 2025 00:00:00 +0000</pubDate><guid>https://fbibonne.frama.io/en/posts/2025-04-06-https-java/</guid><description>&lt;p&gt;&lt;em&gt;This article is an AI-assisted translation of the original French content.&lt;/em&gt;&lt;/p&gt;
&lt;h1 id="how-to-simply-display-https-requests-made-by-a-java-application"&gt;
 How to simply display HTTPS requests made by a Java application
 &lt;a class="heading-link" href="#how-to-simply-display-https-requests-made-by-a-java-application"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;If you want to know the HTTPS requests (and their content) made by a Java application, you can add this option at JVM startup: &lt;code&gt;-Djavax.net.debug=ssl:record:plaintext&lt;/code&gt;. The standard output of the Java process will contain the HTTPS requests in plaintext, along with several other pieces of information produced by JSSE (&lt;a href="https://docs.oracle.com/en/java/javase/21/security/java-secure-socket-extension-jsse-reference-guide.html" class="external-link" target="_blank" rel="noopener"&gt;&lt;em&gt;Java Secure Socket Extension&lt;/em&gt;&lt;/a&gt;) such as the certificates of the contacted hosts.&lt;/p&gt;</description></item><item><title>Debugging a Remote JVM with IntelliJ via an SSH Tunnel</title><link>https://fbibonne.frama.io/en/posts/2025-03-25-debug-remote-jvm-with-intellij/</link><pubDate>Tue, 25 Mar 2025 00:00:00 +0000</pubDate><guid>https://fbibonne.frama.io/en/posts/2025-03-25-debug-remote-jvm-with-intellij/</guid><description>&lt;p&gt;&lt;em&gt;This article is an AI-assisted translation of the original French content.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This post presents an experiment in step-by-step debug execution of a Java application running on a remote server using an SSH tunnel.&lt;/p&gt;
&lt;h2 id="-what-are-we-talking-about"&gt;
 &lt;em&gt;&amp;laquo;Debugging a Remote JVM&amp;raquo;&lt;/em&gt;: What are we talking about?
 &lt;a class="heading-link" href="#-what-are-we-talking-about"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;When an application misbehaves (explicit error or unexpected result), several tools or methods can be used to understand what is going wrong and modify the code accordingly:&lt;/p&gt;</description></item></channel></rss>