Jython的發(fā)展之道:性能,性能,性能!
Java做為一門編程語言正在老去,但Java平臺(tái)卻生命力越來越旺盛。事實(shí)上由于企業(yè)級(jí)開發(fā)對(duì)JVM的依賴與信任,很多語言都視JVM為走向企業(yè)級(jí)開發(fā)的重要步驟之一。在過去的幾年間有大量編程語言被“移植”到了Java虛擬機(jī)上,更有甚者單獨(dú)為JVM創(chuàng)建了為數(shù)眾多的語言。這包括Ruby(JRuby)、JavaScript(Rhino)、Groovy以及Python(Jython)。特別是Python在JVM上得到了蓬勃的發(fā)展,這都得益于最近Jython的前進(jìn)勢頭。
Jython是Python編程語言的一種實(shí)現(xiàn),運(yùn)行在JVM上。它擁有超過10年的歷史,然而大多數(shù)時(shí)間還是處于停滯不前的狀態(tài)。最近,Jython領(lǐng)域變得活躍起來,這也帶動(dòng)了Python在JVM上的發(fā)展。近日InfoQ的Craig Wickesser采訪了Jython的項(xiàng)目領(lǐng)導(dǎo)Frank Wierzbicki以了解Jython的當(dāng)前狀況以及JVM上的Python現(xiàn)狀。
過去一年多的時(shí)間里,Jython開始變得繁榮起來,你是怎么看待這一點(diǎn)的?
我認(rèn)為Jython 2.5(該版本的Jython對(duì)CPython的兼容性是最好的)實(shí)在是功不可沒。我們現(xiàn)在擁有的Python應(yīng)用和框架的數(shù)量都是前所未有的。比如說Django、Pylons以及Py2Web等等,SQLAlchemy 0.6很快也會(huì)與Jython協(xié)同工作了;除此以外,Twisted、TurboGears以及Grok上的工作也都在有條不紊地進(jìn)行當(dāng)中。所有這些都能訪問Java程序庫,就好像訪問本地Python一樣。
Sun Microsystems在Jython開發(fā)中扮演著什么角色?
Sun允許我全職負(fù)責(zé)Jython開發(fā)。我也對(duì)NetBeans團(tuán)隊(duì)做出了不少貢獻(xiàn),使得Python和Jython成為NetBeans IDE上的一等公民,而且還使得Jython、Django以及Pylons能與GlassFish協(xié)同工作。當(dāng)然了,這些團(tuán)隊(duì)也為Jython的開發(fā)做出了卓越的貢獻(xiàn)。
Jython 2.5最重要的變化是什么?
Jython 2.5的關(guān)注點(diǎn)在于讓Jython成為現(xiàn)代化、兼容于CPython、卓越的Python實(shí)現(xiàn)。我們使勁渾身解數(shù)讓盡可能多的純Python框架和應(yīng)用能夠正常運(yùn)行,但卻沒有把太多精力放在性能調(diào)優(yōu)上,這是接下來要做的事情,換句話說,我們要使Jython的性能與CPython有一拼。
Jython 2.6的路線圖如何?
我們現(xiàn)在將大部分精力都放在了性能上,同時(shí)還在不斷增加新的特性。比如,我們計(jì)劃改進(jìn)與Java程序庫的集成,尤其是需要替換掉Jython 2.2.x中一個(gè)名為“jythonc”的工具,該工具使得我們可以方便地實(shí)現(xiàn)某些Java集成并將結(jié)果打包為jar(一種Java分發(fā)格式)。由于內(nèi)部設(shè)計(jì)的原因,jythonc還無法支持某些新的Python特性。我們確信還會(huì)有越來越多的應(yīng)用和框架將運(yùn)行在Jython上。我們期待這一天的到來:一旦應(yīng)用無法運(yùn)行在Jython上,那將是應(yīng)用本身的bug而絕非Jython的問題。
還會(huì)有Jython3k么?
當(dāng)然了!3.0是Python的未來,也是Jython的未來。坦白地說,我們還沒有開始Jython3k的開發(fā)工作,但我希望一旦2.6發(fā)布后我們將會(huì)認(rèn)真考慮這個(gè)問題。之所以等待2.6的發(fā)布是因?yàn)橛糜趯ython 2移植到Python 3上的工具需要2.6作為起始點(diǎn)。
你認(rèn)為會(huì)有人用Jython開發(fā)企業(yè)應(yīng)用么?
我聽說有人已經(jīng)將包含Pylons或Django的WAR文件放到了產(chǎn)品中,還聽說某些網(wǎng)上商店發(fā)現(xiàn)Jython與JDBC的集成在某些情況下要比CPython的數(shù)據(jù)訪問更棒。Jython 2.5是個(gè)現(xiàn)代化的Python,在很多情況下都是非常不錯(cuò)的選擇。
我不知道一般人是否了解Jython的歷史——其首個(gè)版本發(fā)布于1998年7月。那時(shí)除了Java,Jython就是JVM上功能特性最全面的編程語言了。因此企業(yè)實(shí)際上已經(jīng)使用Jython很長時(shí)間了。比如IBM WebSphere和Oracle WebLogic就使用Jython作為管理腳本語言。
你如何看待JVM上的Python現(xiàn)狀?
對(duì)于JVM上的Python來說現(xiàn)在的一切都是非常美好的。由John Rose領(lǐng)導(dǎo)的Da Vinci Machine項(xiàng)目正致力于讓JVM成為動(dòng)態(tài)語言的最佳歸宿。這項(xiàng)工作現(xiàn)在也已經(jīng)融合到JDK 7中了,一旦我們可以利用這項(xiàng)工作的成果那Jython的執(zhí)行效率就將得到極大的改進(jìn)。目前我正在編寫一個(gè)Jython原型以利用該工作的成果。
【編輯推薦】