foojay

Upgrade a Java 8 Project to 11 or Higher

Java 8 is a Long Term Supported (LTS) version, and Azul will maintain it until 2030 for customers with a support license. You can continue to run Java 8 applications until then on updated and secure Java runtimes. But by staying on Java 8, you miss many other improvements in runtime performance and language enhancements for your developers. Keeping a …

Read More »

Neo4j’s Online Conference Is Coming In October… And You’re Invited!

NODES is back for its fifth year on October 26, 2023! It’s the biggest graph community gathering dedicated to learning how to integrate graph technologies into ML and dev projects. For 24 hours nonstop, speakers from around the world will showcase their implementations, tools, models, and more – sharing everything they’ve learned over this past year. Join thousands of fellow …

Read More »

Cracking Code and Conventions: An Exclusive Interview with Nicolas Fränkel

In this enlightening interview, we explore the unique journey of Nicolas Fränkel, a seasoned professional in the software industry. From an architecture student to a passionate software developer, Nicolas shares his candid thoughts about the current state of software development and the potential impacts of AI. Profile: LinkedIn: Nicolas Fränkel – Head of Developer Experience – API7.ai​1​ Twitter: @nicolas_frankel​2​ GitHub: …

Read More »

2023 Community Survey

Here’s the idea. A survey that allows the community to ask the questions they want, including (shock horror) occasional commercial ones. Often, when a survey’s results are released, the reader is left wanting more, experiencing that perennial “yes but” moment. Typically, the survey data is hidden and unavailable for analysis, and the desired follow-up questions or clarifications are not addressed. …

Read More »

Foojay Podcast #24: BeJUG, BruJUG and how Devoxx was born as JavaPolis

The Foojay Java User Group World Tour has already brought us to a lot of different countries virtually all over the world. But for this episode, the host decided to stay at home in Belgium. The Belgium JUG (BeJUG) started in 1997 and was the birthplace of Devoxx, Devoxx4Kids, and VoxxedDays. And in our capital Brussels, we’ve been able to …

Read More »

Class Loader Hierarchies

Understanding class loader hierarchies is essential when developing Java agents, especially if these agents are instrumenting code. In my Instrumenting Java Code to Find and Handle Unused Classes article, I instrumented all classes with an agent and used a Store class in this newly added code: A challenge here is that all instrumented classes will use the Store. We, therefore, …

Read More »

Java String Templates Today

In our last article, we introduced you to the Manifold project and how it offers a revolutionary set of language extensions for Java, including the ability to parse and process JSON files seamlessly in Java. Today, we will take a look at another exciting feature of the Manifold project: string templates. But before we get to that, some of the …

Read More »

FP in Kotlin: Defining a Pipe Operator

There’s no support for the pipe operator |> in Kotlin, so we have to come up with a custom and clean implementation for this function. Defining a Pipe Operator Next, one consistent and clean implementation is given for a pipe operator in Kotlin. Finding a Suitable Symbol First, I wanted to use the |> pipe symbol commonly used in functional …

Read More »

Resilience in Coding: Miro Wengner on Thriving in the Software Industry

In this insightful discussion, we sit down with Miro Wengner, an accomplished software engineer with a deep-rooted affinity for Java. Miro shares his professional journey, highlights the significant challenges in the field, and reflects on the key moments that shaped his career. Profile Twitter:  https://twitter.com/miragemiko LinkedIn: https://www.linkedin.com/in/mwengner/ GitHub https://github.com/mirage22 Home Page:  https://www.wengnermiro.com/ Fun fact: When I was in my early …

Read More »

Java is Very Fast, If You Don’t Create Many Objects

This article looks at a benchmark passing events over TCP/IP at 4 billion events per minute using the net.openhft.chronicle.wire.channel package in Chronicle Wire and why we aim to avoid object allocations. One of the key optimisations is creating almost no garbage. Allocation is supposed to be a very cheap operation and garbage collection of very short lived objects is also …

Read More »