<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/jdk-27-feature-freeze-valhalla-lands-in-main-and-a-java-hackathon-onhx5wnbq" -->

---
title: JDK 27 feature freeze, Valhalla lands in main, and a...
description: JDK 27 has entered Ramp-Down Phase 1, locking in its feature set. Key inclusions are G1 GC as the universal default garbage collector, compact object headers...
canonical: https://daily.dev/posts/jdk-27-feature-freeze-valhalla-lands-in-main-and-a-java-hackathon-onhx5wnbq
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: JDK 27 feature freeze, Valhalla lands in main, and a Java hackathon | daily.dev
og:description: JDK 27 has entered Ramp-Down Phase 1, locking in its feature set. Key inclusions are G1 GC as the universal default garbage collector, compact object headers...
og:url: https://daily.dev/posts/jdk-27-feature-freeze-valhalla-lands-in-main-and-a-java-hackathon-onhx5wnbq
og:image: https://api.daily.dev/og/posts/oNhx5WNBQ.png
og:image:alt: JDK 27 feature freeze, Valhalla lands in main, and a Java hackathon
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.

# JDK 27 feature freeze, Valhalla lands in main, and a Java hackathon

**[Collections](https://daily.dev/sources/collections)** · 3 min read · 13 upvotes · 1 comments

## Summary

JDK 27 has entered Ramp-Down Phase 1, locking in its feature set. Key inclusions are G1 GC as the universal default garbage collector, compact object headers enabled by default, JFR data redaction, post-quantum TLS key exchange, and further previews of the PEM API and structured concurrency. Project Valhalla's JEP 401 (value types) and JEP 539 (strict field initialization) have been merged into JDK main, targeting JDK 28 early-access builds — a significant first step rather than a final release. Guidance is available for users combining Java agents with the AOT cache in JDK 27. Researchers also demonstrated accessing NVIDIA GPU tensor cores directly from Java via Project Babylon, achieving 7.3 TFLOP/s. A hackathon on hackster.io themed around modern Java runs until August 2nd for US participants.

## Content

## JDK 27 feature set is locked in

JDK 27 has entered Ramp-Down Phase 1, which means its feature set is now fixed. Here's what's in:

**G1 is now the universal default GC.** Previously, constrained environments (single CPU or less than 1792 MB RAM) defaulted to Serial GC. Starting with JDK 27, G1 takes over everywhere. The reasoning: recent improvements have made G1 competitive with Serial even in those tight environments — similar native memory overhead, slightly lower throughput, but meaningfully lower maximum latencies. Serial GC isn't going anywhere; it's still available if you want it. But if you're running in a constrained environment without an explicit GC flag, your behavior is about to change. Worth benchmarking before you upgrade.

**Compact object headers are now on by default.** This was experimental in earlier releases; it's now the standard.

**JFR gains data redaction.** Useful if you're capturing flight recordings in environments where sensitive data might end up in the output.

**Post-quantum TLS key exchange** schemes are added to the security APIs.

**API previews continuing:** PEM API (third preview), structured concurrency (seventh preview), and LazyConstant are all moving forward.

## Project Valhalla merges into JDK main

This is the real news. JEP 401 (value types) and JEP 539 (strict field initialization) have been integrated into JDK main via a 2,900-commit pull request. The target is JDK 28 early-access builds.

To be clear about what this means: it's the first step, not the finish line. The core language and VM changes are landing, but the performance optimizations that make value types genuinely compelling — flattened arrays, improved calling conventions, and so on — come later. Still, after years of Valhalla living in a separate fork, seeing it merge into main is a significant milestone.

## AOT cache and Java agents in JDK 27

If you're using AOT caching alongside Java agents in JDK 27, there are some best practices worth reading up on. The short version: agents and AOT caching interact in ways that can silently reduce the cache's effectiveness, so explicit configuration matters.

## GPU tensor cores from Java via Project Babylon

A research effort using Project Babylon's HAT toolkit has demonstrated Java code running on NVIDIA GPU tensor cores, hitting 7.3 TFLOP/s. It's research, not production tooling, but it's an interesting look at where Babylon's code reflection model could eventually go.

## Hackathon: Modern Java in the Wild

There's a Java hackathon running on hackster.io until August 2nd. Open to US participants 18 and older.

## Format change for Inside Java Newscast

The show is moving to monthly episodes with a broader topic scope, rather than the previous cadence of tighter, more frequent news roundups.

## Questions this post answers

### What garbage collector does JDK 27 use by default in constrained environments like a single CPU or less than 1792 MB RAM?

JDK 27 makes G1 the universal default garbage collector, including in constrained environments that previously defaulted to Serial GC. Recent improvements made G1 competitive with Serial in those environments, with similar native memory overhead, slightly lower throughput, but meaningfully lower maximum latencies. Serial GC remains available via explicit flag, but unconfigured constrained deployments will see a behavior change on upgrade.

_daily.dev helps teams tracking JVM garbage collector defaults stay ahead of upgrade surprises like this one._

### Has Project Valhalla's value types feature been merged into the JDK yet?

Yes, JEP 401 (value types) and JEP 539 (strict field initialization) were integrated into JDK main through a 2,900-commit pull request, targeting JDK 28 early-access builds. This is only the first step: core language and VM changes are landing now, while performance optimizations like flattened arrays and improved calling conventions arrive in later releases.

_Java developers planning around value types can follow milestones like this Valhalla merge on daily.dev._

### What happens when Java agents are combined with AOT caching in JDK 27?

Agents and AOT caching can interact in ways that silently reduce the cache's effectiveness in JDK 27, so explicit configuration is recommended when combining the two. Teams relying on AOT caching for startup performance should review best practices before enabling agents in the same deployment.

_daily.dev keeps engineers relying on JDK 27's AOT cache informed about configuration pitfalls like this._

## Community discussion

Top comments from developers on daily.dev.

**@perrycodes** · 0 upvotes

> And it only took 24 years for me to ponder whether or not I should switch back to Java LOL...

---

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

[View this post on daily.dev](https://daily.dev/posts/jdk-27-feature-freeze-valhalla-lands-in-main-and-a-java-hackathon-onhx5wnbq)

```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":"JDK 27 feature freeze, Valhalla lands in main, and a Java hackathon","url":"https://daily.dev/posts/jdk-27-feature-freeze-valhalla-lands-in-main-and-a-java-hackathon-onhx5wnbq","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/jdk-27-feature-freeze-valhalla-lands-in-main-and-a-java-hackathon-onhx5wnbq"},"datePublished":"2026-07-19T11:38:18.221Z","dateModified":"2026-09-13T19:37:45.145Z","description":"JDK 27 has entered Ramp-Down Phase 1, locking in its feature set. Key inclusions are G1 GC as the universal default garbage collector, compact object headers...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/b557a58019b6f9a6aecbc441b0370a48?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/b557a58019b6f9a6aecbc441b0370a48?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Collections","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":"Collections","logo":"https://media.daily.dev/image/upload/s--fk_6ycEi--/f_auto,q_auto/v1780996001/logos/collections?_a=BAMAMiWQ0","url":"https://daily.dev/sources/collections"},"commentCount":1,"discussionUrl":"https://daily.dev/posts/jdk-27-feature-freeze-valhalla-lands-in-main-and-a-java-hackathon-onhx5wnbq","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":13},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"keywords":"java,jdk","timeRequired":"PT3M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collections","item":"https://daily.dev/sources/collections"},{"@type":"ListItem","position":3,"name":"JDK 27 feature freeze, Valhalla lands in main, and a Java hackathon"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/jdk-27-feature-freeze-valhalla-lands-in-main-and-a-java-hackathon-onhx5wnbq","comment":[{"@type":"Comment","text":"And it only took 24 years for me to ponder whether or not I should switch back to Java LOL…","datePublished":"2026-07-19T15:38:25.922Z","url":"https://daily.dev/posts/oNhx5WNBQ#c-2H2eqwwQ3","author":{"@type":"Person","name":"Jason Perry","url":"https://daily.dev/perrycodes","image":"https://lh3.googleusercontent.com/a/ACg8ocKfLPEVBUg7kKka6SkBVpsm4yCordjSbm-mHVaZX_ULMODjEBHNaQ=s96-c"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/jdk-27-feature-freeze-valhalla-lands-in-main-and-a-java-hackathon-onhx5wnbq#faq","mainEntity":[{"@type":"Question","name":"What garbage collector does JDK 27 use by default in constrained environments like a single CPU or less than 1792 MB RAM?","acceptedAnswer":{"@type":"Answer","text":"JDK 27 makes G1 the universal default garbage collector, including in constrained environments that previously defaulted to Serial GC. Recent improvements made G1 competitive with Serial in those environments, with similar native memory overhead, slightly lower throughput, but meaningfully lower maximum latencies. Serial GC remains available via explicit flag, but unconfigured constrained deployments will see a behavior change on upgrade. daily.dev helps teams tracking JVM garbage collector defaults stay ahead of upgrade surprises like this one."}},{"@type":"Question","name":"Has Project Valhalla's value types feature been merged into the JDK yet?","acceptedAnswer":{"@type":"Answer","text":"Yes, JEP 401 (value types) and JEP 539 (strict field initialization) were integrated into JDK main through a 2,900-commit pull request, targeting JDK 28 early-access builds. This is only the first step: core language and VM changes are landing now, while performance optimizations like flattened arrays and improved calling conventions arrive in later releases. Java developers planning around value types can follow milestones like this Valhalla merge on daily.dev."}},{"@type":"Question","name":"What happens when Java agents are combined with AOT caching in JDK 27?","acceptedAnswer":{"@type":"Answer","text":"Agents and AOT caching can interact in ways that silently reduce the cache's effectiveness in JDK 27, so explicit configuration is recommended when combining the two. Teams relying on AOT caching for startup performance should review best practices before enabling agents in the same deployment. daily.dev keeps engineers relying on JDK 27's AOT cache informed about configuration pitfalls like this."}}]}
```

