2008-11-24 52 views
13

背景在Jython上開發Django有問題嗎?

我建立在我自己的時間的朋友一個相當規模的網絡應用程序,我們已經決定去與Python的Django框架。 Django爲我們提供了很多我們需要的功能,所以請不要提供其他框架。

我遇到的麻煩,唯一的決定,是我們是否使用Python或Jython的開發我們的應用程序。現在我對Java很熟悉,可能會從JDK中的庫中受益。我知道最小的Python,但是我使用這個項目作爲學習一種新語言的機會 - 所以大部分工作都將用Python編寫。

Jython的吸引力當然是JVM。啓用python/django的web主機的數量極少 - 但我假設我可以在各種主機上放置jython/django應用程序。這不是一個大規模的設計決定,但我認爲還需要做出決定。我真的更喜歡jython而不是Python的jvm可訪問性。

問題

的Jython是否有很多的侷限性比一般蟒蛇?將在jython上運行django會導致問題? Jython團隊與Python一起發佈更新有多快?請問Django如何在Jython上做廣告(預配置非常少)?

決策

感謝您的有益的意見。我想我要做的就是在Jython中爲JVM支持開發 - 但只嘗試使用Python代碼/庫。可移植性不是一個主要問題,所以如果我需要JDK中的庫(python中不提供),我會使用它。只要Django得到完全支持,我很高興。

回答

3

Django的確實work on Jython,雖然你需要使用的Jython的開發版本,因爲技術上的Jython 2.5仍處於測試階段。但是,Django 1.0及更高版本應該不加修改地工作。

所以,你是否應該使用常規Python實現或Jython的,我會說這是你是否喜歡有所有的Java庫可用或所有的Python庫的問題。在這一點上,你可以期待Python標準庫中幾乎所有的東西都可以與Jython一起工作,但仍然有大量的第三方包不起作用,尤其是C擴展模塊。我個人建議使用常規的Python,但如果你有大量的JVM經驗並想堅持你所知道的,那麼我可以尊重它。

至於發現Python的託管,this page might be helpful

+0

可以使用load_library()從java內部加載python c擴展模塊,還是需要編寫一個薄包裝來將它們移植到端口上? – 2008-11-24 14:43:06

0

Django應該是jython兼容的sinc版本1.0。

This tutorial有點過時,但是從那裏,你可以看到有沒有什麼特別的問題。

3

我會說,如果你喜歡的Django,你也像Python。在學習新語言的過程中,不要犯(過於常見)混淆語言經驗的錯誤。只有在掌握Python之後,您纔有經驗來判斷混合語言是否比任何一種都好。

這是真的,很少有便宜hostings提供Django的預裝;但這很有可能會改變,因爲它是Google應用引擎最相似的環境。(大多數GAE項目可以在Django上運行)

1

我最近開始在業餘時間開發一個開源桌面項目。所以這可能不適用。我也遇到了同樣的問題。我決定儘可能在python(和Django)中編寫儘可能多的代碼,並將所有平臺的CPython,Jython和IronPython作爲目標。

然後,我決定編寫可以在不同實現(例如,不同的GUI庫)上與庫接口的插件。

爲什麼?我早就決定,我的代碼的長久性可能取決於不僅針對CPython而且針對虛擬機。對於今天的目的,CPython是因爲速度而走的路,但誰知道明天。如果你的代碼足夠靈活,你可能不需要決定是否定位一個。

這種方法的缺點是你將有更多的代碼來創建和維護。