My recommendations concerning various libraries.
-
Google Guava: “new collection types (such as multimap and multiset), immutable collections, a graph library, functional types, an in-memory cache, and APIs/utilities for concurrency, I/O, hashing, primitives, reflection, string processing, and much more”. You should definitely use their preconditions helpers. Then check whatever else you might have a use for.
-
Parce CSV files: SuperCSV; uniVocity (more recent, looks nice, but I haven’t tried it); more references
-
Parse command line arguments: I have used Apache Commons CLI, but I’d encourage you to check out JCommander, or perhaps JOpt Simple.
-
iCalendar (ical, ics) files: according to SO, biweekly is better than iCal4j. I found that iCal4j has very scarce documentation. A minor inconvenience of both is that they use old date-time java objects rather than the new java.time API.
-
XML parsing: see DOM
-
Graphs: Guava (see above) has nice Graph structures, but few algorithms.
-
JGraphT provides adapters to Guava and is very active.
-
JUNG inspired the structures of Guava; its most recent version is version 2.1.1, released 7 September 2016; “it’s active, it’s just proceeding very slowly”; this issue discusses its link to Guava.
-
GraphStream is active and seems serious (has a research team behind it) but I don’t like its core api: a node is a heavy interface that your own nodes have to extend. No apparent link to Guava.
-
Apache commons graph has gone unmaintained for a long time but was reactivated and committed to during June to Aug. 2020 (Related discussions on the ML: still on sandbox ?, moving to git, Travis CI configuration, Build fails (unit tests))
-
Baeldung mentions “more powerful frameworks based on graphs, such as Apache Giraph, currently used at Facebook to analyze the graph formed by their users, and Apache TinkerPop, commonly used on top of graph databases”, which I didn’t check.
-
grph is not active any more
-
-
Personaly, I refrain from using Vavr, because it uses sneaky throws (this position is debated). Same for Faux Pas, NoException and fge’s throwing-lambdas.
-
Native system information: OSHI