<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/keeping-up-with-the-java-release-train-i-o-inside-java-podcast-67-prwbfur7f" -->

---
title: Keeping Up with the Java Release Train [I/O] Inside Java...
description: A senior staff engineer at rental car company Sixt discusses how his organization keeps pace with Java's six-month release cadence, running Java 25 in...
canonical: https://daily.dev/posts/keeping-up-with-the-java-release-train-i-o-inside-java-podcast-67-prwbfur7f
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Keeping Up with the Java Release Train [I/O] Inside Java Podcast 67 | daily.dev
og:description: A senior staff engineer at rental car company Sixt discusses how his organization keeps pace with Java's six-month release cadence, running Java 25 in...
og:url: https://daily.dev/posts/keeping-up-with-the-java-release-train-i-o-inside-java-podcast-67-prwbfur7f
og:image: https://api.daily.dev/og/posts/prWbfUr7F.png
og:image:alt: Keeping Up with the Java Release Train [I/O] Inside Java Podcast 67
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Keeping Up with the Java Release Train [I/O] Inside Java Podcast 67

**[Java \(Official Oracle\)](https://daily.dev/sources/java-oracle)** · 34 min read · 1 upvotes · 0 comments

## Summary

A senior staff engineer at rental car company Sixt discusses how his organization keeps pace with Java's six-month release cadence, running Java 25 in production and already migrating some services to Java 26 shortly after its release. He traces the company's Java adoption from Java 8 a decade ago, explains how upgrading to Java 14 exposed real CPU and memory improvements, and describes the cultural and technical practices (you-build-it-you-run-it teams, strong automated test suites, dependency hygiene, tools like Dependabot) that let them treat JDK upgrades as routine rather than disruptive. He also shares a war story about working around a dependency broken by the removal of the Security Manager in JDK 24 using the new Class-File API, and discusses upcoming features (structured concurrency, record reconstruction, constant patterns, ZGC) the team is watching.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.youtube.com/watch?v=_49LxL6QqlI>

## Questions this post answers

### What happened to the security manager in JDK 24?

The security manager was permanently disabled by default starting in JDK 24, after a gradual deprecation process that began several releases earlier behind a feature flag. It technically still exists in the codebase but cannot be enabled, which broke some transitive dependencies (via Spring) that relied on it, delaying upgrades for companies until affected libraries released fixes in their next major version.

_Teams tracking JDK deprecations before they hit production dependencies can follow changes like this on daily.dev._

### How can I work around a dependency that breaks because of a disabled Java security manager without forking it?

Instead of forking and maintaining a patched version of the broken library, write a small Java agent using the Class File API (which reached full availability in JDK 24) to intercept class loading and replicate at runtime the same fix the library's maintainers later applied at compile time in their next major version. This avoids the ongoing maintenance burden of tracking upstream changes in a fork.

_Developers hunting for practical Class File API use cases can find writeups like this on daily.dev._

### Why did Sixt choose Java 21 as a baseline version for its microservices?

Java 21 was chosen as a baseline mainly because it introduced virtual threads, which offered lightweight concurrency comparable to Go's goroutines that the company already used heavily on its Go-based services. This made the concurrency model consistent across their Java and Go stacks and justified moving off older Java 17 and Java 8 services still running in production.

_Engineers weighing JVM concurrency options against Go can track feature comparisons like this on daily.dev._

## Similar posts on daily.dev

- [Java Weekly, Issue 647](https://daily.dev/posts/java-weekly-issue-647-sxafsgauq) · Baeldung · 4 upvotes · 0 comments
- [Foojay Podcast \#90: Highlights of the Java Features Between LTS 21 and 25](https://daily.dev/posts/foojay-podcast-90-highlights-of-the-java-features-between-lts-21-and-25-fatxm44rc) · Foojay.io · 0 upvotes · 0 comments
- [Java 26 lands without an LTS badge. Here’s why developers should care anyway.](https://daily.dev/posts/java-26-lands-without-an-lts-badge-here-s-why-developers-should-care-anyway--qpwbrcifz) · The New Stack · 1 upvotes · 0 comments

---

Tags: [#devops](https://daily.dev/tags/devops), [#java](https://daily.dev/tags/java), [#spring](https://daily.dev/tags/spring)

[View this post on daily.dev](https://daily.dev/posts/keeping-up-with-the-java-release-train-i-o-inside-java-podcast-67-prwbfur7f)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Keeping Up with the Java Release Train [I/O] Inside Java Podcast 67","url":"https://daily.dev/posts/keeping-up-with-the-java-release-train-i-o-inside-java-podcast-67-prwbfur7f","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/keeping-up-with-the-java-release-train-i-o-inside-java-podcast-67-prwbfur7f"},"datePublished":"2026-08-20T06:21:51.444Z","dateModified":"2026-09-14T08:33:38.684Z","description":"A senior staff engineer at rental car company Sixt discusses how his organization keeps pace with Java's six-month release cadence, running Java 25 in...","image":"https://i.ytimg.com/vi/_49LxL6QqlI/sddefault.jpg","thumbnailUrl":"https://i.ytimg.com/vi/_49LxL6QqlI/sddefault.jpg","isAccessibleForFree":true,"articleSection":"Java (Official Oracle)","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Java (Official Oracle)","logo":"https://media.daily.dev/image/upload/s--SM9hIYUY--/f_auto,q_auto/v1773648791/logos/java-oracle?_a=BAMAMiiu0","url":"https://daily.dev/sources/java-oracle"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/keeping-up-with-the-java-release-train-i-o-inside-java-podcast-67-prwbfur7f","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"devops,java,spring","timeRequired":"PT34M","video":{"@type":"VideoObject","name":"Keeping Up with the Java Release Train [I/O] Inside Java Podcast 67","description":"A senior staff engineer at rental car company Sixt discusses how his organization keeps pace with Java's six-month release cadence, running Java 25 in...","thumbnailUrl":"https://i.ytimg.com/vi/_49LxL6QqlI/sddefault.jpg","uploadDate":"2026-08-20T06:21:51.444Z","duration":"PT34M","url":"https://api.daily.dev/r/prWbfUr7F","embedUrl":"https://www.youtube.com/embed/_49LxL6QqlI"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Java (Official Oracle)","item":"https://daily.dev/sources/java-oracle"},{"@type":"ListItem","position":3,"name":"Keeping Up with the Java Release Train [I/O] Inside Java Podcast 67"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/keeping-up-with-the-java-release-train-i-o-inside-java-podcast-67-prwbfur7f#faq","mainEntity":[{"@type":"Question","name":"What happened to the security manager in JDK 24?","acceptedAnswer":{"@type":"Answer","text":"The security manager was permanently disabled by default starting in JDK 24, after a gradual deprecation process that began several releases earlier behind a feature flag. It technically still exists in the codebase but cannot be enabled, which broke some transitive dependencies (via Spring) that relied on it, delaying upgrades for companies until affected libraries released fixes in their next major version. Teams tracking JDK deprecations before they hit production dependencies can follow changes like this on daily.dev."}},{"@type":"Question","name":"How can I work around a dependency that breaks because of a disabled Java security manager without forking it?","acceptedAnswer":{"@type":"Answer","text":"Instead of forking and maintaining a patched version of the broken library, write a small Java agent using the Class File API (which reached full availability in JDK 24) to intercept class loading and replicate at runtime the same fix the library's maintainers later applied at compile time in their next major version. This avoids the ongoing maintenance burden of tracking upstream changes in a fork. Developers hunting for practical Class File API use cases can find writeups like this on daily.dev."}},{"@type":"Question","name":"Why did Sixt choose Java 21 as a baseline version for its microservices?","acceptedAnswer":{"@type":"Answer","text":"Java 21 was chosen as a baseline mainly because it introduced virtual threads, which offered lightweight concurrency comparable to Go's goroutines that the company already used heavily on its Go-based services. This made the concurrency model consistent across their Java and Go stacks and justified moving off older Java 17 and Java 8 services still running in production. Engineers weighing JVM concurrency options against Go can track feature comparisons like this on daily.dev."}}]}
```

