A Java geek

Nicolas Fränkel's blog

  • Me
  • Books
  • Speaking
  • Mentions
  • Focus
Jan 17, 2021 gui swing kotlin

The state of JVM desktop frameworks: Swing

This is the 2nd post in the The state of JVM desktop frameworks focus series. In the first post of this series, we went through the rise and fall of some of the desktop frameworks, mainly Java ones. This post and the following will each focus on a single JVM framework. To compare between them, a baseline is in order. Thus, we will develop the same application using different frameworks.

Nicolas Fränkel
Jan 10, 2021 jar assembly shade spring boot maven

Creating self-contained executable JARs

When your application goes beyond a dozen of lines of code, you should probably split the code into multiple classes. At this point, the question is how to distribute them. In Java, the classical format is the Java ARchive, better known as the JAR. But real-world applications probably depend on other JARs. This post aims to describe ways to create self-contained executable JARs, also known as uber-JARs or fat JARs. What is an executable JAR? A JAR is just a collection of class files.

Nicolas Fränkel
Jan 3, 2021 gui swing javafx flex swt java web start

The state of JVM desktop frameworks: introduction

This is the 1st post in the The state of JVM desktop frameworks focus series. I’m interested in GUI applications since I’ve starting coding. Building a back-end app that manages teraflops of operations is an impressive engineering feat. But the feedback cycle when developing a desktop app is much shorter. That makes it, at least for me, much more motivating. This is even truer for side-projects.

Nicolas Fränkel
Dec 27, 2020 docker container jekyll ruby

Musings around a Dockerfile for Jekyll

If you like cool stories about how an engineer, faced with an impossible problem, overcame all odds and solved it, this post is not for you. This is a story of how I spent a non-trivial amount of time, how I hit a couple of walls, and how I nearly came back to square one. Why do I write it? The first reason is for me: I want to document my journey so if I ever think about trying again in the future, I’ll have some arguments against it.

Nicolas Fränkel
Dec 20, 2020 maven logging log4j2 slf4j spring boot

Feedback on the Log4J2 hack in Spring Boot

Last week, I wrote a post that described how to hack the Maven dependency resolution system. I admit it was a dirty hack, it’s even in the post name. But I got it wrong. Thanks Stéphane Nicoll for pointing it out: "It boils down to excluding the spring-boot-starter-logging in every Spring Boot starter"Since you've put every in bold, I assume you meant it. That's actually wrong and not what the documentation states.Here is an example: https://t.

Nicolas Fränkel
Dec 13, 2020 maven hack logging log4j2 slf4j spring boot

A dirty hack to ease the usage of Log4J2 in Spring Boot

Logging is one of the fundamental components of any application which runs in production. Yet, between performance and logging in critical environments, I’d favor the former. For that reason, modern logging frameworks should implement at least two requirements: Async appenders: the write operation shouldn’t be blocking the execution of the programLazy computation: the framework doesn’t run expensive computations until they are needed - or never if that’s the case.

Nicolas Fränkel
Dec 6, 2020 stream processing data streaming event-driven architecture eda

Event Streams in Action

Between 2009 and 2013, I published ten book reviews on this blog. And since then, nothing. Reading a book is a huge commitment, not to mention the review. During the lockdown, Manning approached me for a 'partnership opportunity'. In general, I turn down such offers. But I already bought and read books from Manning in the past: they range from above-average to good reads. I proposed to amend the deal like this: Manning sends a book of my choice for free and I write an honest review.

Nicolas Fränkel
Nov 29, 2020 graalvm native image

(Finally) solving a substitution GraalVM issue

One of my current talks is about creating a Kubernetes operator in Java. I demo it step by step. In the later steps, I’m using GraalVM native image to create a native executable. In that regard, some libraries are not compatible with the native image creation process. Several options are available to make them work anyway. One of the options is to substitute incompatible code with compatible one. In the above post, I describe how to use those substitutions. I thought I had it right.

Nicolas Fränkel
Nov 22, 2020 jdk

Most commonly available JDKs

For reasons I dare not mention, I had to install version 7 of the JDK a couple of months ago. As a Mac user, my usual way of installing is using Homebrew. To install a JDK, this is as easy as brew cask install adoptopenjdkx, where x is the Java version. It didn’t work, as AdoptOpenJDK provides no version 7. It took me some time to find a JDK 7. In the end, I found one in Zulu - thanks to Azul.

Nicolas Fränkel
Nov 15, 2020 spring boot quarkus cloud native

From Spring Boot to Quarkus

Last week, I migrated a sample Spring application to Micronaut. This week, I did the same for Quarkus. Spring Boot and Micronaut both offer a parent POM. Quarkus favors using a BOM.

Nicolas Fränkel
« Newer Posts Page 28 of 83 Older Posts »
A Java geek © 2008-2026
v. bc04c88300c3ec997ce8470fbff5395dc9e518b1/13264050981
Latest Posts