[feat] Support building wheels on aarch64 (#92)
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.
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>
Prerequisites for building PemJa:
NOTE for windows:
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
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"))
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
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
Java Maven Dependency
Installation from sources
Prerequisites for building PemJa:
NOTE for windows:
pip install dist/$packageName$Usage
Documentation
How To Contribute