回答
報價Wikipedia:
的Jython,JPython的接班人,是用Java編寫的Python編程語言的實現。
至於什麼使用它可能有:
Jython的程序可以無縫地導入和使用任何Java類。除一些標準模塊外,Jython程序使用Java類而不是Python模塊。
Jython,IronPython和CPython的性能測量結果顯示,Jython和IronPython在某些大數據集情況下的性能優於CPython。
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/
後續文章也很有趣:http://www.smallshire.org.uk/sufficientlysmall/2009/05/22/ironpython-hammers-cpython-when-not-mutating-class-attributes/ – 2009-12-07 13:24:00
現在我們知道Jython在某些基準測試中,它比CPython漸近地快。 – u0b34a0f6ae 2009-12-07 14:21:26
的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編寫腳本。
我什麼時候需要Jython?
當您想用Python編程但需要(或希望)在Java虛擬機上運行結果或使用現有的Java組件時。
有什麼缺點。
Jython可能不與Python完全兼容,但任何不兼容性都將被視爲錯誤。如果您以後想要/需要在CPython上運行,則任何使用Java組件的代碼都必須重寫。
我認爲它很慢?
這取決於您的特定用例。在某些情況下,它實際上可能比CPython快;當然這取決於你運行的特定的JVM--這些都會越來越好。
我什麼時候需要Jython?
例如爲您的代碼添加一個很好的腳本語言。
有什麼缺點?
主要缺點是Jython滯後於官方CPython發行版。目前,您可以獲得與Python 2.5.2兼容的Jython版本,而CPython的版本爲3.1。
還有一些深奧的模塊不支持。通常,您不會注意到和/或能夠輕鬆找到Java替代品。
我認爲它很慢?
相比什麼?通常,它的速度足夠快,或者,如果不是,可以用大約1'000行更快的Java替換幾行Python。其他
兩個原因:
- 腳本嵌入到大型的Java應用程序。
- 使用Java線程在Jython中編寫多線程程序。
我什麼時候需要Jython?
您可以使用Jython編寫Websphere應用程序服務器的管理腳本。這些腳本用於自動執行常見的管理任務並在Websphere應用程序服務器中配置安全性。
WebSphere利用JMX API創建作爲內部WebSphere對象的API公開的MBean。由於Jython腳本基於Java並且在JVM上運行,因此可以訪問這些對象並可用於配置WebSphere。
除此之外,在Jython中編寫代碼並學習一種新語言很有趣。
我什麼時候需要Jython的?
我需要Jython來測試JDBC驅動程序。我使用的一些應用程序使用ODBC,一些使用JDBC。使用Jython我可以從一個Python源測試兩種類型的驅動程序 (用於測試ODBC我使用JDBC-ODBC橋)。
如果您瞭解Python併購買了「pythonic」處理方式,那麼Jython允許您將該理念帶入JVM堆棧。如果你這樣做,它不僅僅是添加腳本功能。
在我們最新的項目中,所有的自定義和業務邏輯都是用Jython構建的,同時我們仍然可以利用Solr,Jasperreports,Quartz,Jetty,Velocity等一些偉大的久經考驗的Java庫來命名少數。
它確實被編譯爲字節碼,但是正在添加一個額外的層,但與使用ORM而不是直接JDBC的例子不同。
您在生產力方面所獲得的收益遠遠超過了在性能上損失的微不足道。
在服務器端,Jython很少是瓶頸。對於迷你桌面應用程序,可能存在問題,但非常依賴於您正在嘗試執行的操作。
最新的JDK,以及像Jetty或Tomcat這樣的容器都非常成熟和穩定,在許多情況下,在頂部添加Python是兩全其美的。
很好的答案。我有一個現有的Java應用程序,並且想要做一些文件解析,這在Java中可能很乏味。可以使用Jython允許我使用python語法(file.read(),list.split()等)進行解析。 – 2017-11-20 22:07:12
- 1. 什麼是「argv」,它有什麼作用?
- 2. 什麼是Thread.CurrentPrincipal,它有什麼作用?
- 3. 什麼是newproxy,它有什麼用處?
- 4. 什麼是它不同的實現上(Jython/IronPython的/ pypy /等)與
- 5. numpy.random.seed()有什麼用處它有什麼區別嗎?
- 6. 什麼是HCC?它是病毒嗎?
- 7. STDERR?它是什麼?它有什麼共同用途?
- 8. Javascript「窗口」:它的目的是什麼?它有什麼作用?
- 9. 什麼是Autoconf?爲什麼人們使用它?我應該使用它嗎?
- 10. 什麼是PS3 Root密鑰/它有什麼作用/它是如何使用的?
- 11. 我的plist文件有問題嗎?但是它是什麼?
- 12. 什麼是鏡片使用/有用嗎?
- 13. 什麼是string array [] =「」;是什麼意思?爲什麼它有效?
- 14. 什麼是#nomacros(EP003),它還活着嗎?
- 15. PUM - 你知道它是什麼嗎?
- 16. JavaVM.framework。它是什麼?我怎麼用它?
- 17. Jython不能做什麼?
- 18. 什麼是Python元類有用嗎?
- 19. 什麼是推特:域名有用嗎?
- 20. 什麼是 - [NSString sizeWithFont:forWidth:lineBreakMode:]有用嗎?
- 21. 我有一個.c.save文件。它是什麼?它有什麼作用?
- 22. addEvents的要點/效用是什麼?它什麼時候有用?
- 23. 使用sha1(md5($ password))安全嗎?它有什麼區別嗎?
- 24. Mandrill應用程序 - 它是什麼,它的API key是什麼
- 25. enCapsa - 它是什麼和用於什麼?
- 26. 什麼是applescript,它用於什麼?
- 27. 張量:它是什麼,它與載體有什麼不同?
- 28. 有人可以告訴我它是什麼樣的加密嗎?
- 29. Alteryx是ETL工具嗎?它與SSIS有什麼不同?
- 30. 什麼是代理?它在Apache中是什麼?它有很多不同的含義嗎?
Jython不會像Java那樣編譯爲字節碼。字節碼完成了CPython所做的所有奇妙的動態運行時事情,因此比Java慢得多。 – orip 2009-12-07 13:24:42