Maison  >  Article  >  développement back-end  >  Exemple de partage sur la façon d'utiliser JPype pour appeler Java en Python

Exemple de partage sur la façon d'utiliser JPype pour appeler Java en Python

黄舟
黄舟original
2018-05-25 16:14:034360parcourir

Cet article présente principalement l'exemple de JPype appelant JAVA en python. L'éditeur pense que c'est plutôt bien, je vais donc le partager avec vous maintenant et le donner comme référence. Venez jeter un œil avec l'éditeur

1. Brève introduction de JPype

1.

JPype est un outil qui permet au code python d'appeler facilement du code Java, palliant ainsi les lacunes de python dans certains domaines (comme la programmation côté serveur).

2. Quelle est la différence entre JPype et Jython (le successeur de JPython) ?

1) Différents environnements d'exécution : jython s'exécute sur jvm, tandis que l'environnement d'exécution réel de JPype est toujours un environnement d'exécution python, mais un jvm intégré est démarré pendant le fonctionnement

2 ) les utilisateurs ; sont différents : jython est destiné aux programmes Java et JPype est destiné aux programmeurs Python.

2. Installation de JPype

1. Installez d'abord Python2.7 et JAVA1.6

2. Installez JPype- 0.5.4.2.win32-py2.7.exe(http://sourceforge.net/projects/jpype/files/JPype/0.5.4/)

3. Commande d'installation Ubuntu12.04 : sudo apt- get install python-jpype

3. Instructions d'utilisation de JPype

1. Démarrez JVM

La fonction startJVM() fournie par JPype est utilisée pour démarrer la machine virtuelle JAVA, donc avant qu'un code JAVA ultérieur ne soit appelé, cette méthode doit être appelée pour démarrer la machine virtuelle JAVA.

Définition de jpype.startJVM()

startJVM(jvm, *args)

Paramètres de jpype.startJVM()

Paramètre 1 : jvm, décrivez jvm.dll dans votre système Chemin d'accès où se trouve le fichier, par exemple « C:Program FilesIBMJava50jrebinj9vmjvm.dll ». Le chemin JVM par défaut peut être obtenu en appelant jpype.getDefaultJVMPath().

Paramètre 2 : args, qui est un paramètre facultatif et sera transmis directement à la JVM par JPype comme paramètre de démarrage de la machine virtuelle Java. Tous les paramètres de démarrage légaux de la JVM conviennent ici, tels que :

 -agentlib:libname[=options] 
 -classpath classpath 
 -verbose 
 -Xint

2. Arrêtez la JVM

Après avoir utilisé la JVM, vous pouvez transmettre jpype.shutdownJVM () Pour arrêter la JVM, cette fonction n'a aucun paramètre d'entrée. Lorsque le programme Python se termine, la JVM s'arrêtera automatiquement.

3. Référencer des packages d'extension Java tiers

Souvent, des packages d'extension Java tiers doivent être appelés dans des projets Python, ce qui est également une utilisation importante. de JPype.

En ajoutant : -Djava.class.path=ext_classpath au paramètre de démarrage de la JVM, vous pouvez appeler les packages d'extension Java existants en code python.

4. Accédez aux propriétés du système JAVA

Parfois, certaines applications Java doivent définir ou obtenir des propriétés système dans la JVM.

  1. Exemple de définition de variables système au démarrage de la JVM :

  2. Ajoutez les paramètres suivants aux paramètres de démarrage de la JVM :

-Dproperty=value

4. Exemple

1. Appelez directement l'API JAVA

from jpype import * 
import os.path 
startJVM("C:/Java/jdk1.6.0_10/jre/bin/client/jvm.dll", "-ea") 
java.lang.System.out.println("hello World") 
shutdownJVM()

2. Package d'extension

1) Package jar tiers personnalisé JAVA : emballez la classe JpypeDemo sous forme de fichier jpypedemo.jar et stockez-le dans le répertoire F:/sample_Py

package jpype; 
 
public class JpypeDemo { 
public String sayHello(String user){ 
return "hello" + user; 
} 
public int calc(int a, int b){ 
return a + b;  
} 
}

2) Python call section Programme de package jar JAVA tiers

from 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 中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") 
jd = JDClass() 
#jd = JPackage("jpype").JpypeDemo() #两种创建jd的方法 
jprint = java.lang.System.out.println 
jprint(jd.sayHello("waw")) 
jprint(jd.calc(2,4)) 
shutdownJVM()

3. Accédez aux propriétés du système JAVA

Supposons que la propriété que vous souhaitez définir s'appelle yourProperty et que la valeur de la propriété soit yourValue.

1) Exemple de définition de variables système au démarrage de la JVM

import jpype 
 jvmPath = jpype.getDefaultJVMPath() 
 jvmArg = “ -DyourProperty=yourValue ”
 if not jpype.isJVMStarted(): 
  jpype.startJVM(jvmPath,jvmArg)

2) Exemple de définition de variables système dans le programme

import jpype 
 prop = “ yourProperty ”
 value = “ yourValue ”
 system = jpype.JClass('java.lang.System') 
 system.setProperty(str(prop),str(value))

3) Obtention de variables système dans le programme Exemple

import jpype 
 prop = “ yourProperty ”
 system = jpype.JClass('java.lang.System') 
 value = system.getProperty(str(prop))

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn