<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/jdk-27-feature-freeze-locks-in-g1-as-default-project-valhalla-merges-into-main-nb65oqqx5" -->

---
title: JDK 27 feature freeze locks in G1 as default, Project...
description: JDK 27 has hit Ramp-Down Phase 1, locking its feature set with G1 GC as the universal default and compact object headers on by default. More significantly, JEP...
canonical: https://daily.dev/posts/jdk-27-feature-freeze-locks-in-g1-as-default-project-valhalla-merges-into-main-nb65oqqx5
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: JDK 27 feature freeze locks in G1 as default, Project Valhalla merges into main | daily.dev
og:description: JDK 27 has hit Ramp-Down Phase 1, locking its feature set with G1 GC as the universal default and compact object headers on by default. More significantly, JEP...
og:url: https://daily.dev/posts/jdk-27-feature-freeze-locks-in-g1-as-default-project-valhalla-merges-into-main-nb65oqqx5
og:image: https://api.daily.dev/og/posts/NB65oqqx5.png
og:image:alt: JDK 27 feature freeze locks in G1 as default, Project Valhalla merges into main
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 locks in G1 as default, Project Valhalla merges into main

**[Java Digest](https://daily.dev/sources/java_digest)** · 4 min read · 11 upvotes · 1 comments

## Summary

JDK 27 has hit Ramp-Down Phase 1, locking its feature set with G1 GC as the universal default and compact object headers on by default. More significantly, JEP 401 (value types) and JEP 539 (strict field initialization) have merged into JDK main, targeting JDK 28 early-access builds — the first concrete code landing for Project Valhalla. IntelliJ IDEA 2026.2 ships with day-one Java 27 support, 1,300+ bug fixes including 140 performance fixes, and async file saves to eliminate UI freezes. Virtual thread pinning remains a silent throughput killer worth auditing before you assume your Loom migration is complete.

## Content

**TLDR:** JDK 27 has hit Ramp-Down Phase 1, locking its feature set with G1 GC as the universal default and compact object headers on by default. More significantly, JEP 401 (value types) and JEP 539 (strict field initialization) have merged into JDK main, targeting JDK 28 early-access builds — the first concrete code landing for Project Valhalla. IntelliJ IDEA 2026.2 ships with day-one Java 27 support, 1,300+ bug fixes including 140 performance fixes, and async file saves to eliminate UI freezes. Virtual thread pinning remains a silent throughput killer worth auditing before you assume your Loom migration is complete.

---

## JDK 27 feature freeze: G1 becomes universal default, compact headers on by default

JDK 27 has entered Ramp-Down Phase 1, meaning the feature set is locked. G1 GC is now the universal default garbage collector and compact object headers are on by default — two changes that matter for anyone planning a JDK 27 upgrade without rebuilding assumptions about GC tuning. JFR gains data redaction support, and the API additions include post-quantum TLS key exchange and a third preview of the PEM API. If you're running Java agents alongside the AOT cache, check the guidance before assuming your existing setup carries over cleanly. [Read more](https://daily.dev/posts/oNhx5WNBQ)

## Project Valhalla merges into JDK main, targeting JDK 28 early-access builds

JEP 401 (value types) and JEP 539 (strict field initialization) have been integrated into JDK main. This is the first step, not the finish line — more optimizations are still coming — but the code is in and moving toward JDK 28 early-access builds. Dan Smith from the OpenJDK team has also published an analysis of which java.base classes are candidates for migration to value classes, identifying 28 already-targeted types and flagging four good candidates blocked by Serializable: UUID, Currency, KeyPair, and ValueRange. [Read more](https://daily.dev/feed-by-ids?id=oNhx5WNBQ&id=zO2wG9obX)

## IntelliJ IDEA 2026.2 ships with 1,300+ fixes, async file saves, and day-one Java 27 support

IntelliJ IDEA 2026.2 is out with day-one support for Java 27 and Kotlin 2.4 stable features, native GitHub Copilot integration, and over 1,300 bug fixes including 140 performance and freeze fixes. The headline usability change is asynchronous file saves, which eliminates UI freezes that have been a persistent complaint. Spring ecosystem support gets meaningful improvements across Security, Cache, Events, and Thymeleaf. The legacy K1 Kotlin mode is fully removed, and the ML Code Completion ranking plugin is deprecated. [Read more](https://daily.dev/feed-by-ids?id=T8c2oe8a5&id=Sz6dkbK3z)

## Virtual thread pinning silently caps throughput at one request per CPU core

Virtual thread pinning turns a Project Loom application back into a bounded thread pool with no errors in logs — just degraded throughput. There are exactly two causes: blocking inside synchronized (fixed in JDK 24 by JEP 491) and native/JNI frames (all JDK versions, still unfixed). Detection on JDK 24+ requires the jdk.VirtualThreadPinned JFR event since the -Djdk.tracePinnedThreads flag was removed. The fix for the synchronized case is upgrading to JDK 24+ or replacing synchronized with ReentrantLock; native-frame pinning requires isolating the blocking call onto a dedicated platform-thread executor. [Read more](https://daily.dev/posts/sBxL9qGFf)

---

## Also notable

- **Spring AI 2.0 self-correcting structured output ships as opt-in, one-line change:** Spring AI 2.0's StructuredOutputValidationAdvisor automatically feeds schema validation errors back to the model and retries, eliminating fragile prompt engineering for JSON coercion — opt-in with a single method call, demonstrated working against a local Ollama llama 3.2 model. [Read more](https://daily.dev/feed-by-ids?id=q3KTVUUB3&id=4BzpNfzLV)
- **ParparVM AOT compiler reaches geomean parity with HotSpot, beats it on 6 of 10 benchmarks:** ParparVM, the AOT compiler translating Java bytecode to C for iOS targets, went from 4.21x slower than warmed Java 25 to geomean 1.00x parity, with peak memory under heavy allocation dropping from 1.4–2.1 GB to 290–390 MB — beating HotSpot's 508 MB. [Read more](https://daily.dev/posts/CMFnLZLGr)
- **Keycloak 26.7.0 adds SCIM preview support and full SAML step-up authentication:** Keycloak 26.7.0 ships SCIM preview support and full SAML step-up authentication, relevant for teams using Keycloak as their identity provider in Spring Security or Quarkus applications. [Read more](https://daily.dev/posts/l56Zlsy4Q)
- **Removing one SLF4J log line per message drops p99.99 latency from ~20ms to single-digit microseconds:** A JLBH benchmark on Chronicle-FIX at 50K messages/second shows that eliminating one log line per message reduces p99.99 latency by three orders of magnitude, and also flips the optimal GC from Shenandoah to Parallel GC — meaning workload shape determines GC choice, not the other way around. [Read more](https://daily.dev/posts/7dMf5PZ8Z)
- **OpenTelemetry Spring Boot starter v2.26.0 adds declarative YAML configuration under otel: key:** The OpenTelemetry Spring Boot starter now supports YAML-based configuration directly in application.yaml, replacing @Configuration beans with YAML blocks and supporting automatic env var overrides — with migration gotchas around Spring Boot 3.5 BOM conflicts worth checking before upgrading. [Read more](https://daily.dev/posts/kDuAw8Acb)

## Similar posts on daily.dev

- [JDK 27: The quiet before the storm](https://daily.dev/posts/jdk-27-the-quiet-before-the-storm-eixxzoapd) · InfoWorld · 2 upvotes · 0 comments

---

Tags: [#devtools](https://daily.dev/tags/devtools), [#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-locks-in-g1-as-default-project-valhalla-merges-into-main-nb65oqqx5)

```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":"DiscussionForumPosting","mainEntityOfPage":"https://daily.dev/posts/jdk-27-feature-freeze-locks-in-g1-as-default-project-valhalla-merges-into-main-nb65oqqx5","headline":"JDK 27 feature freeze locks in G1 as default, Project Valhalla merges into main","text":"JDK 27 has hit Ramp-Down Phase 1, locking its feature set with G1 GC as the universal default and compact object headers on by default. More significantly, JEP 401 (value types) and JEP 539 (strict field initialization) have merged into JDK main, targeting JDK 28 early-access builds — the first concrete code landing for Project Valhalla. IntelliJ IDEA 2026.2 ships with day-one Java 27 support, 1,300+ bug fixes including 140 performance fixes, and async file saves to eliminate UI freezes. Virtual thread pinning remains a silent throughput killer worth auditing before you assume your Loom migration is complete.","url":"https://daily.dev/posts/jdk-27-feature-freeze-locks-in-g1-as-default-project-valhalla-merges-into-main-nb65oqqx5","datePublished":"2026-07-20T04:18:35.357Z","dateModified":"2026-09-13T21:16:17.406Z","author":{"@type":"Organization","name":"Java Digest","logo":"https://media.daily.dev/image/upload/s---g5D7hJ2--/f_auto,q_auto/v1773839415/logos/java_digest?_a=BAMAMiiu0","url":"https://daily.dev/sources/java_digest"},"interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":11},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"isPartOf":{"@type":"WebPage","url":"https://daily.dev/sources/java_digest","name":"Java Digest"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Java Digest","item":"https://daily.dev/sources/java_digest"},{"@type":"ListItem","position":3,"name":"JDK 27 feature freeze locks in G1 as default, Project Valhalla merges into main"}]}
```

