About this video
What You'll Learn
- Discover how modern JVM releases reduce container startup overhead for cloud native Java microservices.
- Understand how GraalVM native compilation helps Java serverless functions beat cold-start latency on Kubernetes.
- Compare Java web frameworks for microservices, from bare-bones Jakarta EE to Quarkus and Spring conveniences.
Otavio Santana joins Laura and David to dispel myths about modern Java on Kubernetes. They cover JVM container awareness, GraalVM native compilation for serverless cold starts, and frameworks like Quarkus and Spring.
Full transcript
Generated from the English captions. Timestamps jump the player to that moment.
Read the full transcript
0:00 Java. Never thought we'd do an episode on that, did you? Java for serverless functions. Did I hear that right? We get a chance to talk with Atavio Santana, is a Java champion, Kubernetes expert, and loves to make dad jokes, especially at David's expense. And believe it or not, I actually left this episode kind of writing to one some Java. Maybe. We did mention Russ though. Enjoy the episode. Welcome to today's episode, Otavio. You are gonna teach us about something that I generally consider a curse word, and that is Java. But we're gonna look at this in a
0:37 fresh light and understand how to be successful with Cloud Native and Java on top of Kubernetes. We'll try not to talk about Rust, I guess. Right? Is that the plan? There's a plan, ours. Okay. Just to to reply the answer, how can you use Java of Kubernetes and success? That's easy. Don't use Java. That's that's what I was expecting right off the bat. Fuck. Well, alright. That was the end of the episode. I will just keep on moving here. Thank you. No. I'm just kidding. Alright. But alright. So so first, before we get into that, right, I know we're gonna
1:10 have a great conversation about Java, but I want people to understand who you are and what you've been up to. So for anyone who's not familiar with you and your work, please take a few moments to introduce yourself and share anything that you wish. Okay. So super glad to be here. My name is Altave Santana. Most of the time, I do jokes, mainly dad jokes. Sometimes, hard lever, I do some code, especially around cloud native, especially because that is what I do love. The job in the Java community is help people to engage them and move the organization forward using the most
1:46 effective techniques, using the Java Enterprise Notifications, for example, under the Jakarta, that is under Eclipse Foundation. So my goal is basically to help Java developers and software engineers to make them more effective and take advantage of open source and naturally exploring more about cloud, the cloud native perspectives. Yeah. I love that you said to help people, but that you rarely write code. To write oh, yeah. So you're a consultant, aren't you? Yes. I took a look at your website, and I clicked on the awards page, and there was, like, 30 different things there. So you've been doing this Java stuff for
2:24 a while. And I think you've even written, like, eight books. Right? So maybe you can give us a bit of history. How long have you been doing Java? What's your background? Anything else you wanna share there? It's a long time doing Java. More than I wish, by the You can see my white hairs. So since Java eight, I have been working Java. So if you hate Java on that time, sorry. I did my best to make Java as good as possible, but it's hard. I've helped several Java specifications through the JCP, where I become an executive member of the JCP. So if
3:01 you're not familiar with JCP, it's basically the organization who defines and drives the Java community. Java does not belong to Oracle at all. So we do have several organizations, several communities working on the process in Java. We do have a huge ecosystems, people, organizations, enterprise, and so on, even open source organizations such as Apache and Eclipse Foundation. And I have been working with Java since Java eight. And with the impact in moving the Java Enterprise to a Tilts Foundation, I went and to a Tilts Foundation worked on those Java Enterprise, where, yes, I received some awards
3:48 like the JCP Awards, the All Categories, the Duke Choice Awards, that is the Oscar of Java, Actives Subcommuter, and so on. My secret is just don't have social life. Who cares about people. Right? So just focus in code. Alright. Awesome. So I'm gonna date myself here. Right? But I haven't written Java. So there's Java I'm gonna say 1.4. I was in college. This was early two thousands. I didn't enjoy it. I never wrote it again. I dropped out of college. I hated it so much, actually, and got a job right in Peril, which looking back, probably
4:25 not my smartest move, but, you know, whatever. Tell me about the evolution of Java over the last, you know, ten to fifteen years. Well, you know, from Java eight to where we are today because obviously the language is evolving, it's modernizing, we have containers now. I'm assuming we don't just throw Tomcat servers on the Internet and run our applications anymore. Like, what is and where is Java today? So Java is in the version 23. Right now, we are thirty years old of history and experience, few improvements in the language. For example, to handle data with string API,
5:03 a new API to handle with data. We have the coin project where the goal is to simplify the Java syntax, such as diamonds, to work with some generic keys on the best way as possible. We do have Record to work with data. On the infrastructure, a way to save Java, we have several improvements on the JVMs, garbage collectors. Right now, we do have the T1 to work better and avoid stop the words, the nightmare of anybody who has a huge application. Several improvements to modules and improvements to the container. When I mention container, don't think only about
5:48 Docker, think about the open container. So this way that we have designed the JVM right now is to make sure that almost all containers that have Java will take advantage of the JVM. So it's a total different Java since Java four. It's a huge, huge time ago. Let's revisit your joke from the start of the episode. If you wanna be successful with Java on Kubernetes, don't use Java. Right? Let's let's actually dig into this a little bit. Yeah. Because, you know, we're looking at the cloud native landscape today. Apple have just released pickle, which is a
6:27 conflict management, which was built in Java. We've got Kafka, which is the almost the facto service bus, queued topic, whatever, a whole bunch of different things. Right? It does a whole lot of these things built on Java. We've got Elasticsearch built on Java. I mean, Cloud Native has a lot of Java components and its ecosystem and production, shipping, and making money for a whole bunch of companies. So, you know, can people our people are being successful, but how do we get to this stage where Java as in the enterprise software is the modern cloud native microservice
7:03 approach to building software? Yeah. My first advice is work to the most up to date JVM as possible. I know several companies try to keep on Java eight, Java four, and so on. But if you do that, you won't be able to take the most updated enhancement on the JVM, for example, to work better with Kubernetes, with Docker, or any kind of container. If you take a look, for example, at the beginning of Java eight, every time that it worked with Java in the container, there was an issue because for the JVM, there was not the container.
7:45 It took the whole machine instead of considering just the container that is inside. Right now, we take that into consideration. So if Java is running inside a container, we are taking a look in several enhancements in the SYS operation as well. Right now, we do have more modern applications to avoid the huge start time that Java had. If you remember some time ago, Java took a couple of seconds to warm up the application. Right now, we do have several frameworks that can do it a couple seconds, like any dynamic language. So, Quackle sometimes might be faster than Node. Js
8:34 because it can be converted to native language, for example. I can convert the JVM to native instructions using GraalVM, for example. So the Java ecosystem is huge. And the good way to take advantage of that in the Java, in the JVM itself, is keeping your ecosystem updated. What I said, the huge trade off that we do have in Java, keep the compatibility. That means when you move between versions, the impact might be super time, especially because the way that we design is to keep this way. So if you are in Java eight and move to Java
9:19 23, 20 four, whatever, the impact of doing that might be super tiny. Naturally, you can write more code with less methods because have more SUGA syntax inside Java. So my first advice is keep updated with Java. Every six months, we're gonna have a release, and we have a huge ecosystem right now. So with Spring, Jakarta, Quackos, Micronauts, and on, and so on. Yeah. So I I think the crux of what you said there. If I remember correctly, before Java eight, the problem was the JVM didn't respect the control groups of Linux. Right? So when you
10:00 run a container and say, you have access to one CPU and a 20 mega RAM, If the JVM had no idea those constraints were in place, it would outscale what it was doing. It would get, you know, broken to a certain degree and and then not work any longer. So you're saying that from Java eight, those are now respected, and it's it plays a part in the container ecosystem, which is really good to know. So and, obviously, I'm assuming, again, I don't know that space, but Java is not oblivious to the fact that containers and Kubernetes exist over here. So
10:30 they're they're they're considering it as a target platform. Containers and production is where the JVM, whoever the governing bodies are, the Eclipse Foundation and others want to push the project forward so that it is a first class citizen. Is that a correct assumption? Yes. Yes. If you have several companies, organizations looking for it, that's where we should go. For example, a long, long time ago, the OpenJDK, the JVM reference implementations, because, yes, in Java, we have the specifications, we do have the spec, and we have multiple implementations. The reference implementation used to be Mercurial, And because a lot of people did a
11:15 pressure to move to GitHub, the organization decided to move on to GitHub because they want to collaborate even more. So, yes, basically, we are driven by community because a lot of people, committers are from the community, including myself, for example. So now my my thought process is, right, Java is modernizing, is container native to a certain degree, is moving in the right direction to be where other software is in 2025. Right? From my understanding, again, so limited and I wish I had done a bit more Java in my life. Right? Don't worry. Don't worry. The JVM Wait. We we just had
11:55 that on recording, by the way. No. What I mean is, the JVM was You leave Java. What could be worse? You could leave Rust. Woah. Woah. Woah. I'm shitty. Okay. Here we go. Read the read the room. Oh. Alright. Sorry. Go ahead. Sorry. I'm really enjoying this. I think what people always told me when I go to conferences and events, what they loved about the GVM, right, is that you run your application on the GVM and it runs for days, weeks, months, years. The GVM had this wonderful ability to actually dynamically modify code paths over time and optimize.
12:32 Right? Do I mean, how much of that has been sacrificed in order to support ephemeral workloads in Kubernetes? Like, at what point does the JVM stop being famous for its optimization for long running workloads and hot code pass to just being another runtime in there. And there's nothing wrong with being another runtime. Rust is just another runtime. Go is just another runtime. There's nothing special about them. But the JVM was always special and it was enterprise. It was mainframe. It did optimizations, and this is now going away. What's your thoughts on the trade offs that are being
13:05 made? That's a beauty of Java. As I mentioned before, we do have multiple JVMs. And that mean we can have specialized JVMs to each scenario. For example, Azure, they do they have they have several JVMs that include one specialized to run-in containers. We also have, for example, GrauVM that can convert your code to native. It's super doable to use as native. For example, if I want to use serverless, I don't need to have garbage collector on that situation, right? I'm going to up the application, run and queue the application. I don't need to have GIT. I don't need to have garbage collector.
13:53 I don't need to have any enhancement around the JVM because at the end I will start running queue. So in Java, as I said, we do have a huge ecosystem to make it that configurable or you can change the product if without changing your code. That's the beauty of Java. So, okay, I want to use right now the Graph VM and convert my code to native because I want to use serverless. K. Go ahead. You might change your framework, and that is it. Or I want to use a Azure. Go ahead. And we have a
14:29 couple of different implementations to make it possible. Okay. I think the title of this episode is just gonna be the one where David was ignorant because I'm learning so much about what I don't know about the Java ecosystem. Like, the fact that there's multiple JVM implementations, again, as far as I'm concerned, it was just the stunt microsystem one. You go to the website, you click download. So, like, it's my knowledge in this space is very, very dated. But I have, you know, through my periphery, kept an eye on the Graal project because I've always thought
14:57 it was really interesting that they're allowing us to take JVM languages and get that native code. Essentially, to the best of my understanding, cross compilation from Java bytecode to ELF binaries or whatever system you're targeting. Is that correct? Yes. Especially because right now, we do have this serverless reality. Right? The point of Java is the same challenge that we do have for any software. Java is thirty years old, right? Nobody realizes that you're going to need serverless application thirty three years, right? And that is what Java is doing. So it's make it possible using all the best techniques of the evolutionary
15:42 architecture to refactoring your code if without changing behavior it make modules to make it possible to have multiple scenarios. I used to say that open source goes beyond philosophy. It's the most advanced software engineer in the world. I mean, if you want to learn how to do a good software, just go to any open source project. We can do that using tasks to keep the behavior. You can have a good documentations. You can leave, if without, thousands of meetings. We can write emails instead of that. That might look impossible for you, who is manager, but, yes, we can survive if without
16:25 manager, if a lot of meetings. Right. If someone had told me an hour ago that they were doing Java as serverless, I would have laughed. And now I'm like, shit, I'm gonna have to try this. Now, I haven't really done a lot of Java myself since, like, six years ago or something like that. But I I have heard a lot about various projects. I think I've heard a little bit about Quarkus. Don't know much about it. But I guess my question is, like, how big is this ecosystem now? Like, I kind of am in the same spot
17:02 as David and that I don't know a ton about it, but I've heard a lot of various bits and pieces here and there. Woah. So, like, is is it like there's hundreds of thousands of options, or are we talking, really, there's only, like, two or three that you probably should explore first before diving into the rest of it? No. Do have a huge we have a huge ecosystem in Java. Oculus is the one, for example. We do have Spring. If you want to use, for example, more the Java Enterprise specification or Jacala, for example, we can see GlassFish,
17:39 Piranha, Caledon, Open Liberty, it's a huge amount of implementation. If I should do a ballparking I guess around 25, 30 ecosystems that you can use explore. Gotcha. That makes sense. What do you think is the best one? Know. I'm asking you to name your favorite. None of those. Ross is. Oh. Oh, there we go. David's on my good grades. There we go. You knew it was coming. But I'm super rusty, rusty. So I start to doing the record team rusty right now. There you go. Well, this must lead on to my next question. So absolutely perfect segue here. Right? But I wanted
18:23 to ask you a personal question. There's possibly a hard question. Right? I'm assuming you're aware other languages exist. Right? You probably played It does. As you said, you could maybe do a little bit of Rust. I would love to know what is your draw to Java. Like, when you look at all these languages and you think this is cool and this is cool, maybe you could even share two other languages you think are interesting. But then at the end of the day, you are saying I like to write Java, and I'd love to know what how do we sell it to
18:52 the people listening to this episode? Why should they write Java? So tell me, why did you come back to it? I enjoy a lot of language. Jokes aside, I tried Rust, Kotlin, Python, and I do believe tools are tools. Right? I need to use the best choice to my scenario. I really believe that. Doesn't matter how amazing Java is, Java is not religion. It's just the best option in the world, but it's not religion. Alright. Let me reframe that question for you. Sorry. Because you dodged it very nicely. It's supposed to be serious. Let's just stop. There's
19:28 no seriousness on this podcast. Okay. So you can point out that it's fine. The more trolling of David we can do, the better. Okay. I'll take note on that. Well, what I'm thinking is, right, what we want people to get away is a fresh perspective on Java. Right? I know myself coming into this, you know, we've got blinkers. You know, I've been writing Rust for a while and Go for longer than that. And, you know, to me, Java has this perception in my head of just being an antiquated enterprise language. And that's not the case. I
19:54 know that's not the case. Yes. But we have these, you know, misconceptions. And what I want people to walk away from this episode about is, well, maybe I should give it a second look and maybe I should play with it. But the crux of the question is they wanna write cloud native microservices, and you're not gonna go down to GVM and do that right away. There's there's decisions that need to be made. I'm assuming this comes down to adopting a framework that is microservice ready. But, you know, maybe in three, four, five steps, however many takes,
20:21 give the audience that journey. If you wanna write a microservice right now in Java, what are their options, and what do they have to do? Okay. As I said, we have a huge amount of solution in the market. Let's use the let's use Lara's sample. He mentioned backwards, right? So I can do a microservice with two classes, where one is my NT class and my second one is my interface, and that is it. Right now, I do have my crude operation using REST, and I can move it to a cloud native or container, whatever wish.
21:02 So you can really make it fast with Java, especially with the newest frameworks. The biggest challenge with Java is people are learning Java 1.4 and believe that Java did not change for that. No offense, David, but it changed a lot. And what happened also is we have new modern frameworks with Java. So Spring does a really beautiful job. As I mentioned, Quark was with two classes. Spring provides something pretty similar to that. Of course, the beauty of Java is the ecosystem. You can have Quackus with pretty similar capabilities using two interface or so on. I wanna use Spring, so
21:51 you can explore Spring Data where you define your entity and then with the interface they will handle the whole database connection for you. Or you want to use everything by your bare hands, go for it. You have a huge amount of flavors with Java. The easiest way, as I said, or the most complex way, for some random reason, once you learn how these things happen behind, you can go explore for it. About why I learn Java, the stability of the language, the ecosystem, the community. A huge amount of people are behind Java right now. So, if you compare it to
22:28 another language, for example, as far I know, Microsoft C only has a single component behind it, right? That is Microsoft. So, if Microsoft decided to, okay, I want to move, the language is gone. In Java, the chance that's happened is pretty low because if Oracle decides to leave, okay, we do have another huge amount of organizations working in Java right now. Again, thousands of JVMs, thousands of solutions, and so on. And inside the GCP, we do have the Java Education Ecosystems to take a look on how to learn Java and take care of the new generations.
23:11 That's why we do have the RAB and new features to make sure that people can learn easily Java and break this myth about Java is super hard, is understandable, and so on. Another point that I'd love to highlight in Java is mainly because Java is a production language. And verbose is to make easy to read and understand your code, especially because on production, on finance, we also need to read code. It's not about read writing features. It's about to read and maintain what you have. And sometimes we have code for ten, fifteen years ago, so it
23:57 needs to be readable as much as possible. So it's a trade off of language. At the end, we are handled with the language design and language decisions and naturally, okay, I will explore the verbosity of Java here to make it more readable or I will try to reduce as much as possible, make the code sometimes not readable. But even for that, Java has, for example, the var variables. So you can do the var a equals something. So the ecosystem Java is super frequent. So come to Java. Fuck. I think I wanna erase some Java. Alright. And Do wanna go first? Every time
24:36 that you download Java, the JVM right now, you will receive a wine, free wine by David. Oh. Oh. What? What's this? I guess one of my questions is how often do you run into the misconception that Java is still all Oracle after they you know, because Sun is the the originator of Java, everybody thinks that, oh, look. Sun got bought by Oracle. Therefore, Java is an Oracle thing. How often do you run into that? I see the question all the time. Oh, I bet. I bet. Every single day. Especially because if you look to another language,
25:17 it's not happened more often, right? For example, Kotlin usually it has a huge community but it's supported by a unique company, Go, if I'm not mistaken, the same. If you're looking to, I guess, PHP has a different approach. But in general, we do have a huge company behind with people contributing into. So naturally, the people think about, okay, it might be the same with Java, but not. Java has a huge JCP, Java community process, to make sure that we do have a huge transparency on the JSR, the Java specification request, where people can vote, you can review,
26:01 and it does not belong only to a single company. It's a failed tolerance in the process. Great. You mentioned Kotlin there. I think that's the programming language that spun out of JetBrains, if I remember correctly. Right? Yes. Yes. There's also Scala, there's Clojure. I'm sure there's other major JVM based languages. Like, are they still important in 2025, given the fact that the Java language itself is continuing to evolve? Is the need for these other languages becoming less? Or are those still pushing forward and innovating in their own right? And at what point do you jump
26:43 between the languages when you're under JVM, or do you stick firmly within the Java camp itself? I'll say with Java and the JVM specification, but as highlight, the JVM does not understand Java code. The JVM understands byte. So at the end, if the language generates byte code for Java, it doesn't matter. Okay? About those languages from Java, like Scala, Kotlin, and so on, those have some specializations, some niche. For example, as far as Kotlin goes mostly around mobile application with Android, Scala goes more to functional programming, if I'm not mistaken on that. I do believe those are important and makes
27:35 the Java ecosystem great. However, those grow more to the niche. And Java brings more the generic approach. So you can do a little bit of functional programming with Java. You can do a little bit of object oriented programming Java, data oriented programming Java, and so on. So it's not specialized, it's specialized like another language, but with Java you can do a little bit of those features directly. Awesome. Thank you. Alright. Okay. Is there any question you would like us to ask you before we wrap this up? Do you know why we have Google Chrome and Slack right now?
28:19 No? So you want us to ask you, so why why do we have Google Chrome and Slack right now? To prove the JVX is not happy like everybody said. Interesting. I don't get it. Can elaborate if you want. I'm really I'm really happy. This is giving me a lot of fit for thought. Like, I never thought I'd be considering writing any Java, but knowing that it's a language that's modernized to the point I can run it successfully in a container. I love what Apple are doing with pickle, and I'm like, you know, am I missing out on something by not playing with
28:52 this? My my old rusty head is going, oh, maybe I need to start poking this thing again. So So now now I know why you kept shoving all that Java code off onto me when we were at the same company. Yeah. Okay. I understand now. Thanks for joining us. If you wanna keep up with us, consider subscribing to the podcast on your favorite podcasting app or even go to cloudnativecompass.fm. And if you want us to talk with someone specific or cover a specific topic, reach out to us on any social media platform. Until next time when exploring the cloud native
29:26 landscape on 3. On 3. 1, 2, 3. Don't forget your Don't forget your compass.
Technologies featured
Meet the Cast
Stay ahead in cloud native
Tutorials, deep dives, and curated events. No fluff.
Comments