# valhalla

Published articles for valhalla.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Episode 68 "Operator Overloading with Type Classes" \[AtA\]

DevFeed: [Episode 68 "Operator Overloading with Type Classes" \[AtA\]](<https://devfeed.tech/articles/episode-68-operator-overloading-with-type-classes-ata-15128.md>)

Original publisher: [Read original article](<https://inside.java/2026/08/27/podcast-068/>)

Author: Nicolai Parlog

Published: 2026-08-27T00:00:00Z

Content type: article

Language: en

Sources: [Inside Java](<https://devfeed.tech/sources/inside-java.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [openjdk](<https://devfeed.tech/topics/openjdk.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [classes](<https://devfeed.tech/tags/classes.md>), [java](<https://devfeed.tech/tags/java.md>), [java-language](<https://devfeed.tech/tags/java-language.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [project-valhalla](<https://devfeed.tech/tags/project-valhalla.md>), [valhalla](<https://devfeed.tech/tags/valhalla.md>)

### AI overview

An Ask the Architects episode discusses how OpenJDK's Project Valhalla is improving Java's support for custom numerical types, including possible limited operator overloading for custom value types.

### Source excerpt

How OpenJDK's Project Valhalla is improving Java's support for custom numerical types.

## Value Classes Still Need Compiler Sympathy

DevFeed: [Value Classes Still Need Compiler Sympathy](<https://devfeed.tech/articles/value-classes-still-need-compiler-sympathy-15126.md>)

Original publisher: [Read original article](<https://inside.java/2026/08/24/value-classes-compiler-sympathy/>)

Author: Johan Sjölén

Published: 2026-08-24T00:00:00Z

Content type: article

Language: en

Sources: [Inside Java](<https://devfeed.tech/sources/inside-java.md>)

Topics: [JDK 28](<https://devfeed.tech/topics/jdk-28.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [immutability](<https://devfeed.tech/tags/immutability.md>), [jdk-28](<https://devfeed.tech/tags/jdk-28.md>), [jep-401](<https://devfeed.tech/tags/jep-401.md>), [jvm](<https://devfeed.tech/tags/jvm.md>), [openjdk](<https://devfeed.tech/tags/openjdk.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [payload](<https://devfeed.tech/tags/payload.md>), [profiling](<https://devfeed.tech/tags/profiling.md>), [project-valhalla](<https://devfeed.tech/tags/project-valhalla.md>), [valhalla](<https://devfeed.tech/tags/valhalla.md>)

### AI overview

This article examines value classes as a preview feature in JDK 28 and explains how giving up object identity can enable JVM optimizations such as flattening and scalarization. It also describes limitations caused by representation changes, abstraction boundaries, mutability, and generic virtual calls.

### Source excerpt

Declaring a value class is first and foremost a semantic decision. It tells our fellow programmers that its instances are defined entirely by their state and do not need identity. That clearer model is valuable in itself! The JVM's additional freedom to optimize how those values are represented is a welcome bonus. C2 can do amazing things with that freedom, but it cannot always recover information hidden behind abstraction boundaries. Profiling and inspecting the generated code remain the best ways to understand what is happening. To get the best results, we may still need to have a little sympathy for the compiler.

## iOS Density, Scroll Physics, and Accessibility

DevFeed: [iOS Density, Scroll Physics, and Accessibility](<https://devfeed.tech/articles/ios-density-scroll-physics-and-accessibility-19339.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/ios-density-scroll-and-accessibility/>)

Author: Shai Almog

Published: 2026-04-24T00:00:00Z

Content type: article

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [Java](<https://devfeed.tech/topics/java.md>), [Project Valhalla](<https://devfeed.tech/topics/project-valhalla.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [project-valhalla](<https://devfeed.tech/tags/project-valhalla.md>), [valhalla](<https://devfeed.tech/tags/valhalla.md>)

### AI overview

This Codename One update explains that its iOS pixel-density lookup table omitted several newer iPhone models, causing inaccurate physical-unit rendering. The table and unknown-device fallback were updated, and the article also discusses iOS performance work related to Java, Project Valhalla, and the Vector API.

### Source excerpt

If you have shipped to an iPhone 14 Pro or anything newer, your density calculations have been wrong until this week. Also in this update, Codename One delivers the performance benefits that Java developers are still waiting on from the Vector API and Project Valhalla -- available today, and already making our Base64 on iOS faster than Apple's own.

## Report card: Java 19 and the end of Kotlin

DevFeed: [Report card: Java 19 and the end of Kotlin](<https://devfeed.tech/articles/report-card-java-19-and-the-end-of-kotlin-20968.md>)

Original publisher: [Read original article](<https://jakewharton.com/report-card-java-19-and-the-end-of-kotlin/>)

Published: 2022-09-20T00:00:00Z

Content type: opinion

Language: en

Sources: [Jake Wharton](<https://devfeed.tech/sources/jake-wharton.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>)

Tags: [developer](<https://devfeed.tech/tags/developer.md>), [feature](<https://devfeed.tech/tags/feature.md>), [future](<https://devfeed.tech/tags/future.md>), [java](<https://devfeed.tech/tags/java.md>), [java-language](<https://devfeed.tech/tags/java-language.md>), [jdk](<https://devfeed.tech/tags/jdk.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [project-valhalla](<https://devfeed.tech/tags/project-valhalla.md>), [report](<https://devfeed.tech/tags/report.md>), [update](<https://devfeed.tech/tags/update.md>), [valhalla](<https://devfeed.tech/tags/valhalla.md>)

### AI overview

The article reviews how Java 19 compares with predictions made three years earlier, grading features such as local methods, text blocks, records, sealed hierarchies, type patterns, and virtual threads. It concludes that Java remains strong, Kotlin has continued to evolve, and developers should use the latest JDK rather than wait for an OpenJDK LTS release.

### Source excerpt

Three years ago I gave the talk "What's new in Java 19: The end of Kotlin?" which forecasted what a future Java language would look like in September 2022 when Java 19 was released. Check your calendars, folks. It's September 2022 right now and Java 19 was released today! As expected my predictions were not perfect, but I'm pretty happy with the results. Let's check in with each feature and see how my predictions fared report-card style1. Local methods This feature allows for methods to be declared inside of other methods making them effectively private to that method. public static boolean anyMatch(Graph graph, Predicate<Node> predicate) { var seen = new HashSet<Node>(); boolean hasMatch(Node node) { if (!seen.add(node)) return false; // already seen if (predicate.test(node)) return true; // match! return node.getNodes().stream().anyMatch(n -> hasMatch(n)); } return hasMatch(getRoot()); } Grade: F 🔴 Working support for local methods was added to a branch in Project Amber in October 2019. It seemed like a slam dunk, but a JEP for the feature was never created. The branch still sits in the Project Amber repo unchanged in three years. If I had to guess, all eyes in Amber are focused on pattern matching and its related features. Hopefully someday local methods can be picked back up as a proposed feature. Text blocks A multiline string literal for when one line just isn't enough. System.out.println(""" SELECT * FROM users WHERE name LIKE 'Jake %' """); Grade: A 🟢 Delivered in Java 15. Records A read-only type that exists solely for carrying data with strong, semantic names. record Person(String name, int age) { } Grade: A 🟢 Delivered in Java 16. Sealed hierarchies Define the list of permitted subtypes of your class or interface and prevent any others. sealed interface Developer { } record Person(String name, int age) extends Developer { } record Business(String name) extends Developer { } Grade: A 🟢 Delivered in Java 17. Type patterns Declare a new name to bind when a t