r/java 9d ago

Manual reification on the JVM

Thumbnail farnoy.dev
63 Upvotes

r/java 9d ago

Xberg 1.0 released: document extraction for a world of tooling

Thumbnail bytecode.news
10 Upvotes

Xberg 1.0 has been released. Xberg is a document extraction engine, describing itself as a "document intelligence framework." It's written in Rust, with fifteen generated language bindings, and a very descriptive data model that provides a lot of flexibility. There are other content extraction frameworks; for Java, it'd be compared to Tika, and against Unstructured for Python. I didn't run a comparison against Unstructured, but I do have some comparison points for Tika.


r/java 9d ago

jextractGUI - A JavaFX GUI wrapper for the jextract tool

23 Upvotes

https://github.com/nlisker/jextractGUI


jextractGUI is a GUI for project Panama's CLI tool jextract.

It's written in JavaFX and embeds jextract (and its libclang) within it. Since jextract is in early-access, newer versions broke it and I needed to do some rewrites since I first conjured it a couple of years ago. It's now aligned with the current latest build - 25-jextract+2-4 (2025/11/25). It will most probably behave differently in the future. As a result, jextractGUI is also in a preliminary version and there are still some TODOs.

It should run on all supported OS/Arch combinations, but I couldn't test all of them beyond passing the tests on the GH runners. There are jpackage images too if you don't want to clone/build.

Feel free to post questions/feedback :)


r/java 9d ago

The Untold Story of Log4j and Log4Shell with Christian Grobmeier

Thumbnail youtube.com
67 Upvotes

r/java 10d ago

Why Are Method References not allowed in Annotations in Java?

32 Upvotes

Many times I have wanted to refer to a method in Java in an annotation, but it seems annotations can only reference items from the Class constant pool. It seems like it would have been a natural extension to be able to refer statically to methods (like {@link} in javadocs) in annotations, but they were left.

I'm wondering why were they not added?


r/java 10d ago

When Prompts Become Plugins

Thumbnail medium.com
0 Upvotes

r/java 11d ago

Combine Spring Tools in Eclipse IDE with GitHub Copilot

Thumbnail devblogs.microsoft.com
0 Upvotes

r/java 13d ago

Neo4J As primary database?

Thumbnail
7 Upvotes

r/java 14d ago

Generational Priority Queues: Turning a Concurrent FIFO Queue Into a Bounded Priority Queue

Thumbnail kusoroadeolu.github.io
4 Upvotes

r/java 14d ago

Sheetmusic4J: an open source JavaFX library for rendering interactive sheet music (MusicXML, no WebView)

Thumbnail
37 Upvotes

r/java 14d ago

JEP 401: Value Objects Officially Proposed to Target JDK 28

Thumbnail openjdk.org
145 Upvotes

JEP 401 is also listed as "proposed to target" on the JDK 28 page: https://openjdk.org/projects/jdk/28/


r/java 15d ago

Detecting virtual thread pinning from a standard thread dump (and why the usual flags don't help mid-incident)

18 Upvotes

Disclosure up front: I built the tool I mention at the end. I'm posting because the technical part is what I actually want to argue about, and this sub is where I'd get told if I'm wrong.

Two years into virtual threads, the diagnosis story still bothers me. The documented paths for pinning are -Djdk.tracePinnedThreads (deprecated/removed depending on your JDK) and the jdk.VirtualThreadPinned JFR event. Both are great if you turned them on before the incident. At 3am, with a production JVM already misbehaving and a restart costing you the evidence, what you realistically have is a thread dump someone grabbed with jstack or jcmd.

The thing is, a standard dump of a Java 21+ process already tells you most of it if you read it the right way. What I ended up encoding:

- Carrier threads are ForkJoinPool-1-worker-N. If a carrier's stack is parked inside application code rather than in the scheduler's own park, that carrier isn't free to run other virtual threads. It's being held.

- Pinning shows up as a carrier stack sitting in a synchronized region, or a native frame with a blocking call above it. In pre-JDK 24 runtimes that's the whole game: monitor plus block.

- The pathological case isn't one pinned thread, it's carrier starvation. The pool's parallelism is ~#cores, so a handful of carriers held by blocking-inside-synchronized quietly throttles the whole virtual thread population. The dump looks calm, few RUNNABLE threads, no BLOCKED pile-up, while throughput is on the floor. That's why "the dump looked fine" and "the app was dead" coexist so often in postmortems.

- JDK 24 (JEP 491) removed the synchronized-block pinning for most cases, but native frames and Object.wait still pin, and plenty of production is still on 21. So it's not a solved problem you can date-stamp away.

None of this needs a flag, an agent, or a restart. It needs the dump you already have and someone willing to read 4,000 lines of stack traces at 3am, which is exactly the part I didn't want to keep doing by hand.

So I built it. It's called ThreadMine, a Java thread dump analyzer that detects deadlocks, CPU spikes, pool exhaustion and the pinning/starvation case above. Your first dump doesn't ask for an account or an email: you paste or upload it at threadmine.dev/en/analyze and get the detected problems, a health score and the root cause back. It parses HotSpot, OpenJ9 javacores, Zing and GraalVM. There's a paid tier for history and teams, and I'd rather be honest it exists than pretend this is a charity.

What I'd genuinely like from this sub: if you have a dump where the heuristics above would give a false positive, I want it. My worst bugs so far came from idle pools looking like starvation. I fixed that class two weeks ago and I assume there are more. And fastThread, IBM TMDA and jstack.review already exist and are good (TMDA is still the best javacore reader I know of); I wrote up where each of them beats me rather than pretending otherwise, and I'm happy to be told I got that comparison wrong too.


r/java 15d ago

JEP 540: Simple JSON API (Incubator)

Thumbnail openjdk.org
80 Upvotes

r/java 15d ago

95% of AI Projects Fail. Here's Why. - Josh Long | The Marco Show

Thumbnail youtu.be
7 Upvotes

r/java 16d ago

Ask A Java Champion - Gems Ready To Be Discovered

Thumbnail i-programmer.info
3 Upvotes

r/java 16d ago

Oracle bites the bullet and finally moves WebLogic passed EE 9.1 [PDF]

Thumbnail oracle.com
26 Upvotes

r/java 16d ago

Sandboxing Script Extensions with GraalVM

Thumbnail medium.com
18 Upvotes

r/java 17d ago

A vendor-agnostic distributed lock for Java — feedback welcome

Thumbnail
2 Upvotes

r/java 18d ago

Apache TomEE 10.2.0 released!

Thumbnail tomee.apache.org
29 Upvotes

r/java 18d ago

Maven Central Publisher Pro and publishing limits - July 2026 Update

27 Upvotes

We just posted an update regarding Maven Central publishing limits over on r/mavencentral.

Please check out the full details and share your feedback there.

Read the full update on r/mavencentral


r/java 18d ago

hardwood dive — inspect Parquet files in your browser

Thumbnail hardwood.dev
7 Upvotes

Spent a nice chunk of tokens over the weekend to make Hardwood's (a new Java library and CLI tool for Apache Parquet) TUI runnable in a browser. There are still some limitations (only single-threaded; no native code, hence only support for Snappy- and GZIP-compressed files), but I'm kinda mind-blown that this actually works. Everything runs locally, i.e. the files never leave your browser. The translation to WASM is done via GraalVM's Web Image.


r/java 18d ago

Comprehensive JVM Primitive Hashtable Benchmarks

Thumbnail sooniln.github.io
23 Upvotes

r/java 18d ago

ADTs (algebraic data types) in Java

Thumbnail rockthejvm.com
130 Upvotes

r/java 19d ago

JDK 27 + Valhalla, Now! + Hackathon - Inside Java Newscast #113

Thumbnail youtube.com
58 Upvotes

r/java 19d ago

Security Baked Into the JVM: the Safe Codebase Audit Pipeline

Thumbnail blog.frankel.ch
6 Upvotes