Jython入門指導(dǎo):語言特性簡介
Jython 是作為包含安裝程序的單個 Java 類文件而發(fā)布的。只要下載 jython-21.class 并將該文件放在 CLASSPATH 內(nèi),然后運(yùn)行 java jython-21 。選擇您要安裝的組件(在示例中,我選擇了所有缺省組件),接受其許可證(這是開放源碼 BeOpen/CNRI 許可證)并指定安裝目錄,之后安裝程序會完成其余安裝。
如果安裝時碰到問題,請參閱 Jython 網(wǎng)站上的安裝信息頁。對于 UNIX 平臺,您可能想將選擇的 Jython 安裝路徑添加到 PATH 環(huán)境變量。做為Jython入門指導(dǎo),現(xiàn)在只要輸入“jython”就可以運(yùn)行交互式 PATH :
清單 1. 運(yùn)行 Jython shell
- $ jython
- Jython 2.1 on java1.4.0_01 (JIT: null)
- Type "copyright", "credits" or "license" for more information.
- >>>
>>> 提示符允許您輸入命令并立即獲得結(jié)果。在 Java 編程中,每個程序都必須至少定義一個類。清單 2 演示了一個完整的 Java 程序,它用于將一條消息寫到屏幕:
清單 2. 完整的 Java 程序
- class App
- {
- public static void main(String args[])
- {
- System.out.println("I don't like spam!");
- }
- }
JPython 將這些行減少為:
清單 3. Jython 減少了 Java 代碼開銷
- >>> print "I don't like spam!"
- I don't like spam!
- >>>
print 關(guān)鍵字是重要的工具之一,特別是在交互式 shell 中,它會立即打印其參數(shù),并隨后向您返回 shell 提示符。不僅輸入和調(diào)試的代碼比較少,而且不必經(jīng)歷編譯/運(yùn)行周期就可以馬上獲得結(jié)果??梢砸淮未蛴《鄠€值,并象下面顯示的那樣輕松使用簡單的表達(dá)式:
清單 4. print 是一個重要的 Jython 工具
- >>> print "one plus one is", 1+1
- one plus one is 2
- >>>
Jython 表達(dá)式類似于 Java 表達(dá)式。 1+1 的結(jié)果是一個整數(shù),通過 print 它被強(qiáng)制轉(zhuǎn)換成字符串,并被并置到由逗號定界符指定的初始字符串。
通過使用 Jython,您甚至不需要什么工具就可以訪問標(biāo)準(zhǔn) Java 庫。以下示例訪問了 java.util.Random :
清單 5. 通過 Jython 訪問標(biāo)準(zhǔn) Java 庫
- >>> from java.util import Random
- >>> rng = Random()
- >>> i = rng.nextBoolean()
- >>> print i
- 1
- >>>
Jython 的 import 關(guān)鍵字與 Java 語言版本的相似之處在于它使一個模塊中的內(nèi)容可以為其它模塊所使用,但是語法和行為有所差別。
上面清單 5 中的示例使用了相關(guān)的 from 關(guān)鍵字以限制從 java.util 導(dǎo)入哪些符號。其后一行顯示了 Random 類實例的創(chuàng)建。正如您所看到的,不需要 new 關(guān)鍵字。
也不需要對保存新實例的變量進(jìn)行任何類型說明。這強(qiáng)調(diào)了 Jython 的一個重要簡化,而且這是其動態(tài)本性的一個優(yōu)點 ― 您不必再擔(dān)心數(shù)據(jù)類型定義了。
清單 5 中的下一行演示了方法調(diào)用,這與 Java 語言完全相同,只是沒有對結(jié)果進(jìn)行類型聲明。Java 代碼中的 nextBoolean() 是布爾值。Jython 2.1 沒有布爾類型(不過這可能會很快改變;Python 2.3 就添加了布爾類型),因此它替換為 0或 1這樣的整數(shù)。類似地,要調(diào)用希望使用布爾值的 Java 方法,就要傳遞滿足這些約束的整數(shù)值。
您也可以使用 import 關(guān)鍵字對導(dǎo)入的所有符號作全限定,如清單 6 所示:
清單 6. Import 對所有導(dǎo)入的符號名稱作了全限定
- >>> import java.util.Random
- >>> rng = java.util.Random()
- >>> print rng.nextFloat()
- 0.9567907452583313
- >>>
Jython 的浮點值與 Java 語言中的完全相同。以上便完成了Jython入門學(xué)習(xí)。
【編輯推薦】