Latest Articles

The hidden gems in Java 16 and Java 17, from Stream.mapMulti() to HexFormat

Java 17

There’s much more to a new Java release than the well-known JEPs.

Look out, Duke! Part 2: Control a Java game with a Raspberry Pi and a joystick

Coding

It takes only a little hardware, and only a little software, to attach a single-board computer to a Java game.

Ripe for the picking: 11 essential Java features to help modernize your code

Coding

Use these Java language improvements to make your code easier to write, read, and maintain.

Introduction to chaos engineering, Part 2: Four steps for disrupting complex systems

Testing

Here’s how to break your most critical business systems—intentionally.

Dalia’s gentle introduction to Docker

Containers

The friendly overview of containers and Docker that many Java developers have been looking for

4 ready-to-try Java tools your team may not know about

Tools

Tell everyone about jdeprscan, jlink, jpackage, and Java Flight Recorder.

Look out, Duke! Part 1: How to build a Java game with JavaFX and the FXGL library

Coding

You’ll be amazed at how little code is needed to create a 2D arcade game.

Introduction to chaos engineering, Part 1: Crash test your application

Testing

One way to test a complex software system is to carefully break things and see what happens.

A new reporting platform for managing installed Java versions and applications

Tools

Java Management Service provides analytics on Java running in the cloud and on-premises.

Web microservices development in Java that will Spark joy

Frameworks

The Spark framework might be the platform you need for building web applications that run in the JVM.

Happy anniversary! Celebrating 10 years of Java Magazine

From the Editor

From Java 7 to Java 16 and beyond, this technical journal has been a resource by and for the Java community.

Java for the cloud, and the cloud for Java

Frameworks

Running Java in the cloud helps lower costs, speed up operations, and simplify the deployment.

10 good reads from the Java Magazine archives

Coding

For years, some important articles have not been available on the magazine website. They are now.

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

Coding

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

Exploring Joshua Bloch’s Builder design pattern in Java

Design Patterns

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

You don’t always need an application server to run Jakarta EE applications

Jakarta EE

Depending on the requirements, you can do well with Helidon, Piranha, or Hammock.

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

Coding

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

Pedal to the metal: High-performance Java with GraalVM Native Image

GraalVM

How Native Image’s G1 GC garbage collector and profile-guided optimizations can help build fast, efficient, easy-to-distribute binaries for Java applications

Make Java REST development easier with the Jareto library

REST

A small open source library helps with mapping Java exceptions and transporting HTTP metadata.

Everything you need to know about OpenJDK’s move to Git and GitHub

Java 17

The move from Mercurial to Git provided an opportunity to consolidate the source code repositories.

Understanding Java generics, Part 2: The hard part

Coding

Learn about wildcards, bounded wildcards, subtyping, and type erasure.

A peek into Java 17: Continuing the drive to encapsulate the Java runtime internals

JVM Internals

The need to encapsulate the runtime is fundamentally caused by Java’s nature as an open programming environment.

Understanding Java generics, Part 1: Principles and fundamentals

Coding

Learn how to use generics to increase type safety and code readability.

Guava: A treasure trove of Java functionality

Tools

This broad collection of utilities and functions from Google merits a principal place in your toolkit.

Even more greatness packed into Java 16, including tools for improving future JVMs

Java 16

Java Champions love pattern matching for instanceof, records, Stream.toList(), the vector API, the foreign linker API, and the foreign-memory access API.

First steps with Oracle Cloud Infrastructure SDK for Java

Coding

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