mrkeyoor.com_
Fri 16 Oct 18:53 UTC
Dev Toolsevaluationupdated 05 Sept 2026

jdk review

OpenJDK's JDK repository is the mainline source for the Java Development Kit, including the virtual machine, compiler, class libraries, and service tools. It is where contributors change Java itself; application developers who only need a working JDK are directed to prebuilt distributions.

+11stars / 7d
Verdict

Our OpenJDK install stopped after 5 seconds with exit 126 before a build could begin, so this 694 MB source tree demands a prepared JDK development machine. Use it when you intend to change Java, maintain a port, or produce a downstream JDK. Install a distribution instead if your job is compiling and running ordinary Java applications.

We ran it

Lab card: what happened when we ran jdkScreenshot of jdk (github.com/openjdk/jdk)
Install✗ · 4s
Build—
Repo71146 files~13,094,751 lines of source · 695.9 MB · 7 CI workflows · tests dir

Answers from our run

Does jdk build from source?

The dependency install failed, and the project has no separate build step. We cloned commit e1845f5 into a clean Debian container with 3 CPUs and no project-specific setup.

Who should not use jdk?

Java application developers who only need a JDK binary: the building guide explicitly sends that audience to the OpenJDK installation page.

What are the alternatives to jdk?

Eclipse OpenJ9, GraalVM, JetBrains Runtime. Our OpenJDK install stopped after 5 seconds with exit 126 before a build could begin, so this 694 MB source tree demands a prepared JDK development machine.

Setup1/570,924 files; configure stopped with exit 126
Docs5/5Build, platform, testing, and troubleshooting details are specific
Community5/523,322 stars and pull requests updated on 2026-09-05
Maturity5/5Mainline JDK work is active; stable lines use update repositories

Discussed on

  1. hnJEP 401: Value Objects (Preview) merged to OpenJDK master237 points
  2. hnAVX512 intrinsics for JDK’s Arrays.sort methods158 points
  3. hnCompact Object Headers in Java 2414 points
  4. hnSupport for UUID Version 7 (UUIDv7) added to Java 265 points
  5. hnPull Request: Java language implementation of value classes and objects4 points

Who it’s for

OpenJDK contributors changing the JVM, compiler, class libraries, or build system.
JDK vendors and platform teams carrying ports, patches, or downstream builds.
Runtime engineers who need fastdebug builds and focused HotSpot or module targets.
Researchers testing language, garbage collector, compiler, or architecture work against mainline.

Who it’s NOT for

Java application developers who only need a JDK binary: the building guide explicitly sends that audience to the OpenJDK installation page.
Teams expecting a clean Debian clone to compile without preparation: the documented path needs a boot JDK, native compiler, build tools, and platform libraries, and our install stopped before configuration completed.
Windows developers unwilling to maintain a Unix-style build layer: the guide requires Cygwin, MSYS2, or WSL alongside Microsoft Visual Studio.
Maintainers targeting an older supported Java line from this master branch: the guide tells them to use the matching JDK Updates repository.
CI owners who require an official container recipe: our scan found no Dockerfile in a 70,924-file checkout.

Setup reality

Our sandbox cloned commit f40a2c3, a 694 MB checkout containing 70,924 files and about 13,055,178 source lines. The install failed after 5 seconds with exit 126. Its final line was bash: line 1: ./configure: Permission denied.

The source needs no hosted credential or external service. A build does need a boot JDK, a native compiler, Autoconf, GNU Make, Bash, and platform libraries. JTReg and Google Test source enter the picture for their respective test suites.

Linux, macOS, AIX, and Windows have separate toolchain rules. Windows also needs Cygwin, MSYS2, or WSL, and the guide warns about spaces, long paths, locales, and file attributes. This repository tracks mainline development; older maintained lines live in JDK Updates repositories.

The 70,924-file tree is a platform source, not an application dependency

OpenJDK's mainline tree contained 70,924 files and about 13,055,178 lines of source in our checkout. It holds HotSpot, the Java compiler, core libraries, launchers, serviceability tools, tests, and the machinery needed to assemble a JDK image. That breadth explains the repository's purpose: contributors work on the Java platform here. An application team looking for a runtime has arrived one layer too low.

The project's building guide says this directly. People who only want to use Java should install a prebuilt JDK. The 3-CPU, 8 GB sandbox we used was aimed at source validation, the sort of work a JDK contributor or downstream vendor performs. Compiler engineers, port maintainers, runtime researchers, and teams carrying patches have a reason to accept this tree. Most Java developers do not.

The documented build begins with Bash and a prepared toolchain

The 694 MB checkout sits behind a short README that points to a much longer building guide. Its quick path clones the source, invokes bash configure, runs make images, checks the resulting Java binary, and starts the basic tier-one tests. That summary is honest about prerequisites: the introduction calls the JDK complex and says the build needs external software, suitable hardware, and technical experience.

A boot JDK is mandatory because the JDK uses an existing JDK to build itself. Linux also needs a supported C or C++ compiler, Autoconf, GNU Make, Bash, and development headers for system facilities such as fonts, printing, graphics, and audio. Our install ended after 5 seconds, before any of those later checks could produce a build result. There is no hosted account or API token to configure.

What happened when we ran it

Our sandbox run at commit f40a2c3 stopped during installation after 5 seconds with exit 126. The final log line was bash: line 1: ./configure: Permission denied. No compiler output or test result was produced in that run. The measured finding is the failed entry step and its exact shell error, rather than a claim about how the JDK itself compiles or behaves.

We ran the checkout in an unprivileged Debian container with 3 CPUs, 8 GB of RAM, and no secrets. The source occupied 694 MB before a successful install could add anything. Those details make the result reproducible enough to compare with another setup, but the log does not identify what set the permission state. Assigning the failure to missing packages, mount flags, or repository metadata would go beyond the evidence.

Platform libraries make a source build an operating-system job

A 13,055,178-line source tree crosses boundaries that an ordinary Java library never touches. The build guide maps Linux to GCC or Clang, macOS to Xcode, Windows to Visual Studio, and AIX to IBM's compiler. Linux builders also supply headers for fontconfig, CUPS, X11, and ALSA. Configure can locate many components, but the person running it still owns the host image.

Windows adds another compatibility layer. OpenJDK documents Cygwin, MSYS2, and WSL routes, with cautions about path spaces, path length, line endings, locales, and Cygwin file attributes. Our 3-CPU container says nothing about those paths because it was Debian. A cross-platform team should treat each host as a separate build configuration and keep the configuration output alongside its artifacts.

Seven CI workflows do not replace a local tier-one run

Our scan found 7 workflow files and a dedicated tests directory, while the building guide names make test-tier1 as the basic verification command. Most JDK tests use JTReg; HotSpot's native tests need Google Test source. That setup is useful because tests can target the full image, a named group, or a narrower component, but our failed install did not exercise any of it.

OpenJDK's make targets support incremental work on HotSpot, one module, or one compilation phase. That matters in a repository with about 13,055,178 source lines, where rebuilding every image after a small edit would waste time. The same guide documents build logs, failure summaries, a make doctor diagnostic, and clean rebuilds. The testing surface is deep, though the developer must assemble the prerequisite tools first.

393 open issues and pull requests accompany same-day pushes

GitHub reported 393 open issues and pull requests, 23,322 stars, and a last push on 2026-09-05. The recently updated entries we inspected were active pull requests, so the combined count should not be read as 393 bugs. The repository's README sends bug reporting to the separate OpenJDK tracker, which means GitHub alone does not show the whole maintenance queue.

GitHub's latest-release API returned no release for this repository. That is not evidence of inactivity: the mainline branch received a same-day push, and the pull-request list was moving on 2026-09-05. OpenJDK's own guide separates mainline development from the per-version JDK Updates repositories. Buyers should judge this source tree by current development and the release line they intend to maintain, not by an absent GitHub release tag.

OpenJDK is the right checkout when you intend to change Java

A 694 MB checkout and a failed 5-second entry step make this a poor route to obtaining Java for an application server or laptop. Prebuilt distributions solve that job. OpenJDK earns the setup cost when the deliverable is a JVM change, class-library patch, compiler experiment, new platform port, or downstream JDK image that must be built from the mainline source.

Our run cannot vouch for a successful build because installation stopped with exit 126. That should lower setup confidence without distorting the project's maturity. The source is active, the build guide is unusually detailed, and the repository exposes fine-grained developer targets. Start only after preparing the documented host toolchain and boot JDK; otherwise the first useful decision is to install a binary distribution.

Alternatives

ProjectWhat it isPick it when
Eclipse OpenJ9An independent JVM implementation designed to pair with OpenJDK class libraries.pick this instead when your work is specifically about an alternative JVM and its footprint, startup, or runtime behavior.
GraalVM gh↗A JDK and compiler stack centered on ahead-of-time native executables and language runtimes.pick this instead when Native Image, Truffle languages, or Graal compiler development is the reason you are building a runtime.
JetBrains RuntimeAn OpenJDK fork carrying desktop and IntelliJ Platform integration work.pick this instead when you need an OpenJDK-derived runtime for JetBrains IDEs, JCEF, or desktop-specific patches.

What people are saying

  1. [velocity-scout] openjdk/jdk

Sources

  1. OpenJDK JDK repository
  2. Building the JDK at measured commit f40a2c3
  3. Testing the JDK at measured commit f40a2c3
  4. OpenJDK developers guide
  5. OpenJDK JDK GitHub releases

More dev tools reviews

compose-samples · librepods · sqlmap · coucou · world-execute-me-dsh-pv · mcp-extensions · the whole board →