I've used JPype for a while. It also starts a JVM from python. Once set up, interoperating with Java is transparent. You can start the JVM in such a way that it can be debugged directly using remote debugging tools. Answer from belayon40 on reddit.com
🌐
Py4j
py4j.org
Welcome to Py4J — Py4J
Py4J - A Bridge between Python ... Enter search terms or a module, class or function name. Py4J enables Python programs running in a Python interpreter to dynamically access Java objects in a Java Virtual Machine....
🌐
GitHub
github.com › bcdev › jpy
GitHub - bcdev/jpy: A bi-directional Python-Java bridge used to embed Java in CPython or the other way round. · GitHub
August 5, 2021 - jpy is a bi-directional Python-Java bridge which you can use to embed Java code in Python programs or the other way round. It has been designed particularly with regard to maximum data transfer speed between the two languages.
Starred by 188 users
Forked by 37 users
Languages   C 54.6% | Java 25.9% | Python 18.7%
Discussions

Best way to combine Python and Java?
I've used JPype for a while. It also starts a JVM from python. Once set up, interoperating with Java is transparent. You can start the JVM in such a way that it can be debugged directly using remote debugging tools. More on reddit.com
🌐 r/java
82
60
October 29, 2022
Using Python from within Java - Stack Overflow
I would write a Python module to handle the text and language processing, and then build a small bridge in jython that your java program can interact with. The jython bridge will be a very simple one, that's really only responsible for forwarding calls to the python module, and return the answer ... More on stackoverflow.com
🌐 stackoverflow.com
Java and CPython compatibility bridge
What are the differences to Py4J ? (except magic imports) More on reddit.com
🌐 r/ProgrammingLanguages
4
15
March 26, 2021
Py4J - A Bridge between Python and Java

That's cool. So you have to have a java program running before you use the Python code?

More on reddit.com
🌐 r/programming
1
3
March 29, 2021
🌐
pytz
pythonhosted.org › javabridge
javabridge: running and interacting with the JVM from Python — python-javabridge 1.0.12 documentation
The javabridge Python package makes it easy to start a Java virtual machine (JVM) from Python and interact with it.
🌐
PyPI
pypi.org › project › python-javabridge
python-javabridge · PyPI
The python-javabridge package makes it easy to start a Java virtual machine (JVM) from Python and interact with it. Python code can interact with the JVM using a low-level API or a more convenient high-level API.
      » pip install python-javabridge
    
Published   Sep 13, 2024
Version   4.0.4
🌐
PyPI
pypi.org › project › javabridge
javabridge · PyPI
The python-javabridge package makes it easy to start a Java virtual machine (JVM) from Python and interact with it. Python code can interact with the JVM using a low-level API or a more convenient high-level API.
      » pip install javabridge
    
Published   May 26, 2020
Version   1.0.19
🌐
GitHub
github.com › LeeKamentsky › python-javabridge
GitHub - LeeKamentsky/python-javabridge: Python wrapper for the Java Native Interface
The javabridge Python package makes it easy to start a Java virtual machine (JVM) from Python and interact with it.
Starred by 117 users
Forked by 64 users
Languages   Python 93.1% | Cython 4.4% | C 1.5% | Python 93.1% | Cython 4.4% | C 1.5%
🌐
Readthedocs
jpy.readthedocs.io › en › latest › intro.html
Introduction — jpy 0.9.0 documentation
jpy is a bi-directional Python-Java bridge which you can use to embed Java code in Python programs or the other way round. It has been designed particularly with regard to maximum data transfer speed between the two languages.
Find elsewhere
🌐
Reddit
reddit.com › r/java › best way to combine python and java?
r/java on Reddit: Best way to combine Python and Java?
October 29, 2022 -

My project uses some packages that are available only in Python and heavily rely on C libraries. The project also greatly benefits from Java libraries and the JVM. What's the optimal way to call Python functions from Java?

I tried:

  1. Small web-services: overhead to serialize data, start and stop the services. Also debugging is harder and implementing each new function is now double the effort.

  2. Jpy: a library that runs an interpreter in the JVM. Spare the service start/stop, but: isn't really feasible for more than a single-liner, data translation between Java and Python is cumbersome, and I also encountered runtime segmentation fault errors.

Any other options?

The project is in the machine-learning domain, so involves exchanging large numeric arrays and text. In some cases the execution switches back and forth between the platforms.

🌐
Readthedocs
jpy.readthedocs.io
Welcome to jpy’s documentation! — jpy 0.9.0 documentation
jpy is a bi-directional Java-Python bridge allowing you to call Java from Python and Python from Java.
🌐
Deephaven
deephaven.io › core › docs › how-to-guides › use-jpy
Use jpy | Deephaven
jpy is a bi-directional Java-Python bridge that facilitates calling Java from Python and vice versa. Python programs that use jpy can access Java functionalities. Java programs that use jpy can access Python functionalities. For more details on jpy, see the jpy GitHub project, or use help("jpy") ...
🌐
pytz
pythonhosted.org › javabridge › java2python.html
Calling Python from Java — python-javabridge 1.0.12 documentation
You may want to maintain references to Python objects across script executions. The following functions let a Java caller refer to a Python value (which can be a base type or an object) via a token which may be exchanged for the value at any time. The Java code is responsible for managing the ...
🌐
Talvi
talvi.net › posts › a-brief-overview-of-python-java-bridges-in-2020.html
A brief overview of Python-Java bridges in 2020 - talvi.net
January 10, 2020 - A primary goal is to support SciPy and its constituent libraries. At this point, the Python implementation is made available for experimentation and curious end-users. Website: https://github.com/LeeKamentsky/python-javabridge
🌐
PyPI
pypi.org › project › jpy
jpy · PyPI
jpy is a bi-directional Python-Java bridge which you can use to embed Java code in Python programs or the other way round. It has been designed particularly with regard to maximum data transfer speed between the two languages.
      » pip install jpy
    
Published   Nov 13, 2025
Version   1.3.0
🌐
GeoAPI
geoapi.org › java-python
GeoAPI Java-Python bridge | GeoAPI
May 5, 2025 - That method is invoked from Python code, and its return value is wrapped in a Python object provided by JPY. If the caller knows that the return type is GeoAPI interface org.​opengis.​metadata.​Metadata, then (s)he can wrap the return value in opengis.​bridge.​java.​metadata.​Metadata in order to manipulate that object using GeoAPI for Python interfaces.
🌐
GitHub
github.com › beeware › rubicon-java
GitHub - beeware/rubicon-java: A bridge interface between Python and Java. · GitHub
A bridge interface between Python and Java. Contribute to beeware/rubicon-java development by creating an account on GitHub.
Starred by 72 users
Forked by 28 users
Languages   Python 68.4% | C 20.3% | Java 8.6% | Makefile 2.7%
🌐
PyPI
pypi.org › project › jvm
jvm · PyPI
Python bridge for the Java Virtual Machine. jvm is a bridge between Python and JVM, allowing these to intercommunicate.
      » pip install jvm
    
Published   Jun 19, 2025
Version   0.6.0b6
🌐
PyPI
pypi.org › project › java-access-bridge-wrapper
java-access-bridge-wrapper · PyPI
Python wrapper around the Java Access Bridge / Windows Access Bridge. ... from JABWrapper.jab_wrapper import JavaAccessBridgeWrapper from JABWrapper.context_tree import ContextNode, ContextTree, SearchElement · The JAB creates an virtual GUI window when it is opened. For the JAB to operate and receive events from the GUI, the calling code needs to implement the windows message pump and call it in a loop.
      » pip install java-access-bridge-wrapper
    
Published   Nov 23, 2025
Version   2.0.0
🌐
Anaconda.org
anaconda.org › conda-forge › python-javabridge
Python Javabridge | Anaconda.org
New Authentication Rolling Out - We're upgrading our sign-in process to give you one account across all Anaconda products! Browser users will see a refreshed sign-in flow, while CLI users will experience no changes. Python wrapper for the Java Native Interface copied from cf-staging / ...
🌐
pytz
pythonhosted.org › javabridge › installation.html
Installation and testing — python-javabridge 1.0.12 documentation
Create and activate a virtualenv ... your system-wide python installation with new packages. ... If you do not have a C compiler installed, you can install the Windows SDK 7.1 and .Net Framework 4.0 to perform the compile steps. You should install a Java Development Kit (JDK) ...