什么是Jython,它有用吗?

时间:2009-12-07 13:08:41

标签: java python jython

我认识Python,但Jython是什么?

  • 我什么时候需要Jython?
  • 有什么缺点?
  • 我认为它很慢?

请详细说明!感谢。

10 个答案:

答案 0 :(得分:26)

引用Wikipedia

  

Jython,JPython的继任者,是用Java编写的Python编程语言的实现。

至于它可能有什么用途:

  

Jython程序可以无缝导入和使用任何Java类。除了一些标准模块,Jython程序使用Java类而不是Python模块。

Jython,IronPython和CPython的性能测量表明,对于某些拥有大型数据集的案例,Jython和IronPython都优于CPython。

答案 1 :(得分:9)

如果您了解Python并采用“pythonic”方式,那么Jython允许您将该原理带入JVM堆栈。如果你这样做,它不仅仅是添加脚本功能。

在我们的最新项目中,所有自定义和业务逻辑都是在Jython中构建的,同时我们仍然可以利用一些经过试验和测试的Java库,如Solr,Jasperreports,Quartz,Jetty,Velocity等等。

它确实被编译为字节码,但是,正在添加一个额外的层,但与使用ORM而不是直接的JDBC没有什么不同。

你所获得的生产力远远超过了表现中微不足道的损失。

在服务器端,Jython很少成为瓶颈。对于迷你桌面应用程序,可能存在问题,但很大程度上取决于您要执行的操作。

最新的JDK以及Jetty或Tomcat等容器非常成熟和稳定,在许多情况下,添加Python可以提供两全其美的优势。

答案 2 :(得分:6)

  

我什么时候需要Jython?

如果您想在Python中编程但需要(或希望)在Java虚拟机上运行结果,或者使用现有的Java组件。

  

有什么缺点。

Jython可能与Python不是100%兼容,但任何不兼容性都会被视为错误。如果您以后想要/需要在CPython上运行,则必须重写使用Java组件的任何代码。

  

我认为它很慢?

这一直取决于您的具体用例。在某些情况下,它实际上可能比CPython更快;当然这取决于你运行的特定JVM - 这些JVM一直在变得更好。

答案 3 :(得分:5)

另外两个原因:

  • 将脚本嵌入到大型Java应用程序中。
  • 使用Java线程在Jython中编写多线程程序。

答案 4 :(得分:4)

Jython是一个在JVM之上运行的Python实现。 从理论上讲,Jython有点慢,然后是CPython。

你可以在这里找到一些基准: http://www.smallshire.org.uk/sufficientlysmall/2009/05/22/ironpython-2-0-and-jython-2-5-performance-compared-to-python-2-5/

答案 5 :(得分:4)

  

我什么时候需要Jython?

例如,为代码添加一个很好的脚本语言。

  

有什么缺点?

主要缺点是Jython落后于官方CPython发行版。目前,您可以获得与Python 2.5.2兼容的Jython版本,而CPython是3.1。

也不支持一些深奥的模块。通常,您不会注意到和/或能够轻松找到Java替代品。

  

我认为它很慢?

相比什么?通常情况下,它要么足够快,要么它不是,你可以用大约1000行快得多的Java代替几行Python。

答案 6 :(得分:1)

我什么时候需要Jython?

您可以使用Jython为Websphere应用程序服务器编写管理脚本。这些脚本用于自动执行常见管理任务并在Websphere应用程序服务器中配置安全性。

WebSphere利用JMX API创建作为内部WebSphere对象的API公开的MBean。由于Jython脚本基于Java并且它们在JVM上运行,因此它们可以访问这些对象并可用于配置WebSphere。

此外,在Jython中编写代码并学习一门新语言很有趣。

Here is the details

答案 7 :(得分:1)

  

我什么时候需要Jython?

我需要Jython来测试JDBC驱动程序。我使用的一些应用程序使用ODBC,有些使用JDBC。使用Jython我可以从一个Python源测试这两种类型的驱动程序 (测试ODBC我使用JDBC-ODBC桥)。

答案 8 :(得分:0)

JVM做了一些不错的动态优化,但它可能没什么好兴奋的。 JRuby有时通过优化运行很多的代码路径在JVM(http://www.engineyard.com/blog/2009/j-is-for-jvm-why-the-j-in-jruby/)上运行得更快,但这是Ruby,而不是Python。

Java库是主要原因。很多公司都有大量的Java代码,可以用Python编写脚本。还有一些开源框架(Struts和Eclipse让人想起),您可以使用Jython编写脚本。

答案 9 :(得分:0)

要获得良好的速度性能或实现真正的多线程程序,最好直接从java(本机)调用python脚本。只需准备您的python脚本,然后让Java进行其余操作,以便同时调用python脚本。