Compatibility and limits¶
What has been tested, and what is not supported. A configured CI job does not count until it has passed.
Requirements and tested versions¶
Component |
Requirement |
Tested |
|---|---|---|
Extraction JDK |
JDK 25 only |
Temurin 25.0.3. Other JDK runtimes are rejected with an error. |
Source/API release |
|
17, 21 and 25 through JDK 25’s |
Python |
3.12+ |
3.12, 3.13 and 3.14 |
Sphinx |
8.2.x and 9.1.x |
9.1.0, with the Docutils version it installs (0.22.4); the test suite on 8.2.3 |
Operating system |
Platform-neutral |
Linux, macOS and Windows in GitHub Actions |
HTML themes |
Native Sphinx nodes |
Alabaster 1.0.0, Sphinx Classic, Furo 2025.12.19, Read the Docs 3.1.0 and Lumina 2.9.11 in Chromium at desktop (1440px) and mobile (390px) widths. Classic keeps a minimum width on mobile; Read the Docs overflows on phones for native Sphinx objects too, and Java pages stay within that. |
Other builders |
Native Sphinx nodes |
Text builder |
Parallel builds |
Sphinx |
|
Not tested¶
Other JDK runtimes, Sphinx releases, Firefox and WebKit, PDF/LaTeX and EPUB builders.
Large multi-module projects. Performance records one single-library run.
Availability of remote Javadoc sites behind
java_external_javadocURLs.
Known limits¶
Traditional Javadoc comments and plain inline
{@snippet}bodies are supported; see Supported Javadoc. Markdown comments (///), external or hybrid snippets, snippet regions, IDs and markup, and unsupported tags warn. The HTML subset excludes definition lists, headings, images, presentational attributes,<th>styling outside table headers, and local documentation assets.Only declared members are shown. Non-overridden inherited methods stay on their ancestor’s page. Compiler-generated record and enum methods are listed, but the standard doclet’s generated prose for them is not synthesized.
Manual Java declaration directives are not provided; declarations come only from the extracted model through the
java:auto*directives.External links use the Javadoc 9+ URL structure; Javadoc 8 member anchors are not supported. Roles mapped to external Javadoc without compiler metadata cannot check that the symbol exists.
JPMS
module-info.javainputs are rejected; several non-modular source roots are supported. Annotation processors and Lombok-like transformations are not run.Any input change re-extracts the whole project, and cache hits still hash all dependency bytes. Sphinx keeps only the current model in its cache; the CLI’s
--cachedirectory does not evict old entries.Sphinx can leave obsolete HTML files after a type is removed, so publish from a clean output directory. Each generated-page directory must belong to one Sphinx process at a time; that process’s own
-jworkers are supported.
Evidence¶
The CI workflow runs the operating system and Python matrix, the JDK and Sphinx integration tests against the installed wheel, strict builds and Chromium checks in five themes. The tests compare anchors with real standard-doclet output, check that the XML is byte-identical across checkout locations, and check that extraction runs neither static initializers nor annotation processors.
The Maven and Gradle consumers last passed on 2026-10-11 with Maven 3.10.0,
Gradle 9.1.0, Temurin 25.0.3, Python 3.12.13 and Sphinx 9.1.0 on macOS 26.4.1
arm64, including a strict parallel Sphinx build with an empty PATH.