jpype1
A Python to Java bridge
Decision gist · record as of 2026-08-14
Yes, if you need to call Java libraries from Python and can meet the JDK/JRE requirement. JPype is actively maintained, widely used (top 1000 on PyPI), has no known vulnerabilities, and carries a permissive Apache-2.0 license. Install friction is medium due to native compilation, but wheel coverage is broad. Not suitable if you lack Java infrastructure or need pure-Python-only deployments.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires a Java Development Kit (JDK) or Java Runtime Environment (JRE) installed and JAVA_HOME environment variable set; native compilation during install may require build tools.
- Medium install friction due to native compilation requirements.
- The package is actively maintained with a recent release and broad wheel coverage across Python 3.8–3.14 on macOS, Linux, and Windows.
License · maintenance · safety
Apache-2.0 (permissive) — Apache-2.0 is permissive; you can use JPype in proprietary or open-source projects with minimal restrictions, provided you include the license notice.
last release 2026-05-06 (100 days) · last repo commit 2026-08-03 · 1,286 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 26,758,166 downloads/mo, #872 on PyPI
Alternatives
Verify before relying
pip install jpype1
import jpype1
jpype1.startJVM()
String = jpype1.JClass('java.lang.String')
my_string = String('Hello from Java')- Performance overhead compared to pure Java or pure Python for latency-sensitive workloads.
- Compatibility with specific Java versions and whether all Java language features are fully accessible.
- Memory management behavior when holding references to large Java objects from Python.
What it is and what it does
JPype is a Python-to-Java bridge that lets you call Java code directly from Python without reimplementing either language. Instead of embedding Python in Java, JPype interfaces at the native level, allowing both CPython and Java to run in shared memory. This means you can use Java-only libraries, prototype in Python, and leverage strong typing from production Java code in the same process.
The package is designed for scenarios where you need both languages' strengths: rapid iteration in Python combined with Java's ecosystem and type safety. It supports instantiating Java classes, calling methods, accessing fields, and working with Java arrays and collections. With wheels available for Python 3.8–3.14 across major platforms, installation is straightforward on supported systems, though it does require a JDK/JRE and native compilation.
Use it for
- Wrapping legacy Java libraries to use them from Python data science or automation scripts.
- Testing Java libraries interactively from Python without recompiling or restarting the JVM.
- Prototyping algorithms in Python while calling optimized Java libraries for compute-heavy operations.
- Integrating Java-based enterprise systems into Python applications.
- Exploring and visualizing Java object structures for debugging or documentation purposes.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need to call Java libraries from Python and can meet the JDK/JRE requirement.
JPype is actively maintained, widely used (top 1000 on PyPI), has no known vulnerabilities, and carries a permissive Apache-2.0 license. Install friction is medium due to native compilation, but wheel coverage is broad. Not suitable if you lack Java infrastructure or need pure-Python-only deployments.
Install
jpype1 on PyPI
Before you install
Medium install friction due to native compilation requirements. The package is actively maintained with a recent release and broad wheel coverage across Python 3.8–3.14 on macOS, Linux, and Windows. Only one runtime dependency (packaging) keeps the footprint minimal.
Requires a Java Development Kit (JDK) or Java Runtime Environment (JRE) installed and JAVA_HOME environment variable set; native compilation during install may require build tools.
License in practice
Apache-2.0 is permissive; you can use JPype in proprietary or open-source projects with minimal restrictions, provided you include the license notice.
Quickstart
pip install jpype1
import jpype1
jpype1.startJVM()
String = jpype1.JClass('java.lang.String')
my_string = String('Hello from Java')
Verify before relying
- Performance overhead compared to pure Java or pure Python for latency-sensitive workloads.
- Compatibility with specific Java versions and whether all Java language features are fully accessible.
- Memory management behavior when holding references to large Java objects from Python.
Package facts
| License | Apache-2.0 permissive |
| Python support | Supports the current Python release >=3.8 |
| Install friction | Medium. Platform-specific wheel |
| Runtime dependencies | 1 packagepackaging |
| Maintenance | Actively maintained 100 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 26,758,166 / month, #872 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Programming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Topic :: Scientific/EngineeringTopic :: Software Development |
Evidence: jpype1-1.7.1-1-cp310-cp310-macosx_11_0_universal2.whl; jpype1-1.7.1-1-cp311-cp311-macosx_11_0_universal2.whl; jpype1-1.7.1-1-cp312-cp312-macosx_11_0_universal2.whl; jpype1-1.7.1-1-cp313-cp313-macosx_11_0_universal2.whl; jpype1-1.7.1-1-cp314-cp314-macosx_11_0_universal2.whl; jpype1-1.7.1-1-cp38-cp38-macosx_11_0_universal2.whl; jpype1-1.7.1-1-cp39-cp39-macosx_11_0_universal2.whl; jpype1-1.7.1-cp310-cp310-macosx_14_0_x86_64.whl; jpype1-1.7.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl; jpype1-1.7.1-cp310-cp310-manylinux_2_24_i686.manylinux_2_28_i686.whl; jpype1-1.7.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl; jpype1-1.7.1-cp310-cp310-win_amd64.whl; jpype1-1.7.1-cp311-cp311-macosx_14_0_x86_64.whl; jpype1-1.7.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl; jpype1-1.7.1-cp311-cp311-manylinux_2_24_i686.manylinux_2_28_i686.whl; jpype1-1.7.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl; jpype1-1.7.1-cp311-cp311-win_amd64.whl; jpype1-1.7.1-cp312-cp312-macosx_14_0_x86_64.whl; jpype1-1.7.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl; jpype1-1.7.1-cp312-cp312-manylinux_2_24_i686.manylinux_2_28_i686.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 › “python java interop bridge”
- jpype1JPype provides Python access to Java classes and libraries by…
- py4jPy4J enables Python programs to dynamically call Java objects and…
- pemjaPemJa enables Python code to call Java methods and classes, and Java…
Give your agent the search over MCP, or paste the wish link into any chat.
More Software Development packages
Provides backported and experimental type hints for Python 3.9+, allowing use of newer typing features on older Python versions and enabling early experimentation with type system PEPs before they enter the standard library.
NumPy provides an N-dimensional array object and a comprehensive suite of mathematical, linear algebra, Fourier transform, and random number functions for scientific computing in Python.
FastAPI is a Python web framework for building REST APIs using type hints, with automatic request validation, serialization, and interactive API documentation.
Provides a way to document function parameters, class attributes, return types, and variables inline using Python's `Annotated` type hint syntax instead of traditional docstrings.
Typer builds command-line applications from Python functions using type hints, automatically generating help text, argument parsing, and shell completion.
Install it if you are building CLIs in Python.
Distlib provides low-level packaging utilities for building, distributing, and managing Python software—including metadata handling, version specifiers, wheel support, script installation, and dependency resolution.
See also java-access-bridge-wrapper · JayDeBeApi · py4j · mpxj · jdk4py · pemja · pyobjc · pyjnius · pyobjc-core · apache-airflow-providers-jdbc