很高兴给大家介绍一个 Pyjnius 项目。这是一个可以使用在桌面或Android上,用来访问Java类的Python库。
- 源代码:github.com/kivy/pyjnius
- 文档:pyjnius.readthedocs.org
也有其他一些的库,如 JPype 或 Py4j ,它们在设计和可用性方面都不是很好。而使用 Jython也不为另一种选择,因为我们想使用 python开发Android项目。
现在就让我来告诉你,如何简单的使用Pyjnius:
- >>> from jnius import autoclass
- >>> Stack = autoclass('java.util.Stack')
- >>> stack = Stack()
- >>> stack.push('hello')
- >>> stack.push('world')
- >>> stack.pop()
- 'world'
- >>> stack.pop()
- 'hello'
上面的代码中,我们使用 autoclass 函数,创建了一个类型代理,对应着Java中java.util.Stack类的所有方法和字段属性。
OK,也许你想要一个Android相关的例子,看这里:
- from jnius import autoclass
- from time import sleep
- MediaRecorder = autoclass('android.media.MediaRecorder')
- AudioSource = autoclass('android.media.MediaRecorder$AudioSource')
- OutputFormat = autoclass('android.media.MediaRecorder$OutputFormat')
- AudioEncoder = autoclass('android.media.MediaRecorder$AudioEncoder')
- # Record the Microphone with a 3GP recorder
- mRecorder = MediaRecorder()
- mRecorder.setAudioSource(AudioSource.MIC)
- mRecorder.setOutputFormat(OutputFormat.THREE_GPP)
- mRecorder.setOutputFile('/sdcard/testrecorder.3gp')
- mRecorder.setAudioEncoder(AudioEncoder.ARM_NB)
- mRecorder.prepare()
- # Record 5 seconds
- mRecorder.start()
- sleep(5)
- mRecorder.stop()
- mRecorder.release()
好了,你可以从文档中获取更多的例子。
我们已经可以映射Java/Python的类型,原生数组,支持方法重载等等。我们在内部使用的是 Cython + JNI,因此消耗性能是最小的。
同时, Python for android库已经完成,你可以从github中获取。
英文原文 , OSChina.NET翻译
【编辑推荐】
- JID 1.3.0 发布,高性能 Java 序列化库
- dispy 3.5 发布,Python并行计算框架
- Ubuntu用户的福音:基于Java开发的开源QQ客户端iQQ
- 为什么Java程序占用的内存比实际分配的多
- 基于C/S的网盘设计(Java)
推荐阅读
除非你生活中与世隔绝的深山老林里,否则你应该知道,在众多的所谓顶级编程高手(alpha geeks)中,函数式编程是十分盛行的。也许你已经使用了某种函数式编程语言。如果你是在使用很传统的编程语言,例如 Java 或 C#,>>>详细阅读
本文标题:如何使用Python访问Java类
地址:http://www.17bianji.com/kaifa2/Java/12322.html
1/2 1