jdk4py
A JDK shipped in a Python package
Decision gist · record as of 2026-08-14
Yes, if you need to run Java from Python and want to avoid separate JDK installation. The package is actively maintained, production-stable, and supports current Python versions on major platforms. The copyleft license is a consideration for proprietary or redistributed software. Medium install friction (platform-specific wheels, bundled binary) is typical for this use case and not a blocker.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python >= 3.10.
- Platform-specific wheel must match your OS and architecture (macOS, Linux, or Windows on x86_64 or ARM64).
- Medium install friction due to platform-specific wheels (macOS x86_64 and ARM64, Linux aarch64 and x86_64, Windows amd64) and a bundled JDK binary.
License · maintenance · safety
copyleft license (copyleft) — Licensed under GPLv2 (copyleft). Users must comply with copyleft obligations if they distribute derivative works or link this package into their own software.
last release 2026-04-23 (113 days) · last repo commit 2026-05-05 · 27 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 358,910 downloads/mo, #7,256 on PyPI
Alternatives
Verify before relying
pip install jdk4py
from jdk4py import JAVA, JAVA_HOME, JAVA_VERSION
from subprocess import run
result = run([JAVA, "-jar", "app.jar"], capture_output=True, text=True)
print(result.stdout)- Exact size of the bundled JDK and its impact on installation time or disk usage.
- Whether the package auto-updates the JDK or pins it to a specific version.
- Compatibility with non-standard Python environments (e.g., conda-forge, PyPy).
What it is and what it does
jdk4py packages a Java Development Kit as a Python library, eliminating the need to install Java separately on your system. When you install it via pip, you get a self-contained JDK binary that the package exposes through Python constants: JAVA (the path to the java executable), JAVA_HOME (the JDK root directory), and JAVA_VERSION (a tuple of version numbers). The package is versioned with four numbers—the first three match the bundled JDK version, and the fourth tracks the library's own API changes.
You use it by importing those constants and passing them to subprocess calls or other tools that need to invoke Java. It has no runtime dependencies beyond Python itself, and it ships pre-built wheels for macOS (Intel and ARM), Linux (x86_64 and ARM64), and Windows (x86_64). The project is actively maintained and marked production-stable, with a copyleft GPLv2 license that requires compliance if you redistribute or link it into your own software.
Use it for
- Run Java JAR files or applications from a Python script without requiring users to install Java separately.
- Build Python tools that wrap or orchestrate Java libraries, passing JVM options like heap size through subprocess.
- Deploy containerized Python applications that need Java runtime without adding a separate JDK layer.
- Test Java code from a Python test suite by invoking the bundled java executable.
- Distribute cross-platform Python packages that depend on Java without asking users to manage JDK installation.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need to run Java from Python and want to avoid separate JDK installation.
The package is actively maintained, production-stable, and supports current Python versions on major platforms. The copyleft license is a consideration for proprietary or redistributed software. Medium install friction (platform-specific wheels, bundled binary) is typical for this use case and not a blocker.
Install
jdk4py on PyPI
Before you install
Medium install friction due to platform-specific wheels (macOS x86_64 and ARM64, Linux aarch64 and x86_64, Windows amd64) and a bundled JDK binary. Actively maintained with recent commits and production-stable status.
Requires Python >= 3.10. Platform-specific wheel must match your OS and architecture (macOS, Linux, or Windows on x86_64 or ARM64).
License in practice
Licensed under GPLv2 (copyleft). Users must comply with copyleft obligations if they distribute derivative works or link this package into their own software.
Quickstart
pip install jdk4py
from jdk4py import JAVA, JAVA_HOME, JAVA_VERSION
from subprocess import run
result = run([JAVA, "-jar", "app.jar"], capture_output=True, text=True)
print(result.stdout)
Verify before relying
- Exact size of the bundled JDK and its impact on installation time or disk usage.
- Whether the package auto-updates the JDK or pins it to a specific version.
- Compatibility with non-standard Python environments (e.g., conda-forge, PyPy).
Package facts
| License | copyleft license copyleft |
| Python support | Supports the current Python release >=3.10 |
| Install friction | Medium. Platform-specific wheel |
| Runtime dependencies | None |
| Maintenance | Actively maintained 113 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 358,910 / month, #7,256 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableLicense :: OSI Approved :: GNU General Public License v2 (GPLv2)Operating System :: MacOSOperating System :: Microsoft :: WindowsOperating System :: POSIX :: LinuxProgramming Language :: Python :: 3 |
Evidence: jdk4py-25.0.2.1-py3-none-macosx_10_9_x86_64.whl; jdk4py-25.0.2.1-py3-none-macosx_11_0_arm64.whl; jdk4py-25.0.2.1-py3-none-manylinux_2_17_aarch64.whl; jdk4py-25.0.2.1-py3-none-manylinux_2_17_x86_64.whl; jdk4py-25.0.2.1-py3-none-win_amd64.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “java runtime in python”
- jdk4pyBundles a JDK runtime into a Python package, providing direct access…
- pemjaPemJa enables Python code to call Java methods and classes, and Java…
- javapropertiesReads and writes Java .properties files in both line-oriented and XML…
Give your agent the search over MCP, or paste the wish link into any chat.
More Build Tools packages
Provides reusable utilities for Python packaging interoperability, including version handling, specifiers, markers, requirements, tags, and metadata parsing according to standards like PEP 440 and PEP 425.
Wraps any iterable to display a real-time progress bar in the terminal or Jupyter notebook, showing iteration count, elapsed time, and estimated time remaining.
pip is the standard installer for Python packages, enabling you to download and install packages from the Python Package Index and other indexes into your Python environment.
Hatchling is a standards-compliant Python build backend that handles packaging, metadata, and distribution of Python projects when configured in a project's pyproject.toml file.
Generates Python gRPC service stubs and message classes from Protocol Buffer definitions, enabling developers to build gRPC clients and servers.
pre-commit is a framework for installing and running git hooks written in any language before commits are made, automating code quality and validation checks across multi-language projects.
Install it if your team needs consistent, automated validation at commit time.
See also install-jdk · java-manifest · pyjks · py4j · pyjnius · snowpark-connect-deps-2 · deno · java-access-bridge-wrapper · pemja · jpype1