Foojay

foojay.io · Group blog · on HN since 2020

Foojay is a community site for Java developers, with articles on JDK releases, performance, build tools, and libraries.

What HN saysHN commenters link it for coverage of Java 20 features and the Leyden project's effect on warmup, as well as Java vector indexing.
23HN people shared it
7linked it in comments
38stories submitted
608story points
4 months agolast shared
2020people per year2026

Most-shared posts

  1. 1
    Vector indexing all of Wikipedia on a laptop
    2 people · 513 points · first shared 2024 · 140 comments on HN
  2. 2
    Bld: A New Pure Java Build System
    2 people · 3 points · first shared 2023 · discussion on HN
  3. 3
    WASM on the JVM Ships Under the Bytecode Alliance
    2 people · 3 points · first shared 2026 · discussion on HN
  4. 4
    It’s Java 20 Release Day, Here’s What’s New
    2 people · 2 points · first shared 2023 · discussion on HN
  5. 5
    Lessons learned from doing the one billion row challenge
    1 people · 29 points · first shared 2024 · 11 comments on HN
  6. 6
  7. 7
  8. 8
    Java, What's Old? Part I: Collections
    1 people · 3 points · first shared 2025 · discussion on HN
  9. 9
    Java Logging: What to Log and What Not to Log?
    1 people · 3 points · first shared 2020 · discussion on HN
  10. 10
    The 5 Knights of the MCP Apocalypse
    1 people · 2 points · first shared 2026 · discussion on HN
  11. 11
  12. 12
    Hello eBPF: Developing eBPF Apps in Java
    1 people · 2 points · first shared 2024 · discussion on HN
  13. 13
    Log4j2 Isn’t Killing Java
    1 people · 2 points · first shared 2021 · discussion on HN
  14. 14
  15. 15
    More Free Shells for Your Java IDE
    1 people · 2 points · first shared 2024 · discussion on HN

What HN people wrote when they linked it

jbellis · 2025-05-30
sort of, there was the original bigann and then they followed up with a couple more specialized contests the following year, i think it's over now ~300M modern-sized vectors is pretty close to jvector's limit in a single index (the Cassandra layer can shard more) https://foojay.io/today/indexing-all-of-wikipedia-on-a-laptop/ that said I think Mariano (new jvector maintainer) is working on ways to handle larger datasets in a single index but I'm not sure where that is on his priority list
w10-1 · 2024-09-08
I'm not sure scripting-language interop is holding back Swift, but ... > call a swift compiled extension from Python/JS/Ruby/PHP The story there is excellent. Here's a Swift function callable from C @cdecl("myfunc") public static func f(){...} C/C++ types are mostly handled automatically (including sharing memory management), but it can be tricky. To build a library to load and call from any language: swiftc mine.swift -emit-library -o libmine.dylib E.g., calling from java 22 FFI: https://foojay.io/today/java-panama-polyglot-swift-part-2/ But most people instead use a slower json server network interface because (sadly) json is the lingua franca for scripting and Swift Codable makes it trivial to map the json to a swift type.
pron · 2026-03-20
You mostly need a recent JDK. Leyden has already cut down warmup by a lot and is expected to continue driving it down. https://foojay.io/today/how-is-leyden-improving-java-performance-part-… https://quarkus.io/blog/leyden-1/
mfiguiere · 2023-03-21
A good coverage of all the JEPs included in JDK 20: https://foojay.io/today/its-java-20-release-day-heres-whats-new/
garblegarble · 2023-03-21
This is exciting, can't wait for the LTS release next year... that said, I don't much care for the "case SomeType t where ..." pattern matching syntax, I don't see the benefit of introducing a new keyword over using "if"... or even just "&&". To pinch the example used in[1]: case Tuner t && guitar.isInTune() -> ...; and case Tuner t if guitar.isInTune() -> ...; both seem as clear as case Tuner t where guitar.isInTune() -> ...; ...am I misunderstanding the reasoning here? Is it being introduced to keep the grammar definition simpler? 1: https://foojay.io/today/its-java-20-release-day-heres-whats-new/
naruhodo · 2026-06-30
The use case appears to be Java applications that rely on native libraries. Instead of a Java rewrite or using JNI or similar, Endive gives a new deployment model for native libraries (whether the language is garbage-collected or has manual memory-management) as a regular JAR file [1]: > You didn't install a native binary. You didn't configure JNI. You didn't cross-compile anything for your target platform. It just works, because the Wasm module is hiding inside a regular JAR on your classpath. > WebAssembly changes this equation. Take a proven C or Rust library, compile it to Wasm, and run it within JVM boundaries. You keep everything the JVM gives you: guaranteed memory safety, fault isolation, platform independence, advanced JIT, observability, and the "write once, run anywhere" promise. The Wasm module becomes just another artifact inside your JAR, an implementation detail that your users never need to think about. And from TFA[2]: > The previous article focused on wrapping C and Rust libraries. Those languages compile to Wasm straightforwardly because they manage their own memory. But a growing number of languages target the WasmGC proposal instead: Kotlin/Wasm, Dart, and others. Google Sheets already runs its Java-based calculation engine through WasmGC in production. Endive passes the full WasmGC spec testsuite [1] https://foojay.io/today/a-new-generation-of-java-libraries-is-born-was… [2]…
sfkamath · 2026-02-17
I vibe-coded jvm-hotpath to analyse my vibe-coded output. jvm-hotpath is a JVM agent that instruments Java code and records line-level execution counts. The differentiator is the UX: it generates a single HTML report that updates continuously while your app is running. No server/dashboard — it uses JSONP + polling, so you can open it from file:// and watch hotspots move as you click around. It’s meant for local dev, and there’s a stopwatch-style lap/reset so you can zero counts, do one action, and immediately see the hot path for just that interaction. Why this helps with “vibe coding”: when code is changing faster than your understanding (LLM-assisted or just a new/unfamiliar codebase), the hard bit is answering “what actually ran when I did this?”. This gives a quick runtime map of the paths you really exercised — and it’s also a handy way to learn a codebase by driving the app and watching what lights up. Questions I’m curious about: • What’s the closest thing you’ve seen to this in the JVM world? • Where would this save you the most time: learning a new codebase, validating AI-assisted changes, refactoring safely, or chasing weird behaviour? Project: https://github.com/sfkamath/jvm-hotpath Documentation (README): https://github.com/sfkamath/jvm-hotpath/blob/main/README.md Motivation: https://github.com/sfkamath/jvm-hotpath/blob/main/docs/Motivation.md Foojay article: https://foojay.io/today/runtime-code-analysis-in-the-age-of-vibe-codin… Long-time HN reader,…

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close