Series Posts

Conceptual Java Evolution: From 8 to 25

Part 1: Java 8: The Functional Revolution

Java 8 was the most transformative release in the language's history — introducing lambda expressions, the Stream API, Optional, default interface methods, and a brand-new Date/Time API. This part covers every major feature with deep conceptual explanations and practical examples.

Conceptual The Azure Ascent: A Backend Engineer's Journey to Cloud Mastery

Part 0: The Azure Ascent: A Backend Engineer's Journey to Cloud Mastery

Welcome to the Azure Ascent—a comprehensive 6-part tutorial series for experienced backend engineers. Follow Marcus as he builds CloudVault, a fintech platform, from the ground up on Azure. This series combines deep conceptual explanations with 40+ production-ready Java code examples, taking you from fundamentals through enterprise-grade deployment.

Conceptual Java Evolution: From 8 to 25

Part 2: Java 9: Modules, JShell, and a Smarter Platform

Java 9 introduced Project Jigsaw — the Java Platform Module System — fundamentally restructuring the JDK itself. It also brought JShell (the first REPL for Java), convenient collection factory methods, a new HTTP client, and a raft of API improvements.

Conceptual The Azure Ascent: A Backend Engineer's Journey to Cloud Mastery

Part 1: Part 1: The Summit Awaits — Azure Fundamentals & Core Concepts

Marcus begins his Azure journey by understanding the platform's organizational model. We explore subscriptions, resource groups, regions, and the Azure Resource Manager. Learn how Azure's architecture differs from AWS and why these foundational concepts matter for your designs.

Conceptual Java Evolution: From 8 to 25

Part 3: Java 10: Local-Variable Type Inference with var

Java 10 was a focused release, best known for introducing the var keyword — local-variable type inference. While small in scope, var meaningfully reduced verbosity in everyday Java code. This part covers var in depth, along with the other improvements in Java 10.

Conceptual The Azure Ascent: A Backend Engineer's Journey to Cloud Mastery

Part 2: Part 2: Building the Engine — Azure Compute Services

CloudVault needs to deploy its microservices. Marcus explores four compute options—Virtual Machines, App Service, Azure Functions, and Containers. We build a production-ready Java Spring Boot API and learn when to use each service for different workloads.

Conceptual Java Evolution: From 8 to 25

Part 4: Java 11: The New LTS Baseline

Java 11 became the new long-term support baseline, replacing Java 8 for most enterprises. It standardised the HTTP Client, added powerful String and Files utility methods, allowed var in lambda parameters, and introduced the experimental Z Garbage Collector.

Conceptual The Azure Ascent: A Backend Engineer's Journey to Cloud Mastery

Part 3: Part 3: Storing the Treasures — Azure Data & Storage Services

CloudVault's data is growing fast. Marcus explores Azure's data services—SQL Database for relational data, Cosmos DB for globally distributed workloads, and Blob Storage for files. We design a multi-tier data architecture and implement production-ready Java code for each service.

Conceptual Java Evolution: From 8 to 25

Part 5: Java 12 & 13: Switch Expressions and Text Blocks Begin

Java 12 and 13 were transitional releases that introduced two features in preview that would become cornerstones of modern Java — switch expressions and text blocks (multiline strings). Java 12 also added the Teeing collector and Compact Number Formatting.

Conceptual The Azure Ascent: A Backend Engineer's Journey to Cloud Mastery

Part 4: Part 4: Connecting the Dots — Azure Networking & Security

Marcus designs a secure, multi-tier architecture for CloudVault. We explore Virtual Networks, Network Security Groups, Azure Key Vault for secrets management, and identity/access control with Azure AD. Learn how to design networks that protect your data while enabling communication between services.

Conceptual Java Evolution: From 8 to 25

Part 6: Java 14 & 15: Records, Text Blocks, and Sealed Classes

Java 14 finalised switch expressions and previewed records and pattern matching for instanceof. Java 15 made text blocks production-ready, introduced sealed classes in preview, and delivered the long-awaited helpful NullPointerExceptions. Together they laid the groundwork for modern Java's data-oriented programming model.

Conceptual The Azure Ascent: A Backend Engineer's Journey to Cloud Mastery

Part 5: Part 5: The Intelligent Layer — Azure AI & Machine Learning

CloudVault wants to add intelligent features to their platform. Marcus explores Azure AI Services (Vision, Language, Speech), Azure OpenAI for LLMs, and Azure Machine Learning. We integrate AI capabilities into a Java backend application and understand when to use pre-built APIs vs. custom models.

Conceptual Java Evolution: From 8 to 25

Part 7: Java 16 & 17: The Modern LTS Baseline

Java 16 finalised records and pattern matching for instanceof. Java 17 became the new LTS release, finalising sealed classes and introducing pattern matching for switch in preview. Together they define the modern Java baseline that most teams target today.

Conceptual The Azure Ascent: A Backend Engineer's Journey to Cloud Mastery

Part 6: Part 6: Automating the Climb — Azure DevOps & Deployment

Marcus faces his final challenge—automate everything. We build a complete CI/CD pipeline using GitHub Actions, implement Infrastructure as Code with Bicep, set up monitoring with Application Insights, and establish production-ready deployment practices including blue-green and canary deployments.

Conceptual Java Evolution: From 8 to 25

Part 8: Java 18, 19 & 20: Virtual Threads on the Horizon

Java 18, 19, and 20 were bridge releases between the Java 17 and Java 21 LTS versions. They introduced UTF-8 as the default charset, a simple built-in web server, and — most significantly — previewed virtual threads, structured concurrency, and record patterns that would be finalised in Java 21.

Conceptual Java Evolution: From 8 to 25

Part 9: Java 21: The Concurrency Revolution — LTS

Java 21 is a landmark LTS release. It finalised virtual threads (Project Loom), sequenced collections, record patterns, and pattern matching for switch — while previewing string templates and unnamed classes. It is the most feature-rich LTS release since Java 8.

Conceptual Java Evolution: From 8 to 25

Part 10: Java 22 & 23: Unnamed Variables and Foreign Memory

Java 22 finalised the Foreign Function and Memory API and introduced unnamed variables and patterns. Java 23 continued refining previews including primitive types in patterns and module import declarations. Together they represent the platform's ongoing maturation.

Conceptual Java Evolution: From 8 to 25

Part 11: Java 24 & 25: The Next LTS — Simpler, Faster, Safer

Java 24 delivered ahead-of-time class loading and stream gatherers. Java 25 is the next LTS release, finalising scoped values, compact source files, flexible constructor bodies, module import declarations, and primitive type patterns — while introducing compact object headers for significant memory savings.