A Visual Diff of Java’s Evolution: Inside java.evolved
A community site showcasing legacy Java patterns alongside modern equivalents to help developers understand how everyday Java code has …

A N M Bazlur Rahman is a Software Engineer with over a decade of specialized experience in Java and related technologies. His expertise has been formally recognized through the prestigious title of Java Champion. Beyond his professional commitments, Mr. Rahman is deeply involved in community outreach and education. He is the founder and current moderator of the Java User Group in Bangladesh, where he has organized educational meetups and conferences since 2013. He was named Most Valuable Blogger (MVP) at DZone, one of the most recognized technology publishers in the world. Besides DZone, he is an editor for the Java Queue at InfoQ, another leading technology content publisher and conference organizer, and an editor at Foojay.io, a place for friends of OpenJDK. In addition, he has published five books about the Java programming language in Bengali; they were bestsellers in Bangladesh. He earned his bachelor's degree from the Institute of Information Technology, University of Dhaka, Bangladesh, in Information Technology, majoring in Software Engineering. He currently lives in Toronto, Canada.

A community site showcasing legacy Java patterns alongside modern equivalents to help developers understand how everyday Java code has …

Java developers from around the world are writung a book about a question that's becoming impossible to ignore: how do we write software …

Learn how to build secure AI applications using LangChain4j guardrails in Spring Boot. Implement input/output validation, prevent prompt …

Explore the refined Java Structured Concurrency API. Learn about new task scopes, joiners, and improved error handling for cleaner, more …

My Journey Creating an AI-Powered Form Filler with RAG, LangChain4j, and Ollama

LangChain4j already provides two types of memory eviction policies, lets adopt a third one: SummarizingTokenWindowChatMemory

Learn how to write a Java CLI shebang script and run it from the terminal, leveraging Java 11 and beyond to create simple, effective …

Java Champion Ben Evans shares his journey, insights on Java's evolution, and advice for developers in this insightful interview.

Learn how to create a Java command-line tool with JBang and PicoCLI to automate generating release notes from GitHub.

Java's sun.misc.Unsafe is being phased out. Learn safer memory access using VarHandle and Foreign Function & Memory API to keep your …

JEP 476 represents a significant step towards simplifying Java programming by reducing boilerplate code and improving readability.

How JEP 455 can be utilized to handle complex decision-making scenarios more efficiently. We'll examine a practical example to illustrate …

Discover how Java records enhance parameterized testing in JUnit 5. Learn to create cleaner, more expressive, and type-safe tests.

Explore the insightful journey of Bert Jan Schrijver, a Java Champion, as he discusses his path in software development, the role of …

In the context of virtual threads, pinning refers to the condition where a virtual thread is "stuck" to its carrier thread (the platform …

Explore the intriguing world of web crawling in Java through a comparative lens: classical threads vs. virtual threads.

This article debunks the commonly held belief that stack size influences the number of native threads that can be created in a JVM …

Let's examine the principles and practical applications of Sealed Classes and pattern matching in Java.

Explore insights from Simon Martinelli, Oracle ACE Associate, as he discusses his journey in Java development, the importance of simplicity …

By considering real-world examples and learning from the process of refactoring and testing, we can create robust and maintainable code!

In this article, we will cover how to store files in a database using Spring Boot and discuss some alternatives.

In this tutorial, we will explore the concept of thread safety in Java, specifically focusing on a simple counter.

Sealed classes and interfaces with pattern matching provide powerful new tools for more explicit, controlled, and flexible design in Java.

Not just a technical manual, Simon Ritter's new book is a companion on a journey through the complexities of OpenJDK migration.

As we inch to the release of JDK 21 in September (next month!), get familiar with the features and improvements this version will bring!

Cay Horstmann shares his experiences with Java, his writing process for technical books, the challenges of teaching Java, and discusses its …

Foojay.io is a community platform dedicated to the needs of developers who use the OpenJDK and related technologies.

Explore the world of Java with Champion Sebastian Daschner, discussing his journey, future trends in Java, and tips for developer growth.

Dive into the modern evolution of Java, challenging stereotypes and showcasing its transformative features.

Explore the first part of our in-depth interview with Jakob Jenkov, an experienced Java developer and AWS solution architect, as he shares …

Explore the first part of our in-depth interview with Jakob Jenkov, an experienced Java developer and AWS solution architect, as he shares …

Learn about a few notable features that stand out in the upcoming Java 21, in an overview of their functionalities and potential use cases.

Dive into an exclusive interview with Chris Newland, the creator of JITWatch. Explore JVM performance optimization, and gain expert advice.

Join us as we explore Nicolas Fränkel's journey in software development, industry challenges, and the potential role of AI in the future of …

Dive into our interview with software engineer Miro Wengner as he discusses his career, software challenges, and insights from his …

Experience the intersection of expertise, innovation, and camaraderie at JConf Toronto 2023, a unique platform.

Uncover the dynamics of software development and product management in our discussion with Erik, Senior Director at Azul. Learn about his …

"Java Unscripted" is an exciting interview series featuring insights from Java industry luminaries. Join us as we explore their journeys, …

Discover valuable insights from Java Champion Michael P. Redlich and learn about continuous learning, open-source contributions, and …

Learn about Java Virtual Threads, how they simplify concurrent programming, how they overcome the limitations of traditional Java threads.

Learn about Frank Delporte, Java Champion and Azul technical writer at Azul, on Java, resources for beginners, insights into in the …

Discover insights from Otavio Santana on the importance of open-source contributions, mentorship, and simplicity in software engineering, as …

In this article, we look at a discussion on Foojay's Slack comparing Java and Kotlin, showing why developers should join the platform.

Join our interview with Java expert Shai Almog, as he shares his journey and offers valuable advice for developers, discussing mentorship …

Discover insights from seasoned Java developer Steve Poole on the ever-evolving software landscape, career growth, and lessons learned …

Discussion of the use of Map.of() and new HashMap() in Java, the difference between them, and the benefits of using Map.of().

Discover insights from Geertjan Wielenga, a Java Champion and developer advocate, on how to succeed in the software industry and the …

I attended the ConFoo conference in Montreal for a day, gave two talks on Java, and met with old and new friends, and had a great …

Sealed classes can help you create more robust and maintainable code by restricting the inheritance hierarchy of your classes and …

Optional is a Java class that provides a way to handle null values in a type-safe and efficient manner. This tutorial will cover the …
Java bytecode may be modified to provide functionality, profile code, or obfuscate it. We'll examine examples in this brief article.

Learn why developers may not write or give talks and how sharing knowledge and experiences can improve communication skills, and much more!

This article explains why we chose JSF to build the Eclipse starter for Jakarta and why it deserves more love and attention!

This is a continuing attempt to refactor from Java 11 to later versions of Java, and today's topic is about two methods of the Stream API.

Let's look back and what has happened on Foojay during the last 2,5 years and talk to some of the people behind the project.

That was a long-awaited migration, but I'm pleased that we eventually made it. The next thing... "Why not Java 17 directly?"

In this article, the internal workings of the JVM are discussed, e.g., interpreter, JIT compiler, and how it optimizes code.

Although OpenJDK 19 is not an LTS, it is still a significant release, in my opinion. It includes several game-changing features!

Let's learn how to do asynchronous method invocation with Callable and Future by means of a practical example.
Let’s appreciate the Java Virtual Machine (JVM) even more. Today we'll discuss Constant Pool in quite some detail.

Jakarta EE is a dominant force behind all enterprise development in Java. Check out my favorite top 7 features, what are yours?

If you want to add an event to our calendar or advertize your event on Foojay.io, you can follow the following steps!

In many cases, microservices are probably not ideal, but if we are to do it, we should take baby steps. Let's find out the what alternatives …

Do we need to do all modern development via the microservices architecture? Is it the norm, the new standard? This book argues differently.

In this article, we explored how the Java incubator modules can be run through command line and using IDE, such as IntelliJ IDEA.

JEP 425: Virtual Threads (Preview) has been proposed recently. I wanted to give it a try on my favourite IDE, this article shows you how to …
The complete guide to publishing your article on Foojay.io: prepare a content folder from the template, add your images, and submit it by …

Let's explore ten Java programming features used frequently by developers in their day-to-day programming jobs.

From experience, I have seen three big mistakes every junior software developer makes that could easily be solved.

Even while threads are helpful, they are dreadful to many developers. Here are five essential threading concepts for Java developers!

After many discussions with Java developers, combined with my personal experiences with the Java community and platform, here are the key …

Today I will make an attempt to appreciate how unique the JVM is. So, let’s begin the journey to how Java works!

What happens if the child-task creates more tasks and the parent-task waits for the child-tasks to finish in TheadPool in java.

As more and more companies go Agile, being able to read other's code is more important than ever. Read on for some tips on how to improve …

What is the maximum number of worker threads we can put in a ThreadPool? Let's find out today on Foojay's amazing Java threading series!

Let's find out what are the ways to create ThreadPool using Executor framework in java and use result-bearing tasks using Callable and …

Learn how to ask the executor framework at startup to provision threads for us and they will be reused as long as the application runs.
Let's learn about BlockingQueue, one of the essential concurrent collections available in the concurrent package in the JDK.
Let's continue the discussion and share a few more thread-safe classes that we can use in our day-to-day coding!
I will try to explain in a very simplified way what Java thread safety is and how we can achieve it while we write our day-to-day code!
Can we create as many Java threads as we want? I will try to come up with an answer via an exercise, so bear with me!

Have you ever wondered what is the purpose of the "wait()", "notify()", "notifyAll()" methods that come with each Java object?
Optional is a mystery box, a wrapping paper: it may not contain value. When we specify that in a signature, we assume the box might be …

When a thread acquires a lock object, no other thread will be able to use it. Once a thread unlocks the lock, other threads acquire it …
We need to be very careful when using the "volatile" keyword, and we should use it only where it’s required, and definitely not everywhere.

Tip: We can only ask the Java thread to execute a piece of code, but we cannot guarantee the execution order of multiple threads!

Let's see an example of where we can use Threads. Let's assume we are building a web server that returns the most used words in a website.
To be able to execute a piece of code requires an execution environment. In Java, a thread is an executing environment.
Learn how using compact strings can help you reclaim 25% of Java heap memory and lower your Cloud bills... very easily.