Java Python能做什么,Jython做不到?

Java Python能做什么,Jython做不到?,java,python,jython,language-features,Java,Python,Jython,Language Features,我需要一个灵活的框架,我想尝试在框架的不同位置注入一些代码,以便动态地改变行为 因为这是一个Java项目,基本上我只限于界面和那些我认为可以让Jython运行的实现,看看这会带来什么 我的意思是,eval()是一个功能强大的函数,我可以将代码添加为字符串并对其进行求值,至少在Python中是这样,因为它基本上是编译成Java的 与Python相比,Jython有哪些限制?在Python中我能做什么在Jython中做不到的事情?考虑一下将Jython与Python进行比较,因为它们都是Python

我需要一个灵活的框架,我想尝试在框架的不同位置注入一些代码,以便动态地改变行为

因为这是一个Java项目,基本上我只限于界面和那些我认为可以让Jython运行的实现,看看这会带来什么

我的意思是,
eval()
是一个功能强大的函数,我可以将代码添加为字符串并对其进行求值,至少在Python中是这样,因为它基本上是编译成Java的


与Python相比,Jython有哪些限制?在Python中我能做什么在Jython中做不到的事情?

考虑一下将Jython与Python进行比较,因为它们都是Python,但一个是用c实现的,另一个是用Java实现的。因此,使用cpython,启动时间要快得多。如果您检查每个执行hello-world示例的启动时间,cpython执行代码的速度大约快50倍。Jython stable目前正在使用Python2.5,它比2系列中当前的Python2.7旧得多,而且它们没有python3的实现。因此,您可能会错过其中的一些功能

$ time jython -c "print 'hello'"
hello
real    0m1.641s
$ time python -c "print 'hello'"
hello
real    0m0.026s

正如前面的一篇文章所指出的,你真的想比较CPython和Jython。如前所述,Jython的稳定版本为2.5.3,alpha版本为2.7。这意味着Jython缺少某些功能。例如,从2.5开始,有序字典、计数器和命名元组都被添加到包中。使用Jython,您不能使用许多第三方Python库,如NumPy、SciPy、GeoDjango、Lxml或任何使用C扩展的库


另一方面,Jython有一些使用CPython无法找到的好处。使用Jython,您可以(例如Tomcat、WebLogic等)。您可以从Jython代码中调用现有的Java类

使用Jython,您将失去在cpython生态系统中使用许多包的能力,但您可以访问Java生态系统。因为您已经了解Java,所以这可能是一个可以接受的折衷方案。有关更多信息,请参阅Jython常见问题解答,尤其是Python可以使用getpass模块,而Jython不能。我将我所知道的内容放在后面,建议发布一个答案,更深入地讨论这一差异。@delnan--这是真的吗?就我而言,这个答案和StevenRumbalski在原始帖子上的精彩评论似乎涵盖了它。。。Python可以做版本2.6、2.7、3.0、…3.3中添加的任何事情,而Jython不能。Python的启动速度也更快,可以使用c扩展。还有什么(专业)?——像垃圾收集这样的小问题不太可能引起问这样问题的人的兴趣,我想…@mgilson当我发表评论时,答案仅限于“启动速度提高50倍”。我知道得稍微好一点。我认为StevenRumbalski的评论也很重要,但是这个答案不包含任何内容,我只讨论这个答案。而且,这些差异是我知道的,尽管我从未研究过,更不用说使用它了——我怀疑还有更多的差异。我不知道Django部署。谢谢