{"slug": "openjdk", "name": "OpenJDK", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 4, "commenters": 16, "warners": 2, "score": 4.22, "rising": 0.02, "first": "2025-12-05", "latest": "2026-10-29", "why": "OpenJDK's new ability to 'cache' classes to accelerate class loading", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 4, "neutral": 9, "compare": 1, "warn": 2}, "spark": [0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1], "listed": true, "loved": [], "caveat": "", "short_quote": "OpenJDK's new ability to 'cache' classes to accelerate class loading", "kind": "", "icon": true, "domain": "openjdk.org", "github_repo": null, "official_url": "https://openjdk.org", "pricing": "", "aliases": ["OpenJDK"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 802182608, "item_id": 50136413, "url": "https://news.ycombinator.com/item?id=50136413", "by": "binary132", "date": "2026-10-18", "stance": "recommend", "quote": "JIT + hotspot optimization makes JVM pretty fast", "excerpt": "JIT + hotspot optimization makes JVM pretty fast, but warmup time is usually the problem. However it does look like they\u2019re addressing startup time with improvements in this release: - AOT compilation: https://openjdk.org/jeps/544 - ~100ms startup for ZGC: https://openjdk.org/jeps/545", "context": "", "use_case": "Java runtime", "switched_from": "", "story": "JDK 28"}, {"id": 770458256, "item_id": 48153641, "url": "https://news.ycombinator.com/item?id=48153641", "by": "MaxBarraclough", "date": "2026-05-15", "stance": "recommend", "quote": "OpenJDK's new ability to 'cache' classes to accelerate class loading", "excerpt": "You might be interested in OpenJDK's new ability to 'cache' classes to accelerate class loading. JEP 483: Ahead-of-Time Class Loading & Linking. It doesn't persist code generated by the JIT, but can improve startup time appreciably. From https://openjdk.org/jeps/483 : > This program runs in 0.031 seconds on JDK 23. After doing the small amount of additional work required to create an AOT cache it runs in in 0.018 sec", "context": "", "use_case": "faster JVM startup", "switched_from": "", "story": "If AI Writes Your Code, Why Use Python?"}, {"id": 759310624, "item_id": 47456914, "url": "https://news.ycombinator.com/item?id=47456914", "by": "cogman10", "date": "2026-03-20", "stance": "recommend", "quote": "The openjdk can do fast startup pretty trivially.", "excerpt": "So long as you aren't in a docker container, The openjdk can do fast startup pretty trivially. There are options to turn on which cause the JVM to save off and reload compiled classes. It pretty massively improves performance. You can get even faster if you do that plus doing a jlink jvm. But that's more of a pain. The AOT cache is a lot simpler to do. https://openjdk.org/jeps/514", "context": "", "use_case": "Fast JVM startup", "switched_from": "", "story": "Java Is Fast. Your Code Might Not Be"}, {"id": 738659650, "item_id": 46166228, "url": "https://news.ycombinator.com/item?id=46166228", "by": "jodrellblank", "date": "2025-12-05", "stance": "recommend", "quote": "mass migration to free OpenJDK and Amazon Corretto and all the other free forks", "excerpt": "> \"Microsoft is under stiff competition (they are selling a product, an operating system, that is a commodity competing with free)\" Microsoft's Annual revenue from Azure is $75 billion. Office Server is $40 billion. Office Consumer is $6 billion. LinkedIn is $15Bn. Dynamics is $5Bn. Gaming/XBox is $15Bn. Search/Advertising is $14Bn. Devices at $5Bn. Intelligent Cloud at $87Bn. Windows $21Bn. They are a HUGE company w", "context": "", "use_case": "", "switched_from": "", "story": "Netflix to Acquire Warner Bros"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 803644784, "item_id": 50227799, "url": "https://news.ycombinator.com/item?id=50227799", "by": "ktkaufman", "date": "2026-10-25", "stance": "warn", "quote": "this seems like it could be quite disruptive", "excerpt": "There's a corresponding CVE: https://www.oracle.com/security-alerts/alert-cve-2026-114820.html I'm not sure if Oracle is trying to send a message here, but this seems like it could be quite disruptive...", "context": "", "use_case": "", "switched_from": "", "story": "OpenJDK randomly(?) removes all eMudhra root CAs"}, {"id": 802407344, "item_id": 50150459, "url": "https://news.ycombinator.com/item?id=50150459", "by": "nmadden", "date": "2026-10-19", "stance": "warn", "quote": "I found the response rather dismissive and unhelpful", "excerpt": "I\u2019m glad you\u2019ve fixed that issue. Hopefully you can fix the other design issues, including security weaknesses, I reported at the time [1]. I found the response rather dismissive and unhelpful, I have to say. [1]: https://marc.info/?l=openjdk-security-dev&m=177435495515512&w=2", "context": "", "use_case": "", "switched_from": "", "story": "Java sealed classes and exhaustive pattern matching"}]}], "who": [], "tags": [], "use_cases": ["java runtime", "java runtime memory management", "faster jvm startup", "fast jvm startup", "java development kit", "jvm on solaris"], "compared": [{"slug": "docker", "name": "Docker", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [{"id": 774780096, "item_id": 48423756, "url": "https://news.ycombinator.com/item?id=48423756", "by": "pron", "date": "2026-06-06", "stance": "neutral", "quote": "I actually added a streaming array copy to the JVM", "excerpt": "> A lot of our C++ code is intrinsics (including memory primitives like _mm_stream_ps and barriers) Java has such intrinsicts, too: https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/invoke/VarHandle.html. They may not look like intrinsics that compile to a single machine instruction, but the are (I don't think we offer stream access, simply because there hasn't been demand for it; if there is, we", "context": "", "use_case": "Java runtime work", "switched_from": "", "story": "Every Byte Matters"}, {"id": 745820896, "item_id": 46613806, "url": "https://news.ycombinator.com/item?id=46613806", "by": "jonasn", "date": "2026-01-14", "stance": "neutral", "quote": "Author of the OpenJDK patch here.", "excerpt": "Author of the OpenJDK patch here. Thanks for the write-up Jaromir :) For those interested, I explored memory overhead when reading /proc\u2014including eBPF profiling and the history behind the poorly documented user-space ABI. Full details in my write-up: https://norlinder.nu/posts/User-CPU-Time-JVM/", "context": "", "use_case": "", "switched_from": "", "story": "A 40-Line Fix Eliminated a 400x Performance Gap"}], "threads": [{"url": "https://news.ycombinator.com/item?id=46835454", "title": "\"Giving up upstream-ing my patches & feel free to pick them up\"", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=50256985", "title": "Roblox downloaded 145GB models from us (including adult content) without asking", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=50227798", "title": "OpenJDK randomly(?) removes all eMudhra root CAs", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=50141579", "title": "Java sealed classes and exhaustive pattern matching", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=50135379", "title": "JDK 28", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49856988", "title": "Go Concurrency Distilled", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {"recommend": 1}, "2026-01": {"neutral": 3}, "2026-02": {"neutral": 1}, "2026-03": {"recommend": 1}, "2026-04": {}, "2026-05": {"recommend": 1}, "2026-06": {"compare": 1}, "2026-07": {"neutral": 1}, "2026-08": {"neutral": 1}, "2026-09": {"neutral": 2}, "2026-10": {"recommend": 1, "warn": 2, "neutral": 1}}, "quotes": [{"id": 804716176, "item_id": 50294761, "url": "https://news.ycombinator.com/item?id=50294761", "by": "whizzter", "date": "2026-10-29", "stance": "neutral", "quote": "OpenJDK currently forbids AI contributions.", "excerpt": "Maybe maybe not, something interesting popped up reading the currently top-of-HN article on the GHC policy is that OpenJDK currently forbids AI contributions. From the page, https://openjdk.org/legal/ai -------------------------- What are the intellectual-property risks of using generative AI tools? The Oracle Contributor Agreement (OCA) requires that a contributor own the intellectual property rights in each contrib", "context": "", "use_case": "", "switched_from": "", "story": "Roblox downloaded 145GB models from us (including adult content) without asking"}, {"id": 803644784, "item_id": 50227799, "url": "https://news.ycombinator.com/item?id=50227799", "by": "ktkaufman", "date": "2026-10-25", "stance": "warn", "quote": "this seems like it could be quite disruptive", "excerpt": "There's a corresponding CVE: https://www.oracle.com/security-alerts/alert-cve-2026-114820.html I'm not sure if Oracle is trying to send a message here, but this seems like it could be quite disruptive...", "context": "", "use_case": "", "switched_from": "", "story": "OpenJDK randomly(?) removes all eMudhra root CAs"}, {"id": 802407344, "item_id": 50150459, "url": "https://news.ycombinator.com/item?id=50150459", "by": "nmadden", "date": "2026-10-19", "stance": "warn", "quote": "I found the response rather dismissive and unhelpful", "excerpt": "I\u2019m glad you\u2019ve fixed that issue. Hopefully you can fix the other design issues, including security weaknesses, I reported at the time [1]. I found the response rather dismissive and unhelpful, I have to say. [1]: https://marc.info/?l=openjdk-security-dev&m=177435495515512&w=2", "context": "", "use_case": "", "switched_from": "", "story": "Java sealed classes and exhaustive pattern matching"}, {"id": 802182608, "item_id": 50136413, "url": "https://news.ycombinator.com/item?id=50136413", "by": "binary132", "date": "2026-10-18", "stance": "recommend", "quote": "JIT + hotspot optimization makes JVM pretty fast", "excerpt": "JIT + hotspot optimization makes JVM pretty fast, but warmup time is usually the problem. However it does look like they\u2019re addressing startup time with improvements in this release: - AOT compilation: https://openjdk.org/jeps/544 - ~100ms startup for ZGC: https://openjdk.org/jeps/545", "context": "", "use_case": "Java runtime", "switched_from": "", "story": "JDK 28"}, {"id": 797905136, "item_id": 49869071, "url": "https://news.ycombinator.com/item?id=49869071", "by": "za3faran", "date": "2026-09-27", "stance": "neutral", "quote": "That is changing as we speak:", "excerpt": "> Also why can't I have my memory back when it's not in use in tightly packed systems? That is changing as we speak: [1] https://openjdk.org/jeps/8359211 [2] https://openjdk.org/jeps/546 [3] https://openjdk.org/jeps/8350152", "context": "", "use_case": "Java runtime memory management", "switched_from": "", "story": "Go Concurrency Distilled"}, {"id": 795623088, "item_id": 49726443, "url": "https://news.ycombinator.com/item?id=49726443", "by": "pron", "date": "2026-09-16", "stance": "neutral", "quote": "https://openjdk.org/jeps/8377305", "excerpt": "When CPU utilisation is low, the heap can be set much smaller. Many don't know that, so in the next year we'll have the VM do it automatically: https://openjdk.org/jeps/8377305 The amount of memory a Java program uses is whatever the setting is, not how much it \"needs\", because the need depends on the preference of the CPU/RAM tradeoff. But again, not many understand that, so we're making that automatic.", "context": "", "use_case": "", "switched_from": "", "story": "Java 27"}, {"id": 794432565, "item_id": 49652035, "url": "https://news.ycombinator.com/item?id=49652035", "by": "dredmorbius", "date": "2026-09-11", "stance": "neutral", "quote": "Others might include Kubernetes, OpenJDK, Clang, React, Docker, Git/Github.", "excerpt": "\"Throw unlimited resources at a development target\" has been an established F/OSS embrace/extend tactic for at least 20 years. Red Hat, systemd, Chrome, Webkit, Android, and a few others come to mind. Others might include Kubernetes, OpenJDK, Clang, React, Docker, Git/Github. Forks are possible but sustained forks are expensive, and <https://xkcd.com/927/> is always relevant. It's helpful to note that the guy who lit", "context": "", "use_case": "", "switched_from": "", "story": "iPhone Duo"}, {"id": 787468368, "item_id": 49216773, "url": "https://news.ycombinator.com/item?id=49216773", "by": "mikmoila", "date": "2026-08-07", "stance": "neutral", "quote": "The risks of having legal problems are very clear.", "excerpt": "https://openjdk.org/legal/ai Shitposting, the reasons are very clear and explicit: The risks of having legal problems are very clear. Google for example GEMA vs. OpenAI.", "context": "", "use_case": "", "switched_from": "", "story": "Oracle bans AI-generated code from OpenJDK"}, {"id": 785926176, "item_id": 49120386, "url": "https://news.ycombinator.com/item?id=49120386", "by": "andrybak", "date": "2026-07-31", "stance": "neutral", "quote": "The way pull requests and commits work in the OpenJDK repository", "excerpt": "The way pull requests and commits work in the OpenJDK repository -- a bot squashes each pull request into one commit: https://github.com/openjdk/jdk/pull/31120#issuecomment-5137845497 The final singular commit is cc278db (8389219: Implement JEP 401: Value Objects (Preview), 2026-07-31) https://github.com/openjdk/jdk/commit/cc278dbb8a1ca0754d5842708b9029441055d361", "context": "", "use_case": "", "switched_from": "", "story": "JEP 401: Value Objects (Preview) merged to OpenJDK master"}, {"id": 777651505, "item_id": 48603219, "url": "https://news.ycombinator.com/item?id=48603219", "by": "pregnenolone", "date": "2026-06-19", "stance": "compare", "quote": "", "excerpt": "> It was always .NET No, it was not. What's called .NET now used to be .NET Core. And then there's .NET Framework which was commonly known as .NET. > \"cannot be tweaked at all\" Are you serious? Not only does the JDK have multiple GCs for different use cases (Serial, Parallel, G1, ZGC, Shenandoah), they have very refined tuning settings (https://wiki.openjdk.org/spaces/zgc/pages/34668579/Main#Main-Configuration&Tuning", "context": "", "use_case": "", "switched_from": "", "story": "Project Valhalla, Explained: How a Decade of Work Arrives in JDK 28"}, {"id": 770458256, "item_id": 48153641, "url": "https://news.ycombinator.com/item?id=48153641", "by": "MaxBarraclough", "date": "2026-05-15", "stance": "recommend", "quote": "OpenJDK's new ability to 'cache' classes to accelerate class loading", "excerpt": "You might be interested in OpenJDK's new ability to 'cache' classes to accelerate class loading. JEP 483: Ahead-of-Time Class Loading & Linking. It doesn't persist code generated by the JIT, but can improve startup time appreciably. From https://openjdk.org/jeps/483 : > This program runs in 0.031 seconds on JDK 23. After doing the small amount of additional work required to create an AOT cache it runs in in 0.018 sec", "context": "", "use_case": "faster JVM startup", "switched_from": "", "story": "If AI Writes Your Code, Why Use Python?"}, {"id": 759310624, "item_id": 47456914, "url": "https://news.ycombinator.com/item?id=47456914", "by": "cogman10", "date": "2026-03-20", "stance": "recommend", "quote": "The openjdk can do fast startup pretty trivially.", "excerpt": "So long as you aren't in a docker container, The openjdk can do fast startup pretty trivially. There are options to turn on which cause the JVM to save off and reload compiled classes. It pretty massively improves performance. You can get even faster if you do that plus doing a jlink jvm. But that's more of a pain. The AOT cache is a lot simpler to do. https://openjdk.org/jeps/514", "context": "", "use_case": "Fast JVM startup", "switched_from": "", "story": "Java Is Fast. Your Code Might Not Be"}, {"id": 749670624, "item_id": 46854414, "url": "https://news.ycombinator.com/item?id=46854414", "by": "oliwarner", "date": "2026-02-02", "stance": "neutral", "quote": "OpenJDK is GPL2, so anyone can host their fork of OpenJDK with whatever GPL2-licensed patches they like", "excerpt": "Well, kind of. Oracle might only accept upstream contributions but OpenJDK is GPL2, so anyone can host their fork of OpenJDK with whatever GPL2-licensed patches they like, regardless of the OCA/CLA being signed. Indeed there are enough distributions of OpenJDK that there's a site for picking which is best for you. I can't really speak to how current that information is, or how good it is, but it exists: https://which", "context": "", "use_case": "Java development kit", "switched_from": "", "story": "\"Giving up upstream-ing my patches & feel free to pick them up\""}, {"id": 749493744, "item_id": 46843359, "url": "https://news.ycombinator.com/item?id=46843359", "by": "what", "date": "2026-01-31", "stance": "neutral", "quote": "The email thread suggests his PRs were reviewed promptly and rejected.", "excerpt": "The email thread suggests his PRs were reviewed promptly and rejected. Nothing was ignored. https://mail.openjdk.org/pipermail/hotspot-dev/2026-January/118083.html", "context": "", "use_case": "Java runtime", "switched_from": "", "story": "\"Giving up upstream-ing my patches & feel free to pick them up\""}, {"id": 748773235, "item_id": 46798327, "url": "https://news.ycombinator.com/item?id=46798327", "by": "KronisLV", "date": "2026-01-28", "stance": "neutral", "quote": "you have tested everything under OpenJDK", "excerpt": "> How did we get to the point where applications by default came with all of this shit? Because when you give your clients instructions on how to setup the environment, they will ignore some of them and then they install OracleJDK while you have tested everything under OpenJDK and you have no idea why the application is performing so much worse in their environment: https://blog.kronis.dev/blog/oracle-jdk-and-openjdk", "context": "", "use_case": "", "switched_from": "", "story": "Karpathy: A few random notes from Claude coding quite a bit last few weeks"}, {"id": 743273104, "item_id": 46454569, "url": "https://news.ycombinator.com/item?id=46454569", "by": "maxandersen", "date": "2026-01-01", "stance": "neutral", "quote": "https://github.com/psumbera/solaris-openjdk seem to work?", "excerpt": "just because Oracle stopped distributing JDK's is not the same as not possible. Anyone can step up to do this. https://github.com/psumbera/solaris-openjdk seem to work?", "context": "", "use_case": "JVM on Solaris", "switched_from": "", "story": "2026: The Year of Java in the Terminal"}, {"id": 739056560, "item_id": 46191035, "url": "https://news.ycombinator.com/item?id=46191035", "by": "pron", "date": "2025-12-08", "stance": "neutral", "quote": "the market clearly wants things like projects Loom and Panama and Valhalla", "excerpt": "First, the number of projects still on 8 is low, and almost all of them are legacy projects with little to no evolution. Second, modules' encapsulation is not what caused the migration difficulties from 8 to 9+, evidenced by the fact that it wasn't even turned on until JDK 16: https://openjdk.org/jeps/396. From JDK 9 through 15, all access remained the same as it was in 8. The reason a lot of stuff broke was the JDK ", "context": "", "use_case": "", "switched_from": "", "story": "Scala 3 slowed us down?"}, {"id": 738659650, "item_id": 46166228, "url": "https://news.ycombinator.com/item?id=46166228", "by": "jodrellblank", "date": "2025-12-05", "stance": "recommend", "quote": "mass migration to free OpenJDK and Amazon Corretto and all the other free forks", "excerpt": "> \"Microsoft is under stiff competition (they are selling a product, an operating system, that is a commodity competing with free)\" Microsoft's Annual revenue from Azure is $75 billion. Office Server is $40 billion. Office Consumer is $6 billion. LinkedIn is $15Bn. Dynamics is $5Bn. Gaming/XBox is $15Bn. Search/Advertising is $14Bn. Devices at $5Bn. Intelligent Cloud at $87Bn. Windows $21Bn. They are a HUGE company w", "context": "", "use_case": "", "switched_from": "", "story": "Netflix to Acquire Warner Bros"}]}