In Java the language is small and the ecosystem large: what you really learn is the build tool (Maven or Gradle), testing (JUnit) and the framework (Spring). Dev.java is for the language itself, Baeldung for “how do I do this in Spring”. Kotlin, Scala and Clojure run on the same JVM, so moving between them brings the Java libraries and tools along.
A tool doing dependency management and builds for Java with a standard project layout. Unlike collecting jars by hand it resolves dependencies from a central repository and defines a lifecycle.
One of the largest archives of worked, up-to-date tutorials for Java and Spring. Unlike the official docs it answers “how do I do this” with working code examples.
A thin NIO wrapper library that makes file operations in Scala easy. Unlike using java.nio directly, it reduces reading, writing and walking files to readable one-line Scala idioms.
A JVM dependency resolver and application launcher written in pure Scala. Unlike classic Maven/Ivy resolution it downloads in parallel and is much faster; sbt now resolves dependencies with it too.
A scriptable, incremental build tool for Java and Android. Unlike Maven’s XML it writes build logic in real code (Kotlin/Groovy) and rebuilds only what changed.
Google’s core utility library for Java — collections, caching, functional extras. Unlike filling the standard library’s gaps by hand it closes them in a tested way.
The most widely used library for turning JSON into objects and back in Java. Unlike hand-written parsing it offers streaming, tree and data-binding modes under one roof.
Open Source · API · JVM (Java, Kotlin, Scala) · Freechecked 2026-11-09archive
Very high-performance concurrent queues for the JVM, used by projects like Netty. Unlike the java.util.concurrent queues, it offers lock-free designs specialised for single/multi producer–consumer cases.
An OpenJDK tool for microbenchmarking on the JVM that accounts for JIT effects that distort measurement. Unlike timing by hand it correctly handles traps like warmup and dead-code elimination.
Java’s standard unit-testing framework; the base of writing and running tests. Unlike trying things in main it brings assertions, lifecycle hooks and parameterised tests.
A cross-platform language on the JVM, the preferred language for Android. Unlike Java it has null safety, a terser syntax and coroutines, while interoperating fully with Java code.
The open-source reference implementation of the Java platform — where the language and JVM are developed. Unlike vendor distributions the standard itself is defined here.
A tool that generates repetitive Java code like getters/setters and constructors from annotations at compile time. Unlike writing it by hand it keeps the class short and leaves the noise to the compiler.
A language on the JVM uniting object-oriented and functional programming — the language Spark is written in. Unlike Java it has strong type inference, pattern matching and functional collections.
A linter that checks Scala source against formatting and style rules; the project site is gone and the repository has been dormant since 2022. Unlike scalafmt it reports violations instead of reformatting; new projects mostly use Scalafix.
A command-line manager to install and switch between multiple versions of the JDK and JVM tools. Unlike editing PATH by hand it reduces per-project version switching to one command.
A framework that starts Spring applications running with no configuration burden. Unlike raw Spring it brings sensible defaults and an embedded server — “up with one command”.
Backend · Open Source · API · JVM (Java, Kotlin, Scala) · Freechecked 2026-11-09archive
The application framework that dominates enterprise Java — dependency injection, web, data. Unlike stacking libraries it unifies them in one consistent model.
Backend · Open Source · API · JVM (Java, Kotlin, Scala) · Freechecked 2026-11-09archive
Oracle’s official Java tutorial, from language basics through collections and concurrency. Against third-party courses it explains the standard library’s intent first-hand; the price is a dry register and sections that stopped at older releases.
A library bringing persistent collections and functional control structures to Java. Unlike the standard collections it foregrounds immutability and types like Try/Either.
Open Source · JVM (Java, Kotlin, Scala) · Freechecked 2026-11-09archive