Functional programming in Java, Part 2: Lambda reuse, lexical scoping and closures, and reduce()

Learn how to use lambda expressions to greatly reduce code clutter.

Functional programming in Java, Part 1: Lists, lambdas, and method references

Learn how to use lambda expressions to greatly reduce code clutter.

Exploring Joshua Bloch’s Builder design pattern in Java

Bloch’s Builder pattern can be thought of as a workaround for a missing language feature.

First steps with Oracle Cloud Infrastructure SDK for Java

Learn how to control Oracle Cloud Infrastructure resources through Java code.

Fast, flexible data access in Java using the Helidon microservices platform

Helidon SE and Helidon MP provide a very diverse array of methods for accessing data sources.

Design change-tolerant software with cloud native patterns

By applying cloud native designs, you can build resilient, easily adaptable, web-scale distributed applications that handle massive user traffic and data loads.

The Java Optional class: 11 more recipes for preventing null pointer exceptions

How to avoid Optional class antipatterns and design smells—all while streamlining application development

The Command Pattern in Depth

Packaging commands as objects and sending them to a receiver enables a clean, loosely coupled design that’s easy to maintain.

The Decorator Pattern in Depth

Add functionality to a class without modifying it.

The State Pattern

Elegantly manage state transitions without large switches or numerous if statements.

The Visitor Design Pattern in Depth

Perform one or more operations on a collection of different data types without disrupting existing code.

The Proxy Pattern

A good solution when you need to enable or mediate access to objects, either local or remote