python可嵌入,python语言可以扩展和嵌入吗

  python可嵌入,python语言可以扩展和嵌入吗

  

  一、JPype简述

  1、JPype是什么?

  JPype是一个让python代码方便调用Java代码的工具,从而克服了python在某些领域的不足(比如服务器端编程)。

  2、JPype与Jython(JPython后继者)的区别?

  (1)运行环境不同:jython运行在jvm上,而JPype的实际运行环境仍然是python runtime,只是在运行过程中启动了一个嵌入式JVM;

  (2)用户不同:jython是针对java程序,JPype是针对python程序员。

  二、JPype安装

  1.首先安装Python2.7和JAVA1.6。

  2.安装JPYPE-0.5.4.2.Win32-py2.7.exe(http://SourceForge.net/projects/JPYPE/files/JPYPE/0.5.4/)

  3.Ubuntu12.04安装命令:sudo apt-get install python-jpype

  三、JPype使用说明

  1、启动JVM

  JPype提供的startJVM()函数用于启动JAVA虚拟机,所以在调用任何后续的JAVA代码之前,必须调用这个方法来启动JAVA虚拟机。

  JPYPE的定义。在启动JVM()

  Startjvm (jvm,* args)jpype。startjvm()的参数

  1: JVM,描述jvm.dll文件在你系统中的路径,比如“c : \ Program Files \ IBM \ Java 50 \ JRE \ Bin \ J9VM \ JVM . dll”。您可以通过调用jpype.getDefaultJVMPath()来获得默认的JVM路径。

  参数2: args,可选参数,将由JPype直接传递给JVM,作为Java虚拟机的启动参数。这适用于所有合法的JVM启动参数,例如:

  -agent lib : libname[=options]

  -classpathclasspath

  -冗长

  辛特2、关闭JVM

  当您使用完JVM后,可以通过jpype.shutdownJVM()关闭JVM,它没有输入参数。当python程序退出时,JVM将自动关闭。

  3、引用第三方Java扩展包

  很多时候需要调用python项目中的第三方Java扩展包,这也是JPype的一个重要用途。

  通过添加JVM启动参数:-DJ ava . class . path=ext _ class path,可以用python代码调用现有的java扩展包。

  4、访问JAVA的系统属性

  有时候,一些Java应用程序需要在JVM中设置或获取系统属性。

  JVM启动时设置系统变量的示例:

  将以下参数添加到JVM的启动参数中:

  -d property=四、举例

  >1、直接调用JAVA API

  

fromjpypeimport*

  importos.path

  startJVM("C:/Java/jdk1.6.0_10/jre/bin/client/jvm.dll","-ea")

  java.lang.System.out.println("helloWorld")

  shutdownJVM()

2、调用JAVA第三方扩展包

  (1)JAVA自定义第三方jar包:将JpypeDemo类打包为jpypedemo.jar文件并存储到F:/sample_Py目录下

  

packagejpype;

  

  publicclassJpypeDemo{

  publicStringsayHello(Stringuser){

  return"hello"+user;

  }

  publicintcalc(inta,intb){

  returna+b;

  }

  }

(2)Python调用第三方JAVA jar包程序

  

fromjpypeimport*

  importos.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、访问JAVA的系统属性

  假设你要设置的属性名为 yourProperty,属性值为 yourValue 。

  (1)JVM启动时设置系统变量示例

  

importjpype

  jvmPath=jpype.getDefaultJVMPath()

  jvmArg=“-DyourProperty=yourValue”

  ifnotjpype.isJVMStarted():

  jpype.startJVM(jvmPath,jvmArg)

(2)在程序中设置系统变量示例

  

importjpype

  prop=“yourProperty”

  value=“yourValue”

  system=jpype.JClass('java.lang.System')

  system.setProperty(str(prop),str(value))

(3)在程序中获取系统变量示例

  

importjpype

  prop=“yourProperty”

  system=jpype.JClass('java.lang.System')

  value=system.getProperty(str(prop))

盛行IT软件开发工作室,免费的在线学习python平台,欢迎关注!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • python语言基本语句用法总结大全,python语言基本语句用法总结怎么写
  • python语言基本语句用法总结大全,python语言基本语句用法总结怎么写,python语言基本语句用法总结
  • python是一种什么类型的计算机语言,python语言是一种什么类型的编程语言
  • Python的保留字符,python语言中的保留字
  • python的指数e怎么表示,指数函数在python语言中怎么表示
  • python语言合法的变量命名,在python中变量的命名要注意哪些问题
  • python变量命名可以用中文吗,下面哪一个不是python语言合法的变量命名
  • Python分词库,用python语言中文分词第三方库jieba对文件data
  • python中复数类型的实部和虚部都是浮点数,python语言中,复数类型中实数部分和虚数部分
  • 用python语言判断一个数是否为素数,Python判断是不是素数
  • python语句变量命名规则,python语言命名变量规则
  • 简述python语言程序的特点,以下关于python语言技术特点
  • matlab中for循环的用法例子,python语言for循环语句
  • Python主网站,python语言的官方网站
  • 用python开发的软件有哪些,哪些工具可以使用python语言开发软件
  • 留言与评论(共有 条评论)
       
    验证码: