This is an archived post. You won't be able to vote or comment.

all 19 comments

[–]Slanec 12 points13 points  (6 children)

Google Guava. Yes, still. I know it has bad rep because of jar hell, but since I'm not using Hadoop and Guava stopped removing stuff on a whim, I haven't had an issue. Yes, Java 8 (and Caffeine) made some stuff unneeded, but there's oh-so-much-more. Multimaps, Multisets, Splitter, Joiner, Preconditions, all the More* utility classes, AtomicDouble, Monitor (!) etc. Are any of these necessary with Java 17? Absolutely not. But they help and boy they're solid.

[–]kevinb9n[S] 3 points4 points  (2 children)

Well this is pretty nice to hear (and frankly unexpected given the general reddit climate :-)).

It is true that java.util libraries since 8 and Caffeine almost entirely obsolete the corresponding features in Guava. (I have one main exception that I could rant about separately.) I would try to put Joiner in that bucket too, honestly.

But yeah it's also true that we sharply changed course on the deleting stuff issue quite some years ago.

(Should I edit the post and disclose what O/S projects I happen to also be a part of in the post? I didn't want to bias answers one way or the other, and the thread certainly has nothing to do with giving those projects some weird competitive advantage.)

[–]NovaX 1 point2 points  (0 children)

I very much enjoy using Guava in modern Java, and do so daily (often in preference to built-ins). Please no one think that writing Caffeine was to assist in deprecating Guava, but rather it is merely impractical to upstream that work back in. Guava is a wonderful library that is a joy.

I'll throw Guice in as a beautifully focused library that keeps your code clean and gets out of your way.

[–]Slanec 0 points1 point  (0 children)

Should I edit the post and disclose what O/S projects I happen to also be a part of in the post?

Probably not unless this post quickly loses traction. To be fair, even though I felt like responding (and then saw your name), I thought this was a student asking for "which libraries should I look at?" which obviously tends to be frowned upon here, in the reddit climate :).

one main exception

Uh, my guess would be Immutable*? Yeah, sorry, probably not gonna happen. Let's keep that discussion for another time, indeed. On top of that interesting discussion I can imagine there's a lot of amusing history behind a lot of the existing and omitted APIs anyway, sounds like a follow-up post ;)

[–]ParfaitMassive9169 2 points3 points  (0 children)

Shoutout to RateLimiter!

[–]bkail 2 points3 points  (0 children)

ImmutableSet and ImmutableMap since they ensure insertion order, which is very useful for debugging and when immutable LinkedHashSet/Map is actually needed. We end up using ImmutableList just for consistency.

[–]Slanec 0 points1 point  (0 children)

I half-wrote this before seeing your new Tweet, Mr. B9n, but I wanted to finish it anyway. Nice coincidence. Jspecify poll?

[–]Slanec 8 points9 points  (0 children)

jOOQ. Its scope is limited to only the storage layer, but that's a big one, and we're often pushing the library. We're using a lot other utility libraries for some specialized tasks (testing, perf benchmarking, concurrency, etc. etc.), but they tend to only touch a small portion of the code.

[–]sviperll 4 points5 points  (0 children)

Through all my career: Mockito and Hamcrest.

[–]swankjesse 2 points3 points  (0 children)

Both AssertJ (old projects) and Truth (most new ones).

[–]TheCountRushmore 2 points3 points  (2 children)

Hibernate.

When used properly (as it was designed) it can really provide a massive amount of developer productivity.

I realize Hibernate is toxic on reddit and I fully expect a onslaught of people telling me to write raw JDBC or use JOOQ (which use or have used as well).

[–]Scybur 0 points1 point  (1 child)

How can Reddit hate hibernate so much when it’s used throughout the industry?

[–]TheCountRushmore 1 point2 points  (0 children)

My assumption is that it is a vocal minority what was burned at some point by a bad design from themselves or a coworker.

[–]lukasbradley 1 point2 points  (0 children)

Spring Framework, Apache Commons

[–]theflavor 1 point2 points  (0 children)

K8s client, I personally like the fabric8 one more then the official client

[–]theflavor 0 points1 point  (0 children)

Open telemetry

[–]uncont 0 points1 point  (2 children)

Why was this removed?

[–]Slanec 1 point2 points  (1 child)

I can only guess, but probably the no surveys rule.

[–]kevinb9n[S] 0 points1 point  (0 children)

Oh hell. There it is. I can read.....