新聞中心
Python 編程語言是一個真正面向?qū)ο笳Z言的成果,但 Barry Warsaw 和 Finn Bock 是當(dāng)前兩名最活躍的 JPython 開發(fā)者。不幸的是,JPython 最初的開發(fā)者 Jim Hugunin 不再從事其開發(fā)了。

David Mertz:究竟什么是 JPython?Barry Warsaw:我將用標(biāo)準(zhǔn)的營銷說法來回答這個問題。JPython 是 Python 編程語言的 100% 純 Java 實現(xiàn)。它可以讓用戶將 Python 源代碼編譯成 Java 字節(jié)碼,并在任何 Java 虛擬機上運行產(chǎn)生的字節(jié)碼。它是與 Java 的最無縫最平滑的集成。
您可以從 Python 訪問所有 Java 庫、構(gòu)建 Applet、與 Java Bean 集成以及從 Python 中的 Java 類創(chuàng)建子類,反之亦然。JPython 類似于 Python 而不象 Java,它可以交互使用;只需在提示上輸入一些 JPython 代碼就能立刻看到結(jié)果。
用更簡單的話來說,JPython 可以為任何一個您需要的 Java 代碼編寫腳本,這樣轉(zhuǎn)換出的代碼行數(shù)比原來要少上 2 到 10 倍。因為 Python 是動態(tài)輸入的語言,所以可以更快速地開發(fā)錯誤更少的應(yīng)用,并得到靈活得多的程序。
Mertz:有關(guān) JPython 的開發(fā)是如何開始的呢?Warsaw :Python 編程語言是由 Jim Hugunin 發(fā)明的,他現(xiàn)在為 Xerox PARC 的 Aspect Oriented Programming 項目工作。我了解 Jim,他可能主要是對挑戰(zhàn)感興趣。Python 領(lǐng)域中有許多人都認為這是不可實現(xiàn)的。Guido 自己就是一個懷疑論者。Jim 證明他們都錯了!
那么既然遇到挑戰(zhàn),為什么還要繼續(xù)開發(fā) JPython 呢?因為它是大多數(shù) Java 程序員不太了解的最有價值的 Java 工具。到目前為止!Mertz:您認為是什么刺激了 JPython 的需求?Warsaw :首先必須理解 JPython 不是 Java 的競爭對手;而是對它的最好補充。Java 是靜態(tài)輸入的編譯語言。
這確保了庫的輸入很安全并且執(zhí)行速度更快。有一個現(xiàn)象很有趣,就是盡管它是字節(jié)碼翻譯的,但大多數(shù)人還是將 Java 看作一個傳統(tǒng)的“編寫-編譯-運行-編輯”的程序。當(dāng)然。
Java 利用了軟件世界的絕大部分,因此對于 Java 程序員有許多資源可用。但相同的靜態(tài)輸入和傳統(tǒng)的編程周期在人力資源方面增加了 Java 應(yīng)用開發(fā)的成本。Python 在這方面絕對勝出。
因為 Python 是一種小而簡單的語言,所以非常易于掌握。大多數(shù)有經(jīng)驗的程序員可以在大約一天的時間內(nèi)就學(xué)習(xí)到足夠的 Python 知識來提高生產(chǎn)力。Python 的設(shè)計思想就是代碼的讀比寫要多得多。因此 Python 源代碼易于在大型團體項目中共享。
但更重要的是,Python 是非常高級的動態(tài)輸入型語言。這表現(xiàn)在大大節(jié)約了執(zhí)行任務(wù)所需的代碼數(shù)量。因為使用 Python 所寫的代碼行數(shù)較少,可以寫得更快,錯誤更少。對于快速應(yīng)用開發(fā)這簡直太棒了。
Python 還提供一個交互式解釋器,這意味著您可以坐在解釋器提示,導(dǎo)入 Java 代碼,創(chuàng)建 Java 類實例,進行方法調(diào)用等等,所有這些都是交互式的。這在訓(xùn)練程序員如何使用公司 Java 庫或者試驗新 Java API 時是一種絕佳工具。但以我拙見,所有程序員都應(yīng)該備有 CPython 和 JPython。
Mertz :照您看,JPython 比 Python 編程語言好在哪里呢?Bock :JPython 提供了對其底層實現(xiàn)語言的完整訪問。在大多數(shù)(可能所有)基于 C 的腳本語言中,C 函數(shù)必須封裝在用來將 C 函數(shù)暴露給腳本語言的一層簡單的代碼中。
這里存在一些好的工具,例如 SWIG,來將這個封裝器代碼的創(chuàng)建自動化。但 JPython 根本就不需要封裝器。所有曾經(jīng)編寫過的 Java 代碼都可直接從 JPython 使用,集成是雙向的。#t#
以 JPython 定義的類和實例可以傳遞給 Java,就如同它們是一般的 Java 類和實例那樣(它們也確實如此)。
嵌入/擴展 API 使從應(yīng)用程序或模塊中對 JPython 對象的訪問相當(dāng)精確。
這一優(yōu)點部分來自于 JPython 和 Java 都是面向?qū)ο蟮恼Z言這一事實。Jim 利用了該事實的這一重要優(yōu)點。
Warsaw :CPython 欠缺的是對世界上大量 Java 代碼的訪問。
如果需要使用 Java 庫,JPython 就是答案。反過來說,當(dāng)然,JPython 也沒有對世界上所有現(xiàn)有 C 庫的簡易訪問。Finn 已完成了通過 JNI 集成如 Tkinter 和 POSIX 模塊這類事物的工作,但那些在 JPython 中總是非標(biāo)準(zhǔn)的,因為我們希望保留 100% 純 Java 認證。
網(wǎng)頁名稱:對Python 編程語言進行入門之談
URL地址:http://fisionsoft.com.cn/article/dhgsgoj.html


咨詢
建站咨詢
