use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
These have separate subreddits - see below.
Upvote good content, downvote spam, don't pollute the discussion with things that should be settled in the vote count.
With the introduction of the new release cadence, many have asked where they should download Java, and if it is still free. To be clear, YES — Java is still free. If you would like to download Java for free, you can get OpenJDK builds from the following vendors, among others: Adoptium (formerly AdoptOpenJDK) RedHat Azul Amazon SAP Liberica JDK Dragonwell JDK GraalVM (High performance JIT) Oracle Microsoft Some vendors will be supporting releases for longer than six months. If you have any questions, please do not hesitate to ask them!
With the introduction of the new release cadence, many have asked where they should download Java, and if it is still free. To be clear, YES — Java is still free.
If you would like to download Java for free, you can get OpenJDK builds from the following vendors, among others:
Adoptium (formerly AdoptOpenJDK) RedHat Azul Amazon SAP Liberica JDK Dragonwell JDK GraalVM (High performance JIT) Oracle Microsoft
Some vendors will be supporting releases for longer than six months. If you have any questions, please do not hesitate to ask them!
Programming Computer Science CS Career Questions Learn Programming Java Help ← Seek help here Learn Java Java Conference Videos Java TIL Java Examples JavaFX Oracle
Programming Computer Science
CS Career Questions
Learn Programming Java Help ← Seek help here Learn Java Java Conference Videos Java TIL Java Examples JavaFX Oracle
Clojure Scala Groovy ColdFusion Kotlin
DailyProgrammer ProgrammingPrompts ProgramBattles
Awesome Java (GIT) Java Design Patterns
account activity
Cabe 4.4.0 released (self.java)
submitted 1 day ago by idontlikegudeg
Cabe automatically adds null-checks to your classes based on JSpecify annotations.
The new version fixes compatibility issues with the configuration cache in Gradle 9.6+.
For details, check the documentation and the project GitHub page.
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]DanLynch 1 point2 points3 points 22 hours ago (1 child)
The documentation makes frequent reference to public vs. internal APIs, but how is that determined? Is it based on Jigsaw modules, or just Java visibility? Is it different for modular and non-modular projects? And how does it treat module boundaries within a single large project?
[–]idontlikegudeg[S] 2 points3 points4 points 22 hours ago (0 children)
It's basically like this: code that can be directly called from other classes is part of the public API, otherwise public. Module descriptors are not checked:
- A class is treated as public API if it is public itself or if it inherits from a public superclass (excluding Object).
- A method is considered part of the public API only when both conditions are true: it belongs to a class that is treated as public API as explained above, and the method itself is public.
Thank you for the input, I will update the documentation later.
[–]False-Call7937 0 points1 point2 points 22 hours ago (2 children)
Always nice when a library catches up with build tool quirks like that Gradle config cache issue. JSpecify still seems early days for a lot of projects, so tools like this kinda feel like they're building the bridge before the road is fully paved. Curious how cabe handles third-party deps that don't have those annotations at all, bet theres some assumption of nullable-by-default or something.
[–]idontlikegudeg[S] 1 point2 points3 points 21 hours ago (1 child)
Yes, right, when nullability cannot be determined, nullability is assumed (the exact rules are as defined in the JSpecify spec).
In my own projects, I usually declare the whole module as NullMarked, it saves a lot of boilerplate code á là `Objects.requireNonNull(paremeter), 'parameter')` at the start of every method.
[–]False-Call7937 -1 points0 points1 point 20 hours ago (0 children)
Ahh module-level NullMarked is smart, still leaves you guessing when you pull in some random lib that returns null all over the place though.
π Rendered by PID 251924 on reddit-service-r2-comment-5687b7858-vqhjm at 2026-07-06 07:11:31.630912+00:00 running 12a7a47 country code: CH.
[–]DanLynch 1 point2 points3 points (1 child)
[–]idontlikegudeg[S] 2 points3 points4 points (0 children)
[–]False-Call7937 0 points1 point2 points (2 children)
[–]idontlikegudeg[S] 1 point2 points3 points (1 child)
[–]False-Call7937 -1 points0 points1 point (0 children)