摘要:本文主要向大家Python语言的JAVA胶水——jpype介绍了,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。
本文主要向大家Python语言的JAVA胶水——jpype介绍了,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。
Python的JAVA胶水——jpypepython可以作为一门胶水语言使用,可以用其它语言的优势来弥补自身如性能方面的不足,jpype就是在Python中使用jvm的第三方库文档在这里安装sudo pip jpype1 #注意后面有一个1,参考官网配置安装JAVA环境本文就不再赘述helloworld设置参数启动JAVA虚拟机运行JAVA代码关闭虚拟机#coding=utf=8import jpype
jvmPath = jpype.getDefaultJVMPath() # 获得系统的jvm路径jpype.startJVM(jvm=jvmPath) # 启动虚拟机# 执行JAVA代码jpype.java.lang.System.out.println("hello world")
jpype.shutdownJVM() # 关闭jvm-------------------------------------------hello world
JVM activity report :
classes loaded : 31JVM has been shutdown使用Java中的对象jpype还支持直接使用编译后的class文件,省去了编译这一环节。一下是原来的JAVA测试代码package com;public class JavaClass{
String value; public JavaClass(String value)
{
this.value = value+" Java";
}
public String getValue()
{
return this.value;
} public void say()
{
System.out.println("hello java");
} public static void main(String[] args) {
System.out.println("hello world");
}
}编译后产生JAVA字节码java -cp com com.JavaClass现在的文件结构如下./├── com│ └── JavaClass.class└── testJava.pyPython代码如下:#coding=utf=8import jpype
jvmPath = jpype.getDefaultJVMPath() # 获得系统的jvm路径# 启动虚拟机if not jpype.isJVMStarted():
jpype.startJVM(jvm=jvmPath)# 使用JAVA字节码中定义的类javaClass = jpype.JClass('com.JavaClass')# 实例化对象javaInstance = javaClass('test')#调用JAVA对象的方法print javaInstance.getValue()
javaInstance.say()# 关闭jvmjpype.shutdownJVM()-------------------------------------------test Java
hello java
JVM activity report :
classes loaded : 20JVM has been shutdown添加jar包原TestApi.java代码package test;
public class TestApi {
public String getData(String key){
return key;
}
public void printData(String key){
System.out.println(key);
}
public static void main(String[] args)
{
System.out.println(123);
}
}打包成jar后可以使用Python来调用#coding=utf-8import jpype
jvmPath = jpype.getDefaultJVMPath()# 用来添加JAVA虚拟机命令行参数ext_classpath = './TestApi.jar'jvmArg = '-Djava.class.path=' + ext_classpathif not jpype.isJVMStarted():
jpype.startJVM(jvmPath, jvmArg)
TA = jpype.JPackage('test').TestApi #这种用法可以简化后面的书写
jd = TA()
jd.printData('1234')
s = jd.getData('a') print s
system = jpype.java.lang.System #这里也是获得了System
system.out.println("call system method")
jpype.shutdownJVM()此例中,同时还使用了JAVA虚拟机启动时的命令行参数,可以订制启动方式小结jpype提供了强大而灵活的JAVA虚拟机接口,使得Python的扩展性进一步提升,Python的优雅语法,配上JAVA的工程化性能,可以使开发更加高效。
本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号