【问题标题】:What is Jython and is it useful at all? [closed]什么是 Jython,它是否有用? [关闭]
【发布时间】:2010-12-24 00:15:19
【问题描述】:

我知道 Python,但 Jython 是什么?

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

请详细说明!谢谢。

【问题讨论】:

    标签: java python jython


    【解决方案1】:

    引用Wikipedia:

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

    至于它可能有什么用途:

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

    对 Jython、IronPython 和 CPython 的性能测量表明,在某些大型数据集的情况下,Jython 和 IronPython 的性能都优于 CPython。

    【讨论】:

    • Jython 不像 Java 那样编译成字节码。字节码完成了 CPython 所做的所有美妙的动态运行时操作,因此比 Java 慢得多。
    【解决方案2】:

    如果您了解 Python 并且已经接受了“pythonic”的做事方式,那么 Jython 允许您将这种哲学带入 JVM 堆栈。如果你这样做,它不仅仅是添加脚本功能。

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

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

    您在生产力方面获得的收益远远超过了性能上的微小损失。

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

    最新的 JDK 以及像 Jetty 或 Tomcat 这样的容器都非常成熟和稳定,在许多情况下,在上面添加 Python 可以两全其美。

    【讨论】:

    • 不错的答案。我有一个现有的 Java 应用程序,并且想做一些文件解析,这在 Java 中可能很乏味。使用 Jython 可以让我使用 python 语法(file.read()、list.split() 等)进行解析吗?
    【解决方案3】:

    我什么时候需要 Jython?

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

    有什么缺点。

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

    我认为它很慢?

    与往常一样,这取决于您的特定用例。在某些情况下,它实际上可能比 CPython 更快;当然,这取决于您运行的特定 JVM - 这些都会变得更好。

    【讨论】:

      【解决方案4】:

      另外两个原因:

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

      【讨论】:

        【解决方案5】:

        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/

        【讨论】:

        【解决方案6】:

        我什么时候需要 Jython?

        例如,为您的代码添加漂亮的脚本语言。

        有什么缺点?

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

        还有一些深奥的模块不受支持。通常,您不会注意到和/或无法轻松找到 Java 替代品。

        我认为它很慢?

        与什么相比?通常,它要么足够快,要么如果不够快,您可以用大约 1000 行更快的 Java 替换几行 Python。

        【讨论】:

          【解决方案7】:

          我什么时候需要 Jython?

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

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

          此外,用 Jython 编写代码很有趣,而且您还可以学习一门新语言。

          Here is the details

          【讨论】:

            【解决方案8】:

            我什么时候需要 Jython?

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

            【讨论】:

              【解决方案9】:

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

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

              【讨论】:

                【解决方案10】:

                为了获得良好的速度性能或实现真正的多线程程序,直接从 java (native) 调用 python 脚本是最好的方法。只需准备好你的 python 脚本,然后让 java 完成其余的并发调用到你的 python 脚本中。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2010-09-06
                  • 1970-01-01
                  • 2014-02-03
                  • 2016-08-25
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-09-03
                  相关资源
                  最近更新 更多