「大數據」(一百二十九)Python圖形用戶界面-Jython和Swing

【導讀:數據是二十一世紀的石油,蘊含巨大價值,這是·情報通·大數據技術系列第[129]篇文章,歡迎閱讀收藏】

1 基本概念

Jython 是一種可以把兩種不同的編程語言結合在一起的工具。首先,它使 Python 程序員介入到 Java 開發環境並讓他們能快速開發方案原型,以便無縫地集成到現有的 Java 平臺上。其次,它能在 Java 中加入腳本語言,並以此來簡化數計百萬計的 Java 程序員的工作。 Java 程序員們,再也不用為他們剛寫的一個類寫一大堆的測試用例或驅動程序。 Jython 提供了 Python 的大部分功能,以及實例化 Java 類並與 Java 類交互的功能。 Jython 代碼被動態地編譯成 Java 字節碼,因此,你可以用 Jython 擴展 Java 類。也可以用 Java 來擴展 Python 。在 Python 中寫一個類,像使用 Java 類一樣使用這個類是很容易的事情。你甚至可以把 Jython 腳本靜態地編譯為 Java 字節碼 。

2 術語解釋

2.1 Jython 和 Swing

Python 的 Java 實現,相比於 CPython ,它與 Java 語言之間的互操作性要遠遠高於 CPython 和 C 語言之間的互操作性。

在 Python 中可以直接使用 Java 代碼庫,這使得使用 Python 可以方便地為 Java 程序寫測試代碼,更進一步,可以在 Python 中使用 Swing 等圖形庫編寫 GUI 程序。

Jython 會將 Python 代碼動態編譯成 Java 字節碼,然後在 JVM 上運行轉換後的程序,這意味著此時 Python 程序與 Java 程序沒有區別,只是源代碼不一樣。

在 Python 中寫一個類,像使用 Java 類一樣使用這個類是很容易的事情。

你甚至可以把 Jython 腳本靜態地編譯為 Java 字節碼。

「大數據」(一百二十九)Python圖形用戶界面-Jython和Swing

2.2 函數和函數編程

Jython 與 Python 一樣有第一類函數。第一類函數是指能像變量一樣的可調用的對象。第一類函數在對事件處理和其他情況下有意義,這導致增加了 Java 內部類的功能。雖然 Java 的內部類與第一類函數類似,但它在方便性與靈活性方面有很大的不足,這是由於 Jython 中的第一類函數減少了 Jython 中的語法開銷。

Jython 也包括了所有函數編程所需要的工具。這意味著強制的面向對象的函數編程在 Jython 中得到支持。這顯然在教學上很有意義,它使 Jython 程序員能選擇最適合於特定問題的編程語言而不是由語言強加。函數化的工具如列表包含、 lambda 表單、 map 、 filter 和 reduce 也對減少代碼的行數、降低複雜性和名字重綁定數 ( 名字重綁定有很大副作用 ) 起到很大的作用。

2.3 寫一次,處處可用

由於 Jython 是用 Java 編寫的且由於其可編譯成 Java 字節碼,因此 Jython 也具有 Java 的“寫一次,處處可用”的特點。 Jython 能運行在任何可兼容的 Java1 . 1 ‘或更高的 Java 虛擬機 (JVM) 版本的平臺上。另外你可將 Jython 應用編譯成自足的字節碼,它能運行在任何兼容的 JVM 上。在 Linux 上編譯的應用能運行在有兼容 JVM 的任何其他平臺上。

2.4 對 Java 類的無縫存取

在 Java 中實現 Python 可以看到有趣的 Java 反射 API 的作用。反射使 Jython 能無縫地使用任何 Java 類。 Jython 從 CPython 中繼承了很多優點,但 CPython 不像別的專為 Python 所寫的一樣,在 C 和 Python 之間有一些問題限制了 C 庫函數的使用。在 Jython 中真正解決了這個問題,使其編程的效率和生產力得到了很大的提高。

由於與 Java 的無縫集成, Jython 能使任何部署了 Java 應用和框架的公司受益而不需要額外的工作。接受任何一種部門的編程語言,對任何一個公司而言都是不容易的,需要深思熟慮,因為這牽涉到整體結構、服務器和外圍的工具。 Jython 作為 Java 的一個無縫集成的語言,可以在已存在的 Java 應用上無縫增加而不需要重大抉擇。很多公司都花費了很多資金來建立 Java 的應用,這使採用 CPython 、 Perl 、 Ruby 、 PHP 和其他不能透明地集成已有 Java 實現的高級語言的效益降低,吸引力下降。而 Jython 有能力對已存在的 Java 框架進行補充,且二者能無縫地結合。


分享到:


相關文章: