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