最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【记录】有空去试试Jython

Python crifan 6050浏览

【背景】

看到:

python(jython)与java结合实际中到底如何应用?

提到了Jython,看了看wiki的介绍:

Jython wiki

说是GUI可以直接用Swing,AWT,SWT等。

所以,打算有空去试试这个Jython,去写个简单的GUI,试试效果如何。

 

【折腾过程】

1.找到Jython主页,找到下载页面,跳转到

http://search.maven.org/#search|ga|1|g%3A%22org.python%22%20AND%20v%3A%222.5.3%22

随便下载了个.jar:

jython-2.5.3.jar

双击后,生成个cachedir文件夹。但是其他没任何反应了。

不知道如何使用。

2.还是要去官网看如何安装:

Jython Installation

才看到说明,原来是要下载jython_installer。

所以重新去下载到jython-installer-2.5.3.jar,按照安装提示,双击jython-installer-2.5.3.jar,

然后一步步安装:

install jython to select lan

license agreement for jython

install all for jython

select install path for jython

select home path for jython

install overview for jython

 

后来就安装完毕了。

Jython简介

然后接着是参考:

http://www.jython.org/currentdocs.html

看了:

The Jython Tutorial

大概明白了:

Jython出现的目的在于,让Python的模块,运行在JVM虚拟机上。

这样就使得如此强大通用的Python的库函数功能,都可以在Java中调用了。

 

而由于此移植工作,所涉及到的Python的库函数,和具体实现,基本没关系,所以也使得此移植成了可能。

Python和Jython基本都是一样的,最大不一样在于,Jython不支持C扩展(C Extension)。

因此,绝大多数的Python模块,除非其用到了C扩展,否则都可以实现,不经修改的,直接运行在Jython之上。

 

目前的理解是:

本身java代码 + JVM -> 可以正常运行;

用Python代码写的Python的各个模块 + Jython + JVM -> 可以正常运行

 

折腾Jython的具体使用

1.再去参考

Using Jython

貌似,最简单的用法就是:

jython myscript.py

所以,找到python脚本,比如之前:

【整理】【多图详解】如何在Windows下开发Python:在cmd下运行Python脚本+如何使用Python Shell(command line模式和GUI模式)+如何使用Python IDE

所用到的:

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Function:
【整理】【多图详解】如何在Windows下开发Python:在cmd下运行Python脚本+如何使用Python Shell(command line模式和GUI模式)+如何使用Python IDE
【整理】【多图详解】如何在Windows下开发Python:在cmd下运行Python脚本+如何使用Python Shell(command line模式和GUI模式)+如何使用Python IDE
Author: Crifan Li Version: 2012-12-06 """ import platform; pythonVersion = platform.python_version(); uname = platform.uname(); print "Just for demo how to do python development under windows:"; print "Current python version info is %s"%(pythonVersion); print "uname=",uname;

然后到命令行下面运行,结果没有找到jython:

D:\tmp\tmp_dev_root\python\tutorial_summary\how_to_dev_python>jython demoRunPythonUnderWindows.py

‘jython’ is not recognized as an internal or external command,

operable program or batch file.

所以,看来需要添加环境变量。

2.参考:

1.2. Environment variables

去把JYTHON_HOME设置好:

added jython_home into environment variable

然后重新去命令行中运行,看看效果,结果错误依旧,还是找不到jython。

刚刚发现,原来jython安装根目录:

D:\tmp\dev_install_root\jython2.5.3

中已经有了对应的:

jython.bat

以及bin目录下,也有对应的jython.bat,所以,看来还是要去添加bin目录到path中才行:

added jython_home into path

 

提示:

【记录】Notepad++存在一个bug:通过Open current dir cmd方式打开的cmd,无法自动更新环境变量

 

最后,终于可以正常运行了:

D:\tmp\tmp_dev_root\python\tutorial_summary\how_to_dev_python>jython demoRunPythonUnderWindows.py

*sys-package-mgr*: processing new jar, ‘D:\tmp\dev_install_root\jython2.5.3\jython.jar’

*sys-package-mgr*: processing new jar, ‘C:\Program Files\Java\jdk1.7.0_11\jre\lib\rt.jar’

*sys-package-mgr*: processing new jar, ‘D:\DevTool\DD_Parser\Parser\ANTLR\antlr\antlr-4.0-complete.jar’

*sys-package-mgr*: processing new jar, ‘C:\Program Files\Java\jdk1.7.0_11\jre\lib\resources.jar’

*sys-package-mgr*: processing new jar, ‘C:\Program Files\Java\jdk1.7.0_11\jre\lib\jsse.jar’

*sys-package-mgr*: processing new jar, ‘C:\Program Files\Java\jdk1.7.0_11\jre\lib\jce.jar’

*sys-package-mgr*: processing new jar, ‘C:\Program Files\Java\jdk1.7.0_11\jre\lib\charsets.jar’

*sys-package-mgr*: processing new jar, ‘C:\Program Files\Java\jdk1.7.0_11\jre\lib\jfr.jar’

*sys-package-mgr*: processing new jar, ‘C:\Program Files\Java\jdk1.7.0_11\jre\lib\ext\access-bridge-64.jar’

*sys-package-mgr*: processing new jar, ‘C:\Program Files\Java\jdk1.7.0_11\jre\lib\ext\dnsns.jar’

*sys-package-mgr*: processing new jar, ‘C:\Program Files\Java\jdk1.7.0_11\jre\lib\ext\jaccess.jar’

*sys-package-mgr*: processing new jar, ‘C:\Program Files\Java\jdk1.7.0_11\jre\lib\ext\localedata.jar’

*sys-package-mgr*: processing new jar, ‘C:\Program Files\Java\jdk1.7.0_11\jre\lib\ext\sunec.jar’

*sys-package-mgr*: processing new jar, ‘C:\Program Files\Java\jdk1.7.0_11\jre\lib\ext\sunjce_provider.jar’

*sys-package-mgr*: processing new jar, ‘C:\Program Files\Java\jdk1.7.0_11\jre\lib\ext\sunmscapi.jar’

*sys-package-mgr*: processing new jar, ‘C:\Program Files\Java\jdk1.7.0_11\jre\lib\ext\zipfs.jar’

Just for demo how to do python development under windows:

Current python version info is 2.5.3

uname= (‘Java’, ‘PC-CLI-1’, ‘1.7.0_11’, ‘Java HotSpot(TM) 64-Bit Server VM, 23.6-b04, Oracle Corporation’, ”, ”)

D:\tmp\tmp_dev_root\python\tutorial_summary\how_to_dev_python>

可以看出,其是先去找java的classpath,找到对应的jar包,然后慢慢去解析的。

其中,处理python代码的话,就是首当其冲的jython.jar了。

 

【总结】

之前,安装好了默认的windows平台的Python后,是通过:

python xxx.py

去通过,默认的,c语言版本的CPython,即python.exe去执行,去解析,python代码的。

 

现在,安装了jython后,通过

jython xxx.py

去通过,先调用Java版本的Python,Jython,即jython.jar,去解析python,然后转换成java所支持的字节码,最终调用java中的JVM,去执行python代码的

其中,此处的jython,windows下,是个对应的jython.bat,其中内部应该是对应的执行逻辑,调用对应的jar包去解析python的。

转载请注明:在路上 » 【记录】有空去试试Jython

86 queries in 0.430 seconds, using 19.26MB memory