Virtual Threads (Project Loom) – Revolutionizing Concurrency in Java

Project Loom Virtual Threads in Java

Introduction

Concurrency has always been a cornerstone of Java, but as applications scale and demands for high throughput and low latency increase, traditional threading models show their limitations. Project Loom and its groundbreaking introduction of virtual threads redefines how we approach concurrency in Java, making applications more scalable and development more straightforward.

In this post, we’ll go deep into virtual threads, exploring how they work, their impact on scalability, and how they simplify backend development. We’ll provide both simple and complex code examples to illustrate these concepts in practice.

Continue reading “Virtual Threads (Project Loom) – Revolutionizing Concurrency in Java”

The Generational Z Garbage Collector (ZGC)

An image for a blog post with the phrases JAVA 21 and GenZGC prominently displayed

The Generational Z Garbage Collector (ZGC)

The Generational Z Garbage Collector (GenZGC) in JDK 21 represents a significant evolution in Java’s approach to garbage collection, aiming to enhance application performance through more efficient memory management. This advancement builds upon the strengths of the Z Garbage Collector (ZGC) by introducing a generational approach to garbage collection within the JVM. Continue reading “The Generational Z Garbage Collector (ZGC)”

From Java 17 to Java 21 And How To Do It: A Comprehensive API Comparison

An image for a blog post with the phrase JAVA 21 prominently displayed

Introduction

As we all know, Java is a constantly evolving programming language. With each new release, we get a plethora of new features, enhancements, and sometimes, a few deprecations. In this blog post, we will analyse the significant differences between Java 17 and Java 21 API. We will navigate through the changes, with a focus on deprecated features, new library additions, security enhancements, and performance improvements.

Released on September 19, 2023, Java 21 is celebrated for its comprehensive set of specifications that define the behaviour of the Java language, API, and virtual machine. It represents a Long Term Support (LTS) version, ensuring extended updates and support from various vendors, making it a pivotal release for developers and organizations alike. Continue reading “From Java 17 to Java 21 And How To Do It: A Comprehensive API Comparison”

Database Modeling Tutorial Using PlantUML

In this tutorial, we’ll explore the database modeling aspect of a small blog using PlantUML. We’ll start by defining the tables and their attributes, then establish relationships between them based on the provided database model.

1. Understanding the Database Model

Let’s review the database model for our small blog:

Tables:

  • Posts: Represents individual blog posts.
  • Users: Stores user information for blog authors.
  • Comments: Contains comments left by users on blog posts.
  • Tags: Stores tags associated with blog posts.
  • PostTags: Join table to establish a many-to-many relationship between posts and tags.

Relationships:

  • Posts – Users: One-to-many relationship where a post belongs to one user.
  • Posts – Comments: One-to-many relationship where a post can have many comments.
  • Posts – Tags: Many-to-many relationship facilitated by the PostTags join table.
  • Tags – Posts: Many-to-many relationship facilitated by the PostTags join table.

Continue reading “Database Modeling Tutorial Using PlantUML”

Introduction to PlantUML: Unleashing the Power of Visual Representation as a Code in Software Development

Introduction

In the fast-paced world of software development, effective communication and clear documentation are paramount. This is where the power of visual representation comes into play, and one tool that has significantly simplified this process is PlantUML. This open-source project has revolutionized the way developers, project managers, and analysts create and share diagrams. It’s not just a tool; it’s a visual language that transforms the way we think about and document software architecture, processes, and workflows. Continue reading “Introduction to PlantUML: Unleashing the Power of Visual Representation as a Code in Software Development”

Preventing Security Vulnerabilities in a Web Application – Alexius Diakogiannis – Devoxx Morocco 2023

This a speech I gave during Devoxx Morocco 2023

In today’s digital age, web applications are a crucial part of our lives. However, with great power comes great responsibility. Companies are constantly under threat from malicious users and hackers, which is why it’s essential to safeguard your web applications.

Topics Covered:

  1. Software Development Life Cycle (SDLC) – The Shield of Defense
    • Discover the importance of implementing a robust SDLC to fortify your web application against security vulnerabilities.
  2. Secure Code Writing – The Foundation of Web Application Security
    • Understand the significance of secure coding practices and how they form the bedrock of web application security.
  3. DAST, SCA and SAST tools 
    • Usage and comparison
  4. AI in Development – A Futuristic Approach
    • Explore how artificial intelligence can be harnessed to enhance web application development security.
  5. Code Monitoring in Production – Staying Vigilant
    • Learn the strategies and tools for monitoring your code in a production environment to promptly detect and mitigate vulnerabilities.

📽️ Watch the Video

📄 Find the Presentation Slides

Explore the presentation slides to get an in-depth look at the concepts discussed during the session: Speaker Deck

 

Are Java Application Servers Dead?

In the past, application servers were essential for running Java applications. They provided a number of features that were necessary for complex applications, such as:

  • Dependency management
  • Transaction management
  • Security
  • Caching
  • Messaging

However, with the rise of microservices, many developers are moving away from application servers.

As a result, many developers believe that application servers are no longer necessary for microservices. However, there are still a number of reasons why application servers can be beneficial for Java applications, even in a microservices architecture. Continue reading “Are Java Application Servers Dead?”

JCrete Unconference: A Convergence of Minds Shaping Java and Beyond

The JCrete 2023 Unconference stands as a premier annual event, taking place in Kolymvari (Chania, Crete) each July since 2010. Renowned for its exclusivity, this invitation-only Unconference brings together influential minds from the computing industry who have significantly impacted the field. The core theme revolves around Java and related subjects, fostering an environment where participants engage in informal discussions to share experiences and collectively learn from one another. Continue reading “JCrete Unconference: A Convergence of Minds Shaping Java and Beyond”

Introduction to Java Modules: A Comprehensive Tutorial

A picture showing a scren with java source code

Java 9 introduces a new feature called Java Modules, which is part of the Java Platform Module System (JPMS). The Java Platform Module System, also known as Project Jigsaw, brings several benefits to Java developers, including smaller application distributables, encapsulation of internal packages, and startup detection of missing modules. In this tutorial, we will explore the basics of Java modules, their structure, and how to use them effectively. Continue reading “Introduction to Java Modules: A Comprehensive Tutorial”

Java 8 to Java 17: New Features and Hassle-Free Migration

Java 8 to Java 17

Java, the widely-used programming language, as it continues to evolve with each new release I still see companies and projects hesitating to transition from Java 8 to Java 17, the latest long-term support (LTS) release. This leads them into either using unsupported Java 8 versions or paying a heavy fee for support or for the usage of an alternative VM like Azul. The transition from Java 8 to Java 17 has brought about numerous enhancements and features that developers can leverage to create more efficient and robust applications. In this article, we will delve into the new features introduced in Java 17, compare them with Java 8, and provide best practices for migrating from Java 8 to Java 17. Continue reading “Java 8 to Java 17: New Features and Hassle-Free Migration”