Hacker News with Generative AI: Java

Copyleft makes the (Java) world turn around (2016) (wildebeest.org)
Glad to see a little bit more copyleft being adopted by Android now that they are using parts of the OpenJDK class library. Even if the GNU Classpath Exception is probably the weakest form of copyleft there is. It is interesting how the GPL makes frenemies like Oracle and Google work together.
How ZGC allocates memory for the Java heap (joelsiks.com)
This post explores how ZGC, one of the garbage collectors in the OpenJDK, allocates memory for the Java heap, focusing on enhancements introduced in JDK-8350441 with the Mapped Cache. A garbage collector does much more than just collect garbage - and that’s what I want to unpack in this post. Whether you’re a Java nerd yearning for details, a GC enthusiast, or just curious about how ZGC uses memory behind the scenes, this deep dive is for you.
GraalVM 24.0.1 (graalvm.org)
This is the April 2025 Oracle Critical Patch Update (CPU) for GraalVM Community Edition for JDK 24.
JEP 506: Scoped Values final for Java 25 (openjdk.org)
Introduce scoped values, which enable a method to share immutable data both with its callees within a thread, and with child threads. Scoped values are easier to reason about than thread-local variables. They also have lower space and time costs, especially when used together with virtual threads (JEP 444) and structured concurrency (JEP 505).
JRuby 10 released with support for Ruby 3.4 (jruby.org)
The JRuby community is pleased to announce the release of JRuby 10.0.0.0.
Are .NET 4.x and JDK 8.x the "zombie" runtimes of enterprise software? (ycombinator.com)
I've noticed a strong parallel between Microsoft's .NET Framework 4.x and Oracle's JDK 8.x series. Even though newer versions keep rolling out — .NET Core, .NET 6/7/8, JDK 11/17/21 — these older versions just won’t die.
Java is dying and it paid off my mortgage (alyosha.net)
Have you ever been afraid your current tech stack at work will limit your career options in the future?
JEP draft: Prepare to make final mean final (openjdk.org)
Issue warnings about uses of deep reflection to mutate final fields. The warnings aim to prepare developers for a future release that ensures integrity by default by restricting final field mutation; this makes Java programs safer and potentially faster. Application developers can avoid both current warnings and future restrictions by selectively enabling the ability to mutate final fields where essential.
Browsercraft: Java Minecraft in the browser (cheerpj.com)
This is a proof-of-concept demo of Minecraft 1.2.5 running unmodified in the browser.
Tail Call Recursion in Java with ASM (2023) (unlinkedlist.org)
One kind of optimization offered by some compilers is tail call optimization. This optimization does not bring much, since the programmer can always tailor his code without recursion, especially in an imperative language. On the other side, recursive code often times more elegant, so why we don’t let the compiler do the nasty stuff when it is possible? In this article I will present a neat way to implement tail call optimization in Java using byte code manipulation with ASM.
Let's Take a Look at JEP 483: Ahead-of-Time Class Loading and Linking (morling.dev)
Java 24 got released last week, and what a meaty release it is: more than twenty Java Enhancement Proposals (JEPs) have been shipped, including highlights such as compact object headers (JEP 450, I hope to spend some time diving into that one some time soon), a new class-file API (JEP 484), and more flexible constructor bodies (JEP 492, third preview). One other JEP which might fly a bit under the radar is JEP 483 ("Ahead-of-Time Class Loading & Linking").
JEP Draft: JFR Method Timing and Tracing (openjdk.org)
Extend JDK Flight Recorder (JFR) to support bytecode-based method timing and tracing for quick and easy use.
Learn.java: New Oracle platform to learn Java (learn.java)
Let's learn Java...
Don't Be Afraid of Types (lmika.org)
I found that there’s a slight aversion to creating new types in the codebases I work in. I saw it during my early days while I was working in Java projects, and I see it today in the occasional Go project. Function bodies with lots of local variables, functions that take a large number of arguments or returning a large number of results, extensions to existing types rather than making new ones. It’s a strange phenomenon.
JDK Distributions (sdkman.io)
We've chosen Eclipse Temurin as our default JDK because it's widely recognized as the de facto standard for OpenJDK distributions.
What's new in Graal Languages 24.2 (medium.com)
Today, along with GraalVM for JDK 24, we are releasing version 24.2 of Graal Languages. This version is designed for use with GraalVM for JDK 24, but it is also compatible with the latest CPU releases of GraalVM for JDK 21, Oracle JDK 21, and OpenJDK 21. This release includes many exciting updates, including a Gradle plugin for GraalPy, scaling native Python across Java threads, a Continuation API in Espresso (Java on Truffle), the new Truffle Bytecode DSL, and more.
GraalVM for JDK24 (medium.com)
Today we are releasing GraalVM for JDK 24!
Java 24 Released (openjdk.org)
JDK 24, the reference implementation of Java 24, is now Generally Available. We shipped build 36 as the initial Release Candidate of JDK 24 on 6 February, and no P1 bugs have been reported since then. Build 36 is therefore now the GA build, ready for production use.
Java 24 (java.net)
This page provides production-ready open-source builds of the Java Development Kit, version 24, an implementation of the Java SE 24 Platform under the GNU General Public License, version 2, with the Classpath Exception.
Java Is Fast, If You Don't Create Many Objects (2022) (vanillajava.blog)
This article looks at a benchmark passing events over TCP/IP at 4 billion events per minute using the net.openhft.chronicle.wire.channel package in Chronicle Wire and why we still avoid object allocations..
Pre Java 1.0: The Oak Language Specifications (javaalmanac.io)
Java was officially announced on 1995/05/23 at the SunWorld ‘95 convention in San Fransico.
NetBSD on a JavaStation (fatsquirrel.org)
Hard as it may be to imagine, there was a time when Java was brand new and exciting.
Chicory: A JVM native WebAssembly runtime (chicory.dev)
Chicory, a JVM native WebAssembly runtime
One year after switching from Java to Go (glasskube.dev)
I always told people memory is cheap, black magic is OK and efficiency doesn't matter in most cases, but boy, how wrong was I...
Robocode (sourceforge.io)
Robocode is a programming game, where the goal is to develop a robot battle tank to battle against other tanks in Java.
JEP draft: AOT cache command-line ergonomics (openjdk.org)
Make it easier to create an ahead-of-time cache (as defined by JEP 483) for a Java application, by simplifying the commands required by some common use cases.
JEP draft: 4-byte Object Headers (Experimental (openjdk.org)
Reduce the size of object headers in the HotSpot JVM from between 64 and 128 bits down to 32 bits on 64-bit architectures. This will reduce heap size, improve deployment density, and increase data locality.
Red Hat's Java middleware development team to be transferred to IBM (redhat.com)
Today, we’re sharing that Red Hat and IBM will join forces to secure the future of the Java application ecosystem for our customers.
Java: RedHat X IBM Annoucement (redhat.com)
Today, we’re sharing that Red Hat and IBM will join forces to secure the future of the Java application ecosystem for our customers.
A better (than Optional) maybe for Java (github.com/andrewcmyers)
An inplementation of the Option pattern for Java, improving on the builtin Optional class in various ways.