Community-Managed AWS Lambda Base Images for Java 19

I’ve added a new custom base image for Java 19 on Lambda to complement the community base images already available for Java 17 and Java 18. You can find the images on the ECR Public Gallery and DockerHub and the source code on GitHub. If you’re as excited to try Java 19 as I am, then these base images will let you get started.

Why Java 19?

You can read the full list of Java 19 changes here, but the new features I’m particularly excited about are:

  • Record Pattern Preview — Allows users to deconstruct records on-the-fly using pattern matching in if and switch clauses.
  • Virtual Threads — AKA Project Loom. This brings “green threads” to the JVM, and should go a long ways towards discouraging hard-to-use patterns like reactive programming and enabling some exciting new programming styles, like the actor model, on the vanilla JVM.

Where Can I Find the Base Images?

The images are publicly available on the ECR Public Gallery and DockerHub. I will also make them available on the other major Docker registries, but I’ll make sure that at least the current images stay available on that repository going forward.

How Do I Use Them?

Using these custom base images is just like using stock AWS base images. You can find an example on GitHub at aleph0io/example-java-lambda-function. For convenience, find the Dockerfile below. Note the FROM clause:

FROM public.ecr.aws/aleph0io/lambda/java:19.0.0-al2

COPY target/hello-lambda.jar "${LAMBDA_TASK_ROOT}/lib/"

CMD [ "com.sigpwned.lambda.hello.HelloLambda::handleRequest" ]

How Mature Are They?

The Java 19 images are all tested live on Lambda on deployment, but I have not built any production services with them. (And Java 19 itself is brand spanking new, so it could have bugs of its own!) Also, they are not (well) optimized for size, cold start time, or performance, so please consider them experimental, at least for now. All feedback and PRs welcome!

Can I see the Source Code?

Of course! The source code is released under the Apache 2.0 license. If you’re curious, you can find the source code for the base image on GitHub at aleph0io/aws-lambda-java-base-images.