成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JPython訪談錄:從JPython到Jython

開發 后端
本文是一篇訪談錄,是兩名當年最活躍的JPython開發者之間的對話。兩人從什么是JPython說起,并在最后闡述了各自對Jython未來的展望。

盡管 JPython 是一個真正面向社區的成果,但 Barry Warsaw 和 Finn Bock 是當前兩名最活躍的 JPython 開發者。不幸的是,JPython 最初的開發者 Jim Hugunin 不再從事其開發了。

David Mertz:究竟什么是 JPython?

Barry Warsaw:我將用標準的營銷說法來回答這個問題。

JPython 是 Python 編程語言的 100% 純 Java 實現。它可以讓用戶將 Python 源代碼編譯成 Java 字節碼,并在任何 Java 虛擬機上運行產生的字節碼。它是與 Java 的最無縫最平滑的集成。您可以從 Python 訪問所有 Java 庫、構建 Applet、與 Java Bean 集成以及從 Python 中的 Java 類創建子類,反之亦然。JPython 類似于 Python 而不象 Java,它可以交互使用;只需在提示上輸入一些 JPython 代碼就能立刻看到結果。

用更簡單的話來說,JPython 可以為任何一個您需要的 Java 代碼編寫腳本,這樣轉換出的代碼行數比原來要少上 2 到 10 倍。因為 Python 是動態輸入的語言,所以可以更快速地開發錯誤更少的應用,并得到靈活得多的程序。

Mertz:有關 JPython 的開發是如何開始的呢?

Warsaw :JPython 是由 Jim Hugunin 發明的,他現在為 Xerox PARC 的 Aspect Oriented Programming 項目工作。我了解 Jim,他可能主要是對挑戰感興趣。Python 領域中有許多人都認為這是不可實現的。Guido 自己就是一個懷疑論者。Jim 證明他們都錯了!

那么既然遇到挑戰,為什么還要繼續開發 JPython 呢?因為它是大多數 Java 程序員不太了解的最有價值的 Java 工具。到目前為止!

Mertz:您認為是什么刺激了 JPython 的需求?

Warsaw :首先必須理解 JPython 不是 Java 的競爭對手;而是對它的***補充。Java 是靜態輸入的編譯語言。這確保了庫的輸入很安全并且執行速度更快。有一個現象很有趣,就是盡管它是字節碼翻譯的,但大多數人還是將 Java 看作一個傳統的“編寫-編譯-運行-編輯”的程序。當然,Java 利用了軟件世界的絕大部分,因此對于 Java 程序員有許多資源可用。

但相同的靜態輸入和傳統的編程周期在人力資源方面增加了 Java 應用開發的成本。Python 在這方面絕對勝出。因為 Python 是一種小而簡單的語言,所以非常易于掌握。大多數有經驗的程序員可以在大約一天的時間內就學習到足夠的 Python 知識來提高生產力。Python 的設計思想就是代碼的讀比寫要多得多。因此 Python 源代碼易于在大型團體項目中共享。

但更重要的是,Python 是非常高級的動態輸入型語言。這表現在大大節約了執行任務所需的代碼數量。因為使用 Python 所寫的代碼行數較少,可以寫得更快,錯誤更少。對于快速應用開發這簡直太棒了。

Python 還提供一個交互式解釋器,這意味著您可以坐在解釋器提示,導入 Java 代碼,創建 Java 類實例,進行方法調用等等,所有這些都是交互式的。這在訓練程序員如何使用公司 Java 庫或者試驗新 Java API 時是一種***工具。

但以我拙見,所有程序員都應該備有 CPython 和 JPython。

Mertz :照您看,JPython 比 CPython 好在哪里呢?

Bock :JPython 提供了對其底層實現語言的完整訪問。在大多數(可能所有)基于 C 的腳本語言中,C 函數必須封裝在用來將 C 函數暴露給腳本語言的一層簡單的代碼中,這里存在一些好的工具,例如 SWIG,來將這個封裝器代碼的創建自動化。但 JPython 根本就不需要封裝器。所有曾經編寫過的 Java 代碼都可直接從 JPython 使用,集成是雙向的。以 JPython 定義的類和實例可以傳遞給 Java,就如同它們是一般的 Java 類和實例那樣(它們也確實如此)。

嵌入/擴展 API 使從應用程序或模塊中對 JPython 對象的訪問相當精確。這一優點部分來自于 JPython 和 Java 都是面向對象的語言這一事實。Jim 利用了該事實的這一重要優點。

Warsaw :CPython 欠缺的是對世界上大量 Java 代碼的訪問。如果需要使用 Java 庫,JPython 就是答案。反過來說,當然,JPython 也沒有對世界上所有現有 C 庫的簡易訪問。Finn 已完成了通過 JNI 集成如 Tkinter 和 POSIX 模塊這類事物的工作,但那些在 JPython 中總是非標準的,因為我們希望保留 100% 純 Java 認證。

Mertz:依您所見,JPython 的缺點有哪些呢?

Finn Bock :JPython 只提供對 Java 代碼的訪問,而不提供對所有現有 C 模塊的訪問。因此每個以 C 實現的 Python 模塊都必須用 Java 重新實現。而 CPython 則有許多模塊。

另外,對于嵌入/擴展 API,除了源代碼之外沒有任何文檔。

Mertz :您是否在尋找 JPython 優于純 Java 的優點?

Warsaw :我想我們已經談了許多這方面的內容。但現在讓我們談談 JPython 的性能問題。因為 JPython 實現了 Python 的動態語義,所有 JPython 帶有相當廣泛的運行時。這對于某些應用程序有性能影響。例如即時編譯器和 Hotspot 技術這樣的標準 Java 優化可以大大減輕這樣影響(八個月前的基準顯示,使用支持 JIT 的 JVM,JPython 1.1 可以達到,有時還會超過 CPython 1.5.2 速度)。我們將更新這些基準結果,并在推出 JPython 之后集中在性能問題上。

但與 CPython 一樣,您總能用 Java 重寫應用程序中的性能關鍵部分。

Mertz:您認為 JPython 的使用有多廣泛?

Warsaw :我想它的使用正在變得越來越廣泛。人們逐漸發現它對于技術成功非常關鍵。JPython 對于各種任務都有價值,從為最終用戶提供平易近人的腳本創建環境,到簡化為 Java 庫和應用程序創建測試框架。此時 JPython ***的遺憾就是它需要更多宣傳。我希望這篇文章能在這一方面提供幫助。

Mertz :您是否認為 JPython 是試圖跟上 CPython 的嘗試?

Bock :是的。現在,JPython 正嘗試趕上它。幾乎所有新的特性都首先添加到 CPython。(當然,JPython 確實在 CPython 之前具有字符串方法)。JPython 有不足之處是因為 CPython 比 JPython 有多 15 倍的核心開發者。但即使這樣,JPython 版本中存在 CPython 2.0 中幾乎所有新的特性。

但我認為實際上它們幾乎不相上下,即使在現實世界中,誰也不比誰好多少。

Warsaw :我堅決相信在語言級別上,JPython 和 CPython 應該完全兼容。在不可能的情況下,Guido 確定差異是否與實現相關,或者哪一種實現是“多錯”的。我希望看到 CPython 和 JPython 最終成為同等的,JPython 在某些方面推動 CPython 開發和 CPython 推動 JPython 開發一樣。

當前它的一個示例就是 Unicode 支持。JPython 已經是全部 Unicode 化了。另一個示例是類型/類劃分。在 CPython 中,您可以有一些內置類型,例如字符串、字典、列表和數。還有類和實例。內置類型不能繼承。更讓人困惑的一點是,實例既有類型又有類。首先彌補 JPython 中的這一缺憾更容易些,因為其面向對象實現。

Mertz :對于 JPython 和 CPython 之間的不兼容性您是怎么認為的?

Warsaw :在事物工作的方法上有許多細小的差異。它們都在 JPython 的文檔中進行了大致說明。某些作為提供語言定義的可接受差異分類,某些指出某個或其它實現應該被修正的地方。大多數都非常次要。

Bock :某些模塊還沒有或者無法以 JPython 實現。某些模塊又只能作為 JNI 模塊實現,類似的模塊在部署環境中是沒有用的。

Bock :實際上,當我移植自己的腳本和程序(與 IDLE、PySol 和 PMW 工具箱一起)時,我遇到的問題不是無用信息收集的隨機回收或缺少 _del_method。它們是其他人以前沒有遇到過的小問題,例如 CPython 行為。

Warsaw :下一個版本的 JPython 將與 Python 2.0 語言定義兼容,因此***的變化將在庫中。CPython 發行版中任何以純 Python 編寫的標準庫模塊都應該是可移植的。C 擴展模塊不行,除非它們特別通過 JNI 網橋集成或以 Java 重新實現。任何大量使用 Java API 的 JPython 應用程序在移植回 CPython 時都將經過一段艱難時期。

另一方面,兩種系統的庫中有許多公共功能。在有足夠深謀遠慮的前提下,可以將兼容性層構建到應用程序中。

Mertz :對于 JPython 今后的方向有什么想法嗎?

Warsaw :我們已經基于公用 JPython 1.1 發行版創建了 JPython 后繼者 "Jython"。這樣做是為了確保項目的長久性和穩定性。依據 CNRI 的 JPython 1.1.x 許可證實現了所有這些。我們將整個開發過程移到了 SourceForge,并使用對 CPython 非常合適的相同開放過程管理它。Finn 和我兩人無疑要參與 Jython 未來的開發;Jython 將使用 OSI 核準的 CPython 2.0 許可證發行。它與您將獲得的“正式”派生很接近,所以當前的 JPython 社區應該確信 Jython 與它永遠不會相差太多。我們希望它們最終都能遷移到 Jython。

現在代碼仍處在試驗階段,但 Finn 和我將為 Jython 2.0 發行版(已經包含了 Finn 的勘誤表)致力于建立幾個技術性里程碑。CPython 2.0 具有增強的指派和擴展打印等特性(很快還將帶有列表理解)。我們已集成了免費的 Apache Jakarta OROMatcher 代碼,消除了雙許可證的需要,并修正了許多錯誤。我不知道 Jython 2.0 的***個 alpha 發行版何時出現,但當前所有代碼都在 SourceForge CVS 樹中獲得。

【編輯推薦】

  1. Jython 2.5版本發布歷程
  2. Jython 2.2的新增特性及發布背景介紹
  3. Python和Jython的區別簡述
  4. Jython的安裝步驟(Jython2.1)
  5. 簡單的Jython連接數據庫的腳本
責任編輯:yangsai 來源: 網絡轉載
相關推薦

2009-03-04 09:17:47

GoogleChrome工程師

2012-12-13 23:01:02

云計算天地超云云箱

2022-08-26 07:26:03

技術人人生閱歷行業

2011-05-05 14:54:17

敏捷

2009-09-29 16:24:11

2010-10-14 20:36:47

敏捷

2011-08-16 09:09:04

jQuery

2009-09-18 12:32:28

Rasmus LerdPHP

2011-10-09 11:29:32

筆記本行情

2020-11-24 09:55:37

編程語言C ++Vasa

2022-05-06 19:04:25

開源

2009-09-28 15:28:07

Jython 2.5.

2011-10-09 10:34:35

筆記本評測

2014-06-11 17:13:59

LinuxLinux創造者

2022-07-01 18:30:32

架構IT人生

2022-03-25 19:03:07

IT人生開發

2022-03-10 10:08:07

程序員開發IT人生

2011-01-14 08:35:03

iPhoneiPad敏捷設計流程

2022-12-09 10:00:20

算法推薦模式

2015-02-28 14:43:43

醫療健康
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区 在线 | 日韩国产中文字幕 | 久久一久久 | 亚洲精品自在在线观看 | 精品国产一区三区 | 久久久成人动漫 | 日韩精品 电影一区 亚洲 | 精品一区二区三区入口 | 国产精品久久久久久久久久免费看 | 日本福利视频免费观看 | 日韩久久久久久 | 国产精品视频网 | 国产精品一码二码三码在线 | 亚洲毛片在线 | 国产电影一区二区 | 久久久高清 | 天天摸天天干 | 国产玖玖 | 日本欧美在线 | 精品九九九 | 日韩伦理一区二区 | 日日夜夜天天综合 | av在线天堂 | av黄色在线 | 亚洲精品免费视频 | 日韩一区二区三区在线看 | 红色av社区 | 成人激情视频免费在线观看 | 日韩不卡在线 | 91在线视频观看 | japanhdxxxx裸体 | 男人天堂网址 | 国产日韩一区二区三区 | 国产视频第一页 | 中文字幕亚洲区 | 精品免费国产一区二区三区四区 | 国产真实乱全部视频 | 91精品国产综合久久婷婷香蕉 | jav成人av免费播放 | 91在线看 | 亚洲电影成人 |