Skip to main content

PemJa

What is it?

PemJa is an open source cross language call framework based on FFI. It aims to provide a high-performance

framework of calling between different languages.

Where to get it

Python binary installers for the latest released version are available at the Python package index

pip install pemja

Java Maven Dependency

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>pemja</artifactId>
    <version>{version}</version>
</dependency>

Dependencies

Installation from sources

Prerequisites for building PemJa:

  • Unix-like environment (we use Linux, Mac OS X), Windows
  • Git
  • Maven (we recommend version 3.2.5 and require at least 3.1.1)
  • Java 8 or 11 (Java 9 or 10 may work) with $JAVA_HOME set correctly
  • Python >= 3.8 (we recommend version 3.8, 3.9, 3.10, 3.11, 3.12)

NOTE for windows:

  • Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools"
  • The compressed package in folder dist must be uncompressed and use the following command to install pip install dist/$packageName$
git clone https://github.com/alibaba/pemja.git
cd pemja
mvn clean install -DskipTests
pip install -r dev/dev-requirements.txt
python setup.py sdist
pip install dist/*.tar.gz

Usage

String path = ...;
PythonInterpreterConfig config = PythonInterpreterConfig
    .newBuilder()
    .setPythonExec("python3") // specify python exec, use "python" on Windows
    .addPythonPaths(path) // add path to search path
    .build();

PythonInterpreter interpreter = new PythonInterpreter(config);

// set & get
interpreter.set("a", 12345);
interpreter.get("a"); // Object
interpreter.get("a", Integer.class); // Integer

// exec & eval
interpreter.exec("print(a)");

// invoke functions
interpreter.exec("import str_upper");
String result = interpreter.invoke("str_upper.upper", "abcd");
// Object invoke(String name, Object... args);
// Object invoke(String name, Object[] args, Map<String, Object> kwargs);

// invoke object methods
/*
// invoke.py
class A:
       def __init__(self):
           self._a = 0
   
       def get_value(self):
           return self._a
   
       def add(self, n):
           self._a += n
   
       def add_all(self, *args):
           for item in args:
               self._a += item
               return self._a
   
       def minus(self, n):
           self._a -= n
           return self._a
*/

interpreter.exec("import invoke");
interpreter.exec("a = invoke.A()");
interpreter.invokeMethod("a", "add", 3);
interpreter.invokeMethod("a", "minus", 2);
interpreter.invokeMethod("a", "add_all", 1, 2, 3);


// python callback java methods
/*
// invoke_callback.py
from pemja import findClass

StringBuilder = findClass('java.lang.StringBuilder')
Integer = findClass('java.lang.Integer')

def callback_java():
    sb = StringBuilder()
    sb.append('pemja')
    sb.append('java')
    sb.append('python')
    sb.append(Integer.toHexString(Integer.MAX_VALUE))
    return sb.toString()
*/
interpreter.exec("import call_back")
print(interpreter.invoke("call_back.callback_java"))

Documentation

Metadata

Release files for pemja 0.5.8

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

Source distribution (sdist)

Source distribution for pemja 0.5.8
File Size Uploaded
pemja-0.5.8.tar.gz 53.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for pemja 0.5.8
File
pemja-0.5.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
pemja-0.5.8-cp312-cp312-manylinux1_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.5+ x86-64 Details
pemja-0.5.8-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
pemja-0.5.8-cp312-cp312-macosx_10_9_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.9+ x86-64 Details
pemja-0.5.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
pemja-0.5.8-cp311-cp311-manylinux1_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.5+ x86-64 Details
pemja-0.5.8-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
pemja-0.5.8-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
pemja-0.5.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details
pemja-0.5.8-cp310-cp310-manylinux1_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.5+ x86-64 Details
pemja-0.5.8-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
pemja-0.5.8-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details
pemja-0.5.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ ARM64 Details
pemja-0.5.8-cp39-cp39-manylinux1_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.5+ x86-64 Details
pemja-0.5.8-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
pemja-0.5.8-cp39-cp39-macosx_10_9_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.9+ x86-64 Details
pemja-0.5.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ ARM64 Details
pemja-0.5.8-cp38-cp38-manylinux1_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.5+ x86-64 Details
pemja-0.5.8-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details
pemja-0.5.8-cp38-cp38-macosx_10_9_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.9+ x86-64 Details

Total release size: 2.6 MB

Release files / pemja-0.5.8.tar.gz

Download URL pemja-0.5.8.tar.gz
Size 53.2 kB
Tags Source
SHA-256 checksum
How to use checksums
a664ccb2df4cee97b57c98136656d481e42952796d096efb4171c9634b829217
BLAKE2b-256 checksum
How to use checksums
65c0bad46331f69dd64ed2b4278e7aa064be79da6668e77fdba35fd92af42e3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL pemja-0.5.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 307.5 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
53ad5dbfdd2680fcf2bd95c12ca80f69cb357010b21f3d770087f733ed54e0fb
BLAKE2b-256 checksum
How to use checksums
c0981abd33bdf03b824aa8ea5d655cd33b2bdb8a983209f1604ed5c85b44386d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp312-cp312-manylinux1_x86_64.whl

Download URL pemja-0.5.8-cp312-cp312-manylinux1_x86_64.whl
Size 65.7 kB
Tags CPython 3.12 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
a11dfd6919878790f77e1d5a38775e969234c51c45759c057c80ec0a9c983317
BLAKE2b-256 checksum
How to use checksums
3648cb222c2a74fc8bc4d7cc765a2e80986f1e5218365f3032f24f8d3e90fe50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp312-cp312-macosx_11_0_arm64.whl

Download URL pemja-0.5.8-cp312-cp312-macosx_11_0_arm64.whl
Size 53.3 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
53961214045d1c4263eb15fd10c7d27aae07ffb2364d3eb17787e2dca541ee64
BLAKE2b-256 checksum
How to use checksums
1d7f4917b70dab7fcf975c0915b0c5c29ff1412660f5b88261a9e29c9988023d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp312-cp312-macosx_10_9_x86_64.whl

Download URL pemja-0.5.8-cp312-cp312-macosx_10_9_x86_64.whl
Size 52.2 kB
Tags CPython 3.12 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
e2636692a7c09d6690e5b629794abea645982e6cb1427ad74501f837e2ac9d9b
BLAKE2b-256 checksum
How to use checksums
f95c9d187da2ec9eeb6333fa69dc324a0106317f457f4aa0f007545644fc7830
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL pemja-0.5.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 303.5 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
7c5b084c4f9d0542793c109035e1641a7cfce486d65b608ac8013d61abf9511e
BLAKE2b-256 checksum
How to use checksums
821fb2f3c4bbfb6ac38ca44485057015d2dfa0e1db062c9351d0f8bd8d43fc55
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp311-cp311-manylinux1_x86_64.whl

Download URL pemja-0.5.8-cp311-cp311-manylinux1_x86_64.whl
Size 64.4 kB
Tags CPython 3.11 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
5224ac53f9f2ae56376095ee41ad99c99c2b3122c93ad9af1fbe45372473e1ba
BLAKE2b-256 checksum
How to use checksums
caee61669d63a7eb65641ee19d53b15bc37d4e3e26582b96cf129ffd23b480f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp311-cp311-macosx_11_0_arm64.whl

Download URL pemja-0.5.8-cp311-cp311-macosx_11_0_arm64.whl
Size 53.2 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
dcba0d58945efffc256801a83cfb69cfdc185e2e18db32c2e51192ee4882fcb0
BLAKE2b-256 checksum
How to use checksums
c647b87eb98b1f29f0f33b0cf3f883c21fd827bc0629f55a3085e29ea1899bb8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp311-cp311-macosx_10_9_x86_64.whl

Download URL pemja-0.5.8-cp311-cp311-macosx_10_9_x86_64.whl
Size 51.8 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
d2aafdb9fe5c191626118f4273b79f6cfff1128291529c8e12ffc39821c5b58d
BLAKE2b-256 checksum
How to use checksums
932c954e625585de8c6ed9f81d44127882d5a3563787f252f1afc634e581628e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL pemja-0.5.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 299.8 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
24a8461cf82208188f90e01e6df9755f7c97d0085be7c7bf626bef601af6ebb9
BLAKE2b-256 checksum
How to use checksums
9cc08b0d7127920e3cf90b43a4d8561ee36aa1b097912a18c5c4d8037c91dc1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp310-cp310-manylinux1_x86_64.whl

Download URL pemja-0.5.8-cp310-cp310-manylinux1_x86_64.whl
Size 64.5 kB
Tags CPython 3.10 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
dc5a7491bfc7301b5e0aafae023c2279503cab69e8117f9153c1048f32d88c48
BLAKE2b-256 checksum
How to use checksums
65703ef829a8722d9d430fb7b494b19ef29b183ddcbb6c558c0a9f3a7eb3ae7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp310-cp310-macosx_11_0_arm64.whl

Download URL pemja-0.5.8-cp310-cp310-macosx_11_0_arm64.whl
Size 53.4 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
be3f1ae39ba52ccc87d1b62134fb25337adffdfcf12b064877b686e4fd7a6a1c
BLAKE2b-256 checksum
How to use checksums
3953790165671154e5425781f2af8fc534519409f4e4e0549fcf0dfb3a59a38f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp310-cp310-macosx_10_9_x86_64.whl

Download URL pemja-0.5.8-cp310-cp310-macosx_10_9_x86_64.whl
Size 52.0 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
82e815e72b217b5756ed3688e5aeedd6acbbcfc1c6869fbe106add8e66520300
BLAKE2b-256 checksum
How to use checksums
244a9cd496a578af7ad23ee919e32a6224fa5667a14b16ca911317be77181d93
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL pemja-0.5.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 297.8 kB
Tags CPython 3.9 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
93ef837984898c476754aa83504360d1b91b93197b1ce1c0a92d66813f03bdc4
BLAKE2b-256 checksum
How to use checksums
87826723a17d138513bacd438838e2568a77a8b292a3eee96937fd99e3cc75f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp39-cp39-manylinux1_x86_64.whl

Download URL pemja-0.5.8-cp39-cp39-manylinux1_x86_64.whl
Size 64.2 kB
Tags CPython 3.9 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
9c7641a04cedb94b6755ee328e8b1f195d8e243283d1d72496bea377fd7619ff
BLAKE2b-256 checksum
How to use checksums
025cc1c685a5e5b10328cb991f87ff851a056b9ccb7ab2183cc55ff9c5dbf701
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp39-cp39-macosx_11_0_arm64.whl

Download URL pemja-0.5.8-cp39-cp39-macosx_11_0_arm64.whl
Size 53.4 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b15eee31e1b845dd19a17c4dd7a060b9bff8b5738ad92fb0164627efcdfbd414
BLAKE2b-256 checksum
How to use checksums
01c0c68a7920eb8445bc04c070501a8ee916ab9f357a3d4ab119499970d22ced
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp39-cp39-macosx_10_9_x86_64.whl

Download URL pemja-0.5.8-cp39-cp39-macosx_10_9_x86_64.whl
Size 52.0 kB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
b079bead74eeb6246f875b82ecf7651850a0831103ec7604b74bd64d1d2f676a
BLAKE2b-256 checksum
How to use checksums
c504a1738a4ae8d1b49cb8b8c542aab326776c765d6fde907627f2b6d8a3f3fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL pemja-0.5.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 292.8 kB
Tags CPython 3.8 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
267b1f637f6ffe5cb603e061fc00f6fbe3bfe0fef4b5692adbeea8e8179cb4c9
BLAKE2b-256 checksum
How to use checksums
453282f77ed6d85c0d19f8433c5c873b8fa97fb5b25c3c6cefc27489e2abac72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp38-cp38-manylinux1_x86_64.whl

Download URL pemja-0.5.8-cp38-cp38-manylinux1_x86_64.whl
Size 301.4 kB
Tags CPython 3.8 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
6da6678857ef5da367474bf1091d86e319048412f5ac2b284b99312e501a557b
BLAKE2b-256 checksum
How to use checksums
d289fd228851c6159136b2c476e16543e25615593015d075932d1c9b765b61da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp38-cp38-macosx_11_0_arm64.whl

Download URL pemja-0.5.8-cp38-cp38-macosx_11_0_arm64.whl
Size 53.3 kB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f1821d9549259b82636f48359ae58109e8f9a4404309e9b8c3d76b3582dff730
BLAKE2b-256 checksum
How to use checksums
a7b5bdd6d1171bf34a0ba7f3298bba8816f79d9ac8d8b156195eeed0b6d77085
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / pemja-0.5.8-cp38-cp38-macosx_10_9_x86_64.whl

Download URL pemja-0.5.8-cp38-cp38-macosx_10_9_x86_64.whl
Size 51.8 kB
Tags CPython 3.8 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
fbee033fe2a4a785411e801344e3168bf3e8a805fea408144bd2d0c186c0e366
BLAKE2b-256 checksum
How to use checksums
5c9a8c2ce8e5bbccde25c69c178692c55655b308a69d5b438cc31dffad694c9f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13
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