Python语言的JAVA胶水——jpype
小标 2018-11-14 来源 : 阅读 1127 评论 0

摘要:本文主要向大家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频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程