AWS Bites Podcast

148. Lambda and Java with Mark Sailes

What if “Java is too old for serverless” is the myth holding your team back in 2025? We put it to the test with Mark Sailes (ex-AWS, Java-on-Lambda expert).

In this AWS Bites episode we get specific: when Java is the right call for Lambda and when it isn’t, how to hit real latency targets, and the exact levers that matter in production—SnapStart, provisioned concurrency, smart JVM/GC settings, and whether GraalVM is worth it. We compare vanilla Java, Micronaut, Quarkus, and Spring Boot for startup and memory, share realistic p95/p99 expectations, and outline fast feedback loops with Testcontainers and LocalStack.

If Java on Lambda sounds risky, this might change your mind. Stick around for Mark’s tuning checklist and our verdict on when to bet on Java vs pick another runtime.

Big shoutout to fourTheorem for powering yet another episode of AWS Bites. At fourTheorem, we believe the cloud should be simple, scalable, and cost-effective, and we help teams do just that. Whether you’re diving into containers, stepping into event-driven architecture, or scaling a global SaaS platform on AWS, or trying to keep cloud spend under control our team has your back. Visit fourTheorem.com to see how we can help you build faster, better, and with more confidence using AWS cloud!

In this episode, we mentioned the following resources:

Let's talk!

Do you agree with our opinions? Do you have interesting AWS questions you'd like us to chat about? Leave a comment on YouTube or connect with us on:

Mark
00:03:18

I, you know, I really don't think we should be coming at, you know, it in that direction. You know, when I come to a new project, or come to an existing project that I'm looking at again, I don't start with saying, which language should I use? You know, if I'm working as a team lead, or if I've joined a team, or if I'm an architect working with a team, I look at the skills of that team, and the application that we're working with and the wider context. And that's how I'm choosing every part of the stack, you know, do we have any skills in NoSQL? If we don't have any skills in NoSQL, we probably won't be using DynamoDB. If we haven't got any Go skills, we're probably not going to be writing the code in Go. So I'm thinking much more in that direction. So if I'm speaking with a large bank, and they are wanting to adopt serverless, I am definitely going to help them to adopt serverless, because serverless is really going to help that business to actually gain some momentum and cut some of the overhead that they've traditionally spent a long time dealing with. And Java is one of those things where, you know, it got a bad reputation, and it hasn't been able to shrug that bad reputation off. And I talk about it similar to the way that Lambda used to have a bad reputation with VPC. If you've been using Lambda for long enough, you'll remember if you had a VPC attached Lambda function, a cold start would take at least 30 seconds. But now, no one even considers that because it's kind of been fixed. And the same is true of Java. You know, there's a lot of tools and techniques that you can use. Some of them easy, some of them hard, some of them, you know, you don't need to invest much time into. You know, it's very easy to get a cold start less than one second. But can you get the same sort of cold start as a Rust function with 128 megabytes of memory? No. But that's just the different behaviors of the language. And, you know, teams have been using Java for a long time. They're very familiar with Java. They have all of their tools, libraries written in Java. So I'm much more interested in helping them to adopt serverless rather than, you know, them having to, you know, rip up everything that they know. And start from scratch.

Help us to make this transcription better! If you find an error, please submit a PR with your corrections.