Ejemplo compartido de cómo usar JPype para llamar a Java en Python
Este artículo presenta principalmente el ejemplo de JPype llamando a JAVA en Python. El editor cree que es bastante bueno, así que lo compartiré con ustedes ahora y lo daré como referencia. Sigamos al editor y echemos un vistazo
1 Breve introducción a JPype
1 ¿Qué es JPype?
JPype es una herramienta que permite que el código Python llame fácilmente al código Java, superando así las deficiencias de Python en ciertas áreas (como la programación del lado del servidor).
2. ¿Cuál es la diferencia entre JPype y Jython (el sucesor de JPython)?
1) El entorno de ejecución es diferente: jython se ejecuta en jvm, mientras que el entorno de ejecución real de JPype sigue siendo el tiempo de ejecución de Python, pero se inicia una jvm integrada durante la operación.
2) Los usuarios son diferentes: jython es para programas java y JPype es para programadores de Python.
2. Instalación de JPype
1. Instale Python2.7 y JAVA1.6 primero
2. Instale JPype-0.5.4.2.win32-py2.7 .exe(/projects/jpype/files/JPype/0.5.4/)
3. Comando de instalación de Ubuntu12.04: sudo apt-get install python-jpype
3. Instrucciones de uso
1. Inicie JVM
La función startJVM() proporcionada por JPype se utiliza para iniciar la máquina virtual JAVA, por lo que debe llamarse antes de llamar a cualquier código JAVA posterior. El método inicia la máquina virtual JAVA.
Definición de jpype.startJVM()
startJVM(jvm, *args) Parámetros de jpype.startJVM()
Parámetro 1: jvm, describe tu sistema La ruta donde se encuentra el archivo jvm.dll, como "C: Archivos de programaIBMJava50jreinj9vmjvm.dll". La ruta JVM predeterminada se puede obtener llamando a jpype.getDefaultJVMPath().
Parámetro 2: args es un parámetro opcional y JPype lo pasará directamente a JVM como parámetro de inicio de la máquina virtual Java. Todos los parámetros legales de inicio de JVM se aplican aquí, por ejemplo:
-agentlib:libname[=options]
-classpath classpath
-verbose
-Xint 2. Apague la JVM
Después de usar la JVM, puede apagar la JVM a través de jpype.shutdownJVM(). Esta función no tiene parámetros de entrada. Cuando el programa Python sale, la JVM se cerrará automáticamente.
3. Referencia a paquetes de extensión Java de terceros
Muchas veces, es necesario llamar a paquetes de extensión Java de terceros en proyectos de Python, lo cual también es un uso importante de JPype.
Al agregar: -Djava.class.path=ext_classpath al parámetro de inicio de JVM, puede llamar paquetes de extensión Java existentes en código Python.
4. Acceda a las propiedades del sistema JAVA
A veces, algunas aplicaciones Java necesitan configurar u obtener propiedades del sistema en la JVM.
Ejemplo de configuración de variables del sistema cuando se inicia JVM:
Agregue los siguientes parámetros a los parámetros de inicio de JVM:
-Dproperty=value 4. Ejemplo
1. Llame a la API de JAVA directamente
desde jpype import *
import os.path
startJVM("C:/Java/jdk1.6.0 _10/jre/bin/client/jvm.dll", "-ea")
java.lang.System.out.println("hola mundo")
shutdownJVM() 2. Llame al paquete de extensión de terceros de JAVA
1) Paquete jar de terceros personalizado de JAVA: empaquete la clase JpypeDemo en un archivo jpypedemo.jar y guárdelo en el directorio F:/sample_Py
paquete jpype;
clase pública JpypeDemo {
cadena pública decirHola(usuario de cadena){
devuelve "hola" usuario; p>}
public int calc(int a, int b){
return a b;
}
} 2) Python llama a un programa de paquete jar JAVA de terceros
desde jpype import *
import os.path
jarpath = os.path.join(os.path.abspath ('.' ), 'F:/sample_Py/')
startJVM("C:/Java/jdk1.6.0_10/jre/bin/client/jvm.dll", "-ea", "-Djava. class.path=s" (jarpath 'jpypedemo.jar'))
#ubuntu in startJVM("/home/geek/Android/jdk1.6.0_43/jre/lib/i386/ server/libjvm.so", "-ea", "-Djava.class.path=s" (jarpath 'XXX.jar'))
JDClass = JClass("jpype.JpypeDemo") p>
jd = JDClass()
#jd = JPackage("jpype").JpypeDemo() #Dos formas de crear jd
jprint = java.lang.System .out.println
jprint(jd.sayHello("waw"))
jprint(jd.calc(2, 4))
shutdownJVM() 3. Acceda a las propiedades del sistema JAVA
Suponga que la propiedad que desea establecer se llama yourProperty y el valor de la propiedad es yourValue.
1) Ejemplo de configuración de variables del sistema cuando se inicia JVM
importar jpype
jvmPath = jpype.getDefaultJVMPath()
jvmArg = " - DyourProperty=yourValue ”
si no jpype.isJVMStarted():
jpype.startJVM(jvmPath, jvmArg)2) Ejemplo de configuración de variables del sistema en el programa
importar jpype
prop = " tuPropiedad "
valor = " tuValor "
sistema = jpype.JClass('java.lang.System')
system.setProperty(str(prop), str(value))3) Ejemplo de obtención de variables del sistema en el programa
import jpype
prop = " yourProperty " p>
sistema = jpype.JClass('java.lang.System')
valor = system.getProperty(str(prop))