Photo by Mitchell Luo on Unsplash

Hexagonal architecture, or port and adapter architecture, is an architectural pattern used in software design. It aims to create systems based on application components that are loosely coupled and can be easily connected to their software environment through ports and adapters. These components are modular and interchangeable, which enhances processing consistency and facilitates test automation.

In this article, we will first explain the hexagonal architecture in more detail, then will create a spring boot application based on this architecture 😀.

Photo by 贝莉儿 DANIST on Unsplash

Microservices are an architectural approach to application development. A microservices architecture differs from a classic monolithic approach in that it breaks down the application to isolate key functions. Each of these functions is called a “service” and these services can be developed and deployed independently of each other. Thus, each can function (or malfunction) without affecting the others.

“Docker allows you to package an application with all of its dependencies into a standardized unit for software development.”

Before I tell you about Docker I will tell you a story that every developer has experienced at least once.

Once upon a time, there was a young developer who was quietly coding on his computer. He was in a hurry because he had to present his work the next morning. After hours of work, the application was there, and it worked perfectly! The next day, our coder arrived proudly for his presentation, with his project on a USB key. …

Photo by Kristopher Roller on Unsplash

A container object which may or may not contain a non-null value


During your life as a Java developer, you have surely encountered a NullPointerException. Read on if this is the exception you encounter the most. I imagine you might be thinking something like, “Yes, I agree, NullPointerExceptions is a pain for any Java developer, novice or expert, but there’s not much we can do about them.“ This is a common feeling in the programming world. Until Java 8 introduced Optional.

Optional allows an object to wrap those nullable values. …

The secure runtime for JavaScript and TypeScript



On June 2, 2018, the creator of NodeJS Ryan Dahl landed on the JSConf scene with maximum stress. He no longer supports NodeJS and starts talking about Deno. But what’s wrong with NodeJS? And why would Deno be our savior? Today I’m giving you the reasons behind this decision.

What are NodeJS Problems?

  • Not sticking with Promises: At the birth of NodeJS Ryan introduced the promises, in place of the callbacks, to remove them immediately after. So we end up with callbacks everywhere in the basic API of NodeJS and it ages badly. …


A Kubernetes Native Java stack tailored for OpenJDK HotSpot and GraalVM, crafted from the best of breed Java libraries and standards.


Quarkus is the latest addition to the Java world. This open-source framework initiated by Redhat has been talked about for some time. it improves start-up times, execution costs, increases productivity. This is why Quarkus was already considered by some to be the future of Java.

It was designed to allow the development of so-called cloud-native Java applications, or “Kubernetes native” to use their terms. …

Photo by Tim Gouw on Unsplash


When it comes to enterprise applications, it is essential to properly manage concurrent access to a database. This means that we should be able to manage multiple transactions efficiently and, above all, without risk of error.

In addition, we must ensure that the data remains consistent between readings and simultaneous updates.

To do this, we can use the optimistic locking mechanism provided by the Java Persistence API. This means that multiple updates to the same data at the same time do not interfere with each other.

How to use optimistic locking?

To use optimistic locking, we need to have an entity including property with @Version

1. Introduction

What is the difference between Serializable and Externalizable in Java is among the famous Java interview questions. this is one of those difficult Java questions that nobody wants to see in the Java interview.

What makes serialization issues tricky is that serialization as a persistence mechanism is not very popular.

Serializing objects in Java allows you to create a sequence of bytes from any object that has implemented the Serializable interface, it also allows you to transform this sequence of bytes into an object. …

It’s better to have infinite scalability and not need it, than to need infinite scalability and not have it. Andrew Clay Shafer

As the server load increases, and it’s time to add hardware resources to your infrastructure, you have two approaches: increase your resources vertically or horizontally.

Vertical scalability

Vertical scalability is the most intuitive, it means adding resources to a single server (by adding RAM, boosting its CPU …). It’s simple but the cost of material capacity is rapidly exponential.

This solution has limits, You can probably multiply your server’s capabilities by 2, maybe even by 10, but not by 100.

Buy a house, or build your own carefully.

Developers often use the terms “library” and “framework” as if they were the same. But there is a difference.

Both libraries and frameworks are reusable code written by someone else. Their purpose is to help you solve common problems in easier ways.

We can use a house as a metaphor to explain the difference between these concepts.

A library is like building your home from scratch, you have the choice to make your house as you wish, with any architecture you like, you can sort your rooms in the way you like.

Sofiene Ben Khemis

Software Engineer. I’m not perfect. still running after my dreams. going to the moon 🌑

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store