Maison > Article > développement back-end > Exemple de partage sur la façon d'utiliser JPype pour appeler Java en Python
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.
Exemple de définition de variables système au démarrage de la JVM :
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!