Skip to the content.
blog talks comics about

I won’t let Java confuse you #0: increment



Sometimes the code that seems really clear can turn out to be quite deceiving, even in some really basic concepts. In these situations, it’s good to question whether that code doesn’t smell...

The Hidden Dynamic Life of Java



This article is an (elaborate) transcript of my talk, ‘The Hidden Dynamic Life of Java’, presented on J-Fall 2023...

Java compiler-decompiler ping-pong



This small episode related to Java compilation seemed interesting and a bit funny to me, so I’m sharing it here...

Java Invokedynamic: Bootstrapping an Alternative Method



This experiment intends to demonstrate the power of the invokedynamic instruction in JVM. This instruction is used for different pieces of Java functionality these days, such as switch statements, lambdas, and many cases of String concatenation...

Java 21: So How Should We Construct Strings Now?



Java 21 brings in a lot of cool features, and one of them is the preview of String Templates*. While it serves more purposes than just classic String interpolation, for us Java developers, it’s yet another way to concatenate Strings in a “proper” way...

static final what?



I accidentally discovered something interesting about constant fields in Java, so I decided to share it here in a short article. When we need to create a constant field in Java, we somehow automatically use this conventional construction...

invokedynamic in GraalVM native image: how is it possible?



GraalVM has this really cool feature: you can build a native executable from your Java, Scala, or other application. Your application becomes lighter, starts super quickly, it’s more performant, and you don’t need a JVM to run it on your machine...

Java 20 Pattern Matching for Switch: What’s Under the Hood?



Pattern matching for switch statements and expressions has evolved as the latest releases unveiled. We can already play with the most exciting changes, such as pattern guards and record patterns, in the Java 19 and 20 preview versions...

JVM bytecode instructions explained



In the first part, we discussed the bytecode and some parts that it contains, namely debug information and constant pool. In this part, we will discuss the bytecode execution. Below is the example Java class and the verbose javap output of its bytecode. Our main focus will be on the Code section of the main method...

JVM bytecode: introduction



Recently, I had a chance to dive deeper into the JVM bytecode than I was ever expecting. It took me tons of documentation, articles, Stack Overflow topics, and bytecode listings to gain some understanding of the JVM internals. Generating my own bytecode and making a lot of mistakes also was a very insightful experience 😀.