【背景】
看到:
python(jython)与java结合实际中到底如何应用?
提到了Jython,看了看wiki的介绍:
说是GUI可以直接用Swing,AWT,SWT等。
所以,打算有空去试试这个Jython,去写个简单的GUI,试试效果如何。
【折腾过程】
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_installer。
所以重新去下载到jython-installer-2.5.3.jar,按照安装提示,双击jython-installer-2.5.3.jar,
然后一步步安装:
后来就安装完毕了。
Jython简介
然后接着是参考:
http://www.jython.org/currentdocs.html
看了:
大概明白了:
Jython出现的目的在于,让Python的模块,运行在JVM虚拟机上。
这样就使得如此强大通用的Python的库函数功能,都可以在Java中调用了。
而由于此移植工作,所涉及到的Python的库函数,和具体实现,基本没关系,所以也使得此移植成了可能。
Python和Jython基本都是一样的,最大不一样在于,Jython不支持C扩展(C Extension)。
因此,绝大多数的Python模块,除非其用到了C扩展,否则都可以实现,不经修改的,直接运行在Jython之上。
目前的理解是:
本身java代码 + JVM -> 可以正常运行;
用Python代码写的Python的各个模块 + Jython + JVM -> 可以正常运行
折腾Jython的具体使用
1.再去参考
貌似,最简单的用法就是:
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 https://www.crifan.com/how_to_do_python_development_under_windows_environment 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 operable program or batch file. |
所以,看来需要添加环境变量。
2.参考:
去把JYTHON_HOME设置好:
然后重新去命令行中运行,看看效果,结果错误依旧,还是找不到jython。
刚刚发现,原来jython安装根目录:
D:\tmp\dev_install_root\jython2.5.3
中已经有了对应的:
jython.bat
以及bin目录下,也有对应的jython.bat,所以,看来还是要去添加bin目录到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, ‘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