2009-12-07 21 views

回答

24

報價Wikipedia

的Jython,JPython的接班人,是用Java編寫的Python編程語言的實現。

至於什麼使用它可能有:

Jython的程序可以無縫地導入和使用任何Java類。除一些標準模塊外,Jython程序使用Java類而不是Python模塊。

Jython,IronPython和CPython的性能測量結果顯示,Jython和IronPython在某些大數據集情況下的性能優於CPython。

+5

Jython不會像Java那樣編譯爲字節碼。字節碼完成了CPython所做的所有奇妙的動態運行時事情,因此比Java慢得多。 – orip 2009-12-07 13:24:42

3

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/

+1

後續文章也很有趣:http://www.smallshire.org.uk/sufficientlysmall/2009/05/22/ironpython-hammers-cpython-when-not-mutating-class-attributes/ – 2009-12-07 13:24:00

+0

現在我們知道Jython在某些基準測試中,它比CPython漸近地快。 – u0b34a0f6ae 2009-12-07 14:21:26

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 spring),您可以使用Jython編寫腳本。

6

我什麼時候需要Jython?

當您想用Python編程但需要(或希望)在Java虛擬機上運行結果或使用現有的Java組件時。

有什麼缺點。

Jython可能不與Python完全兼容,但任何不兼容性都將被視爲錯誤。如果您以後想要/需要在CPython上運行,則任何使用Java組件的代碼都必須重寫。

我認爲它很慢?

這取決於您的特定用例。在某些情況下,它實際上可能比CPython快;當然這取決於你運行的特定的JVM--這些都會越來越好。

3

我什麼時候需要Jython?

例如爲您的代碼添加一個很好的腳本語言。

有什麼缺點?

主要缺點是Jython滯後於官方CPython發行版。目前,您可以獲得與Python 2.5.2兼容的Jython版本,而CPython的版本爲3.1。

還有一些深奧的模塊不支持。通常,您不會注意到和/或能夠輕鬆找到Java替代品。

我認爲它很慢?

相比什麼?通常,它的速度足夠快,或者,如果不是,可以用大約1'000行更快的Java替換幾行Python。其他

3

兩個原因:

  • 腳本嵌入到大型的Java應用程序。
  • 使用Java線程在Jython中編寫多線程程序。
1

我什麼時候需要Jython?

您可以使用Jython編寫Websphere應用程序服務器的管理腳本。這些腳本用於自動執行常見的管理任務並在Websphere應用程序服務器中配置安全性。

WebSphere利用JMX API創建作爲內部WebSphere對象的API公開的MBean。由於Jython腳本基於Java並且在JVM上運行,因此可以訪問這些對象並可用於配置WebSphere。

除此之外,在Jython中編寫代碼並學習一種新語言很有趣。

Here is the details

0

我什麼時候需要Jython的?

我需要Jython來測試JDBC驅動程序。我使用的一些應用程序使用ODBC,一些使用JDBC。使用Jython我可以從一個Python源測試兩種類型的驅動程序 (用於測試ODBC我使用JDBC-ODBC橋)。

7

如果您瞭解Python併購買了「pythonic」處理方式,那麼Jython允許您將該理念帶入JVM堆棧。如果你這樣做,它不僅僅是添加腳本功能。

在我們最新的項目中,所有的自定義和業務邏輯都是用Jython構建的,同時我們仍然可以利用Solr,Jasperreports,Quartz,Jetty,Velocity等一些偉大的久經考驗的Java庫來命名少數。

它確實被編譯爲字節碼,但是正在添加一個額外的層,但與使用ORM而不是直接JDBC的例子不同。

您在生產力方面所獲得的收益遠遠超過了在性能上損失的微不足道。

在服務器端,Jython很少是瓶頸。對於迷你桌面應用程序,可能存在問題,但非常依賴於您正在嘗試執行的操作。

最新的JDK,以及像Jetty或Tomcat這樣的容器都非常成熟和穩定,在許多情況下,在頂部添加Python是兩全其美的。

+0

很好的答案。我有一個現有的Java應用程序,並且想要做一些文件解析,這在Java中可能很乏味。可以使用Jython允許我使用python語法(file.read(),list.split()等)進行解析。 – 2017-11-20 22:07:12

相關問題