Cómo usar JPype en Python para compartir instancias de llamadas a Java
1. Introducción a JPype
¿Qué es 1. ¿Tipo J?
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.
¿Cuál es la diferencia entre 2.2. JPype y Jython (¿sucesor de Jython (JPython)?
1) tienen diferentes entornos de ejecución: 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 uno se inicia durante el proceso de ejecución. JVM integrada;
2) Diferentes usuarios: jython es para programas java y JPype es para programadores de Python.
Segundo, 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.
Tres. Instrucciones para usar JPype
1. Iniciar JVM
La función de startJVM() proporcionada por JPype es iniciar la máquina virtual JAVA, por lo que se debe llamar a este método antes de llamar a cualquier JAVA posterior. código para iniciar la máquina virtual JAVA.
Definición de jpype.startJVM()
parámetros startjvm (JVM, *args) de jpype. startjvm()
Parámetro 1: jvm, describe la ruta del archivo jvm.dll en su sistema, como "C: Archivos de programa ibmjava 50 jreinj 9 VM JVM. dll". Puede obtener la ruta JVM predeterminada llamando a jpype.getDefaultJVMPath().
Parámetro 2: args, parámetros opcionales, JPype los pasará directamente a la JVM como parámetros de inicio de la máquina virtual Java. Esto se aplica a todos los parámetros legales de inicio de JVM, por ejemplo:
-agentlib:libname[=options]
-classpath
-verbose
-Xint 2. Apague la JVM.
Cuando haya terminado de usar la JVM, puede apagarla a través de jpype.shutdownJVM(), que no tiene parámetros de entrada. Cuando el programa Python sale, la JVM se cerrará automáticamente.
3. Consulte paquetes de extensión de Java de terceros
Muchas veces es necesario llamar a paquetes de extensión de Java de terceros en proyectos de Python, lo cual también es un uso importante de JPype.
Al agregar: -DJ ava . class path = ext _ class path en los parámetros de inicio de JVM, puede usar código Python para llamar al paquete de extensión Java existente.
4. Acceder 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:
-d propiedad=valor cuarto, p.e. p>
1. Llame a la API de JAVA directamente
Importar * desde jpype
Importar os.path
iniciar JVM(" C:/Java /JDK 1 . 6 . 0 _ 10/JRE/bin/client/JVM . dll ", "-ea ")
Java . idioma . system . out . println(" hola mundo ") p>
Cerrar JVM()2. Llame al paquete de extensión de terceros 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 sayHello(String user){
Devuelve "Hola" usuario; p>
}
public int calc(int a, int b){
Devuelve a b;
}
} 2) Python llama al programa de paquete jar JAVA de terceros.
Importar * desde jpype
Importar os.path
ruta jar = ruta OS . 'F:/sample_Py/')
iniciar JVM(" C:/Java/JDK 1 . 6 . 0 _ 10/JRE/bin/client/JVM . dll ", "-ea ", " -djava . class . ruta = s " (ruta jar ' jpypedemo . jar '))
#Iniciar JVM en #ubuntu ("/home/geek/Android/JDK 1 . 6 . 0 _ 43 / JRE/lib/i386/server/lib JVM entonces ", "-ea ", "-DJ ava class .
jd = JDClass()
# jd = jpackage ("jpypepe "). jpypedemo () #Dos formas de crear JD
jprint = Java. . sistema . println
jprint(jd.sayHello("waw "))
jprint(jd.calc(2, 4))
Cerrar JVM()3. Acceda a las propiedades del sistema de 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
ruta JVM = jpype getdefaultjvm path()
JVM. arg = "-DyourProperty = tu valor "
Si no es jpype.isJVMStarted():
JYPE. startjvm (jvmpath, jvmArg)2) Ejemplo de configuración de variables del sistema en el programa.
Importar jpype
prop = "tu propiedad"
valor = "tu valor"
system = jpype. JClass('java.lang.System ')
System. setproperty (str (prop), str (valor)) 3) Ejemplo de obtención de variables del sistema en el programa.
Importar jpype
prop = "tu propiedad"
system = jpype. JClass('java.lang.System ')
valor = sistema .getproperty(str(prop))