Skip to main content

fprime-jre

A Java runtime you can pip install. fprime-jre bundles a jlink-trimmed Eclipse Temurin Java 25 runtime and puts a java command in your Python environment, so F Prime tools that need Java — fpp and fprime-yamcs — run on machines with no Java installed, with no changes to those tools.

pip install fprime-jre
java -version
# openjdk version "25.0.4.1" 2026-08-18 LTS
# OpenJDK Runtime Environment Temurin-25.0.4.1+1 (build 25.0.4.1+1-LTS)

This is a runtime only: it runs JARs. It does not include javac, jar, jshell, sbt, or anything else needed to build Java or Scala software.

How it works

The wheel installs a java console script next to pip and python in your environment's bin/ (Scripts\ on Windows). Inside a virtual environment that directory precedes the system PATH, so tools that look up java on the PATH — fpp-check and friends, yamcsd — find this one. The script execs the bundled runtime with your arguments, stdio, exit code and signals unchanged.

Java 25 is the version required by fpp's published JARs and supported by YAMCS.

Which Java wins?

java from fprime-jre is unconditional: if it is invoked, the bundled runtime runs. It never looks at JAVA_HOME. Choosing between a Java you already have and this one is the caller's job, in the conventional JAVA_HOME then PATH order:

  • yamcsd uses $JAVA_HOME/bin/java when JAVA_HOME is set, otherwise java on the PATH.
  • fpp's wrapper currently uses the PATH only (nasa/fpp#1107 requests JAVA_HOME be honoured first).

So: set JAVA_HOME and tools use your Java; leave it unset inside an environment with fprime-jre and they use this one. To point other tooling at the bundled runtime:

export JAVA_HOME="$(fprime-jre)"

From Python

import subprocess
from fprime_jre import JAVA, JAVA_HOME, JAVA_VERSION  # Path, Path, (25, 0, 4, 1)

subprocess.run([str(JAVA), "-jar", "tool.jar"])

Platforms

Wheels are published for Linux x86_64 and aarch64 (glibc 2.17+), macOS x86_64 and arm64 (11.0+), and Windows x64. Alpine/musl is not supported. Wheels are platform-specific but Python-version independent (py3-none-<platform>), for Python 3.8+.

Versioning

The package version is the Temurin JAVA_VERSION followed by a repackaging number: 25.0.4.1.0 bundles Temurin jdk-25.0.4.1+1. Consumers wanting Java 25 can depend on fprime-jre>=25,<26.

The version comes from the git tag (setuptools_scm), and the Temurin release is derived from it, so nothing in the repository changes for a release:

  • Repackaging the same Java: bump the last number (v25.0.4.1.0 → v25.0.4.1.1).
  • Updating Java: tag the new JAVA_VERSION with repackaging number 0 (v25.0.6.0.0). The build downloads the GA Temurin build of that JAVA_VERSION from Adoptium and fails if none exists.

Builds between tags get a .devN+g<hash> version and bundle the previous tag's Java.

Building

Wheels are built by CI, one job per platform, since the runtime must be linked on its target OS. To build locally (Python 3.11+ for the build script):

pip install build setuptools_scm
python build_runtime.py               # downloads Temurin from Adoptium, verifies SHA-256, runs jlink
python -m build --wheel               # dist/fprime_jre-<version>-py3-none-<platform>.whl
pip install dist/*.whl pytest && pytest tests

FPRIME_JRE_PLATFORM_TAG overrides the wheel's platform tag (CI sets the manylinux/macosx tags). SETUPTOOLS_SCM_PRETEND_VERSION=25.0.6.0.0 builds for a version that is not tagged yet, for example to try a new Java before releasing it. Optional integration tests run when FPRIME_JRE_TEST_FPP_JAR (path to an fpp.jar) or FPRIME_JRE_TEST_YAMCS_DIR (an unpacked YAMCS bundle) are set.

Publishing is by GitHub release through publish.yml: the release tag sets the version, and the wheels go to TestPyPI and then PyPI using trusted publishing.

License

The Python code in this repository and the bundled OpenJDK runtime are distributed under the GNU General Public License, version 2, with the Classpath Exception (LICENSE, ASSEMBLY_EXCEPTION, ADDITIONAL_LICENSE_INFO). Per-module third-party notices ship inside the runtime under legal/; Temurin's notices are in NOTICE.

Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates. Eclipse Temurin is a trademark of the Eclipse Foundation.

Metadata

Release files for fprime-jre 25.0.4.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for fprime-jre 25.0.4.1.1
File
fprime_jre-25.0.4.1.1-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
fprime_jre-25.0.4.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
fprime_jre-25.0.4.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
fprime_jre-25.0.4.1.1-py3-none-macosx_11_0_x86_64.whl Python 3 none macOS 11.0+ x86-64 Details
fprime_jre-25.0.4.1.1-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details

Total release size: 208.0 MB

Release files / fprime_jre-25.0.4.1.1-py3-none-win_amd64.whl

Download URL fprime_jre-25.0.4.1.1-py3-none-win_amd64.whl
Size 39.9 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
7391951d1b3746f5f941ed842cbd05ed632f7d2fce9a8ba732a8f4a9236354d4
BLAKE2b-256 checksum
How to use checksums
f74e9edc854ac4d862a52e859551d5cc9ca5fcdee7a89d55f62788707fd9d662
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / fprime_jre-25.0.4.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL fprime_jre-25.0.4.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 44.5 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
cc820991b6ea2b4f586c69b4a5d2a946da71f0a924bf45dddb85331ffdd32c97
BLAKE2b-256 checksum
How to use checksums
58f76122e2a6714f7920854fbdb2fee6c7f3239907ddbd27a3c8fbd7208a883a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / fprime_jre-25.0.4.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL fprime_jre-25.0.4.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 43.6 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
bbbec3da37a6193f815753204e5ca327021b16dfc8b69b86779aaf97bcbfd68f
BLAKE2b-256 checksum
How to use checksums
43f84eee600ac68e01cc56ab18fd53efe021eacca0250786775781624f5afc72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / fprime_jre-25.0.4.1.1-py3-none-macosx_11_0_x86_64.whl

Download URL fprime_jre-25.0.4.1.1-py3-none-macosx_11_0_x86_64.whl
Size 40.7 MB
Tags Python 3 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
254ca17c9fe34c3ae40cd3f766249b3a94d74e12bdb8fc71579277f1957e6d81
BLAKE2b-256 checksum
How to use checksums
74f4ebdcb4c561d9a2e2767530f88545333cd4ba7638f80fe554d13e0ed78a8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / fprime_jre-25.0.4.1.1-py3-none-macosx_11_0_arm64.whl

Download URL fprime_jre-25.0.4.1.1-py3-none-macosx_11_0_arm64.whl
Size 39.3 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2d4a0cc4119e12b5f2fdc79cdfddb58418006fe14b6600e79e313c8de468f4ad
BLAKE2b-256 checksum
How to use checksums
8b506d4189453f5dfef4b2aa21ad4ce8e8ce5e2346159fddcb9b2036c21567ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

25.0.4.1.1 This release

5 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page