作家
登录

如何使用Python访问Java类

作者: 来源: 2012-09-01 13:08:35 阅读 我要评论

很高兴给大家介绍一个 Pyjnius 项目。这是一个可以使用在桌面或Android上,用来访问Java类的Python库。

  • 源代码:github.com/kivy/pyjnius
  • 文档:pyjnius.readthedocs.org

也有其他一些的库,如 JPype 或 Py4j ,它们在设计和可用性方面都不是很好。而使用 Jython也不为另一种选择,因为我们想使用 python开发Android项目。

现在就让我来告诉你,如何简单的使用Pyjnius:

  1. >>> from jnius import autoclass  
  2. >>> Stack = autoclass('java.util.Stack')  
  3. >>> stack = Stack()  
  4. >>> stack.push('hello')  
  5. >>> stack.push('world')  
  6. >>> stack.pop()  
  7. 'world' 
  8. >>> stack.pop()  
  9. 'hello' 

上面的代码中,我们使用 autoclass 函数,创建了一个类型代理,对应着Java中java.util.Stack类的所有方法和字段属性。

OK,也许你想要一个Android相关的例子,看这里:

  1. from jnius import autoclass  
  2. from time import sleep  
  3.    
  4. MediaRecorder = autoclass('android.media.MediaRecorder')  
  5. AudioSource = autoclass('android.media.MediaRecorder$AudioSource')  
  6. OutputFormat = autoclass('android.media.MediaRecorder$OutputFormat')  
  7. AudioEncoder = autoclass('android.media.MediaRecorder$AudioEncoder')  
  8.    
  9. # Record the Microphone with a 3GP recorder  
  10. mRecorder = MediaRecorder()  
  11. mRecorder.setAudioSource(AudioSource.MIC)  
  12. mRecorder.setOutputFormat(OutputFormat.THREE_GPP)  
  13. mRecorder.setOutputFile('/sdcard/testrecorder.3gp')  
  14. mRecorder.setAudioEncoder(AudioEncoder.ARM_NB)  
  15. mRecorder.prepare()  
  16.    
  17. # Record 5 seconds  
  18. mRecorder.start()  
  19. sleep(5)  
  20. mRecorder.stop()  
  21. mRecorder.release() 

好了,你可以从文档中获取更多的例子。

我们已经可以映射Java/Python的类型,原生数组,支持方法重载等等。我们在内部使用的是 Cython + JNI,因此消耗性能是最小的。

同时, Python for android库已经完成,你可以从github中获取。

英文原文 , OSChina.NET翻译

【编辑推荐】

  1. JID 1.3.0 发布,高性能 Java 序列化库
  2. dispy 3.5 发布,Python并行计算框架
  3. Ubuntu用户的福音:基于Java开发的开源QQ客户端iQQ
  4. 为什么Java程序占用的内存比实际分配的多
  5. 基于C/S的网盘设计(Java)

  推荐阅读

  函数式编程是一个倒退

除非你生活中与世隔绝的深山老林里,否则你应该知道,在众多的所谓顶级编程高手(alpha geeks)中,函数式编程是十分盛行的。也许你已经使用了某种函数式编程语言。如果你是在使用很传统的编程语言,例如 Java 或 C#,>>>详细阅读


本文标题:如何使用Python访问Java类

地址:http://www.17bianji.com/kaifa2/Java/12322.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)