JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Languages on JVM » Jython  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 支持一下!Jython特点简介!&简易安装
dorian

Dorian



發文: 164
積分: 5
於 2004-09-22 17:41 user profilesend a private message to usersend email to dorianreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
不错,支持一下Duncan版主!
去过不下十几个Java论坛,只有此论坛是管理的最好的。
所以,一定支持。大家共同学习,努力。
记得自己去年玩过Jython,好久没碰过,忘的差不多了。
呵呵!!!

我先来简单介绍一下Jython的特点吧:

1》面向对象
2》适应性强--鼓励简洁的代码设计风格、高水平的结构设计、把多个组件捆绑到一起!
3》可扩展性强--可嵌入到Java中。
4》可移植性强--能够运行在Java或者Python能运行的平台上。
5》可阅读性强--没有其他语言中通常用来完成存取变量、定义代码段、查找匹配模式等操作时所用的符号(爽)。最大的特点就是没有了分号(通过缩排来完成。结构清晰。不过我初学的时候老打分号,习惯了,呵呵)
6》快速建模--在功能上足够强大,也足够健壮。因此,完全可以建立起一个系统的整个模型。
7》自动内存管理--内存管理是由Jython的解释器完成。

缩排--使程序分格同一,减少不必要的块包围符号。

多种序列--有列表、元组(tuple)、和字典

序列乘法-- s=[1] s*3 表示[1,1,1]

序列分片--序列可以通过分片进行切割。而且还可以进行序列的复制。如s[:]

序列的府索引--s=[1,2,3] s[-1] 表示3

动态语义--大部分脚本语言都有

连续比较--2<x<y<3

超长整数--比c语言的整数还要大;如a=999999999999999999999L

同时赋值--a,b=1,2

循环中可以有else--可以通过else推出循环

异常中的else--表示未出现异常时执行的语句

格式输出关键字--"%(table)s" %{'table':'hello'}

模块、包--可以有模块、也可以有包。像Java一样导入

语句动态生成--exec "x = 2"

属性的动态变化--getattr()得到一个对象的属性,setattr()来设置对象的属性。delattr()删
除对象的属性。

面向对象--地球人都知道

基类的动态改变--可以增加新的基类。从而时其派生类有新的方法。

默认参数值--可以使用默认参数值(J2SE 5.0 好像也可以了)

关键字参数--a(name = 'abc')

函数的不定参--略

特殊的类方法--类可以定义特殊的方法,支持逻辑操作

单行函数--lambda x:x+1

列表映射--["%d" % x for x in range(10)]

嵌套函数--可以像pascal一样写嵌套函数

对象的持续性--一个对象可以保存起来,在需要时恢复

可编译成字节码--像Java一样,可以将Jython程序编译成字节码

简易安装:
下载Jython 可到www.jython.org下(我上过N次,但都是无法显示。如果你也一样。那么到http://sourceforge.net/projects/jython去下。或者用google搜Jython download)
注:我是去年下的2.1版本。
安装特别容易。下载下来后(如果你是上面的地址下的因改是个class文件)。在命令行到这个class文件夹中执行 java jython-21
选择平台->如果你想看原代码的话构选sources其它默认->下面一路next自己安装吧!
配置环境:
在环境变量中的Path中添加Jython的安装目录
这样就安装好了

验证安装:
在命令行中输入jython,就会有类似如下的输出,这样就运行jython了.
//////////////////////////////////////////////////////////////////////////////////////
Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.
C:\Documents and Settings\Administrator>jython
*sys-package-mgr*: processing new jar, 'G:\Program\jython\jython.jar'
*sys-package-mgr*: processing new jar, 'E:\PROGRAM\J2EE\lib\j2ee.jar'
*sys-package-mgr*: processing new jar, 'G:\Program\J2SDK\lib\tools.jar'
*sys-package-mgr*: processing new jar, 'G:\Program\J2SDK\jre\lib\rt.jar'
*sys-package-mgr*: processing new jar, 'G:\Program\J2SDK\lib\dt.jar'
*sys-package-mgr*: processing new jar, 'G:\Program\J2SDK\jre\lib\sunrsasign.jar'

*sys-package-mgr*: processing new jar, 'G:\Program\J2SDK\jre\lib\jsse.jar'
*sys-package-mgr*: processing new jar, 'G:\Program\J2SDK\jre\lib\jce.jar'
*sys-package-mgr*: processing new jar, 'G:\Program\J2SDK\jre\lib\charsets.jar'
*sys-package-mgr*: processing new jar, 'G:\Program\J2SDK\jre\lib\ext\dnsns.jar'
*sys-package-mgr*: processing new jar, 'G:\Program\J2SDK\jre\lib\ext\ldapsec.jar
'
*sys-package-mgr*: processing new jar, 'G:\Program\J2SDK\jre\lib\ext\sunjce_prov
ider.jar'
*sys-package-mgr*: processing new jar, 'G:\Program\J2SDK\jre\lib\ext\localedata.
jar'
Jython 2.1 on java1.4.2 (JIT: null)
Type "copyright", "credits" or "license" for more information.
>>>
////////////////////////////////////////////////////////////////////////////////////////

史上最简单的hello world ^_^

接着上面的 >>> 提示符后输入 "hello world" 或者 'hello world' 或者 "hello " + "world"
你就会看到输出 'hello world'
也可以试着输入 1+2
输出:3
输入:a=[1,2,3]
输入:a*3
输出[1,2,3,1,2,3,1,2,3]

自己慢慢玩吧!

再看一下如何退出.
方便---按两次 ctrl + c
麻烦---输入:import sys
输入:sys.exit()

如果不想玩jython了,想卸载它,那么就在命令行转到安装目录执行 java Uninstall
然后删掉环境变量,ok ,彻底删除.

就先到这里吧!
感谢您的看完,我没白打那么多字。 ^_^


reply to postreply to post
作者 Re:支持一下!Jython特点简介!&简易安装 [Re:dorian]
pcbill





發文: 75
積分: 1
於 2004-09-25 14:14 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我看了 dorain 描述的眾多優點,我還是有點疑問。

首先,眾多的優點中,大部分是使語法更簡潔,但是這些如何達成使我的工作更快速? 更有生產力? 以 Java programmer 來說,相當去學習一套新語法,這樣的 introduction cost 是否有點高?

據我所知,Python 是直譯式的高階語言,有些特性和 Java 有著互相矛盾的設計思維,所以我很佩服 Jython 的發明者可以整合這兩個技術。

有沒有很強大的理由讓我們可以有更大的動力去學習 Jython? 還是只有 Duncan 所說的 for "懶人"?

最近從學校圖書館借了 "Jython for Java Programmers " 來看,可是看完語法介紹後就沒繼續在研讀了,覺得它並沒有指出可以讓原本 Java programmer 有更大的動力去學習它。或是我有誤解,或是根本還不知道它的威力。

請先進多多詳細描述它強大的威力吧。


reply to postreply to post
I can do three things a day.
Study hard, Study hard, and Study hard.
作者 Re:支持一下!Jython特点简介!&简易安装 [Re:pcbill]
Duncan

還隱隱作痛

版主

發文: 7816
積分: 39
於 2004-09-25 19:15 user profilesend a private message to usersend email to Duncanreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
pcbill wrote:
我看了 dorain 描述的眾多優點,我還是有點疑問。

首先,眾多的優點中,大部分是使語法更簡潔,但是這些如何達成使我的工作更快速? 更有生產力? 以 Java programmer 來說,相當去學習一套新語法,這樣的 introduction cost 是否有點高?

據我所知,Python 是直譯式的高階語言,有些特性和 Java 有著互相矛盾的設計思維,所以我很佩服 Jython 的發明者可以整合這兩個技術。

有沒有很強大的理由讓我們可以有更大的動力去學習 Jython? 還是只有 Duncan 所說的 for "懶人"?

最近從學校圖書館借了 "Jython for Java Programmers " 來看,可是看完語法介紹後就沒繼續在研讀了,覺得它並沒有指出可以讓原本 Java programmer 有更大的動力去學習它。或是我有誤解,或是根本還不知道它的威力。

請先進多多詳細描述它強大的威力吧。


Python 和 Java 一樣是 hybrid 式的程式語言,編譯成中繼碼再透過 VM 執行,只是 Python introspect 能力強加上其語法的特性可以很容易做到 scripting。

之前站內也提到專為 Java 設計的 script language: groovy,不曉得現在發展到什麼狀態。Groovy 的語法(據我所知,有很大的比例同 Python 與其他的高階語言) 對 Java Programmer 來說也是一種全新的語言,學習支也需要 cost,相較之下學習 Python 並不是一個較差的選擇(之後你要學習 groovy 也會較輕鬆,因為許多語法相同)。

我的目的是利用 Jython 來減少 Java program 設計上的負擔,最明顯的就是打字量減少,實驗性強。當你要去熟悉一個 core classes 的某部分,你可以寫一個 Java demo program 來試驗,你得經過 coding, compile, execute, modify, compile, execute... 等無限循環下去,這花費很多時間,最重要的是,你看到的是程式的 steady-state 表現,中間 transient 的狀態都忽略了,你雖可以利用 debugger tool 配合中斷點的設定來觀察,但這還是得花費不少的功夫。

我不需要功能強大的 IDE 支援,使用 Jython 就可以任意地在程式中加入 probe,程式本身是在暫停的狀態,一個指令一個動作,我可以完整控制程式的流程,我可以隨時去變更各種 UI component 的 property 以觀察對 component 的影響,如果你寫的是 java program 你需要麼樣的步驟呢?

我覺得寫程式對許多 programmer 來說往往因為程式對他們來說是一個不可分割的程序,programmer 盡其所學的讓程式依照他們設計的模式來運行,對一個不甚有經驗的程式員(或是說對某方面沒有經驗),想對程式動手腳(即使程式是自己寫的)不知從何下手,只能從程式的結果去猜測大概是哪部分的問題(沒有驗證),然後對臆測的問題點修改,編譯再執行看看,結果不滿意(不對)再改,但每次都不清楚問題點在哪,像老鼠走迷宮,需花很長的時間把事情弄對了並記取教訓,我覺得這樣子的經驗累積所費時間太長。

以板上最常出現的 UI 問題來看,很多人就如上所述,因為沒有太多 AWT/swing 使用經驗,怎麼改都沒辦法做出想要的 runtime 行為,遇到這些挫折少有人會有持續下去的熱情(多數的時候連該從何處下手都沒有頭緒),部分的人會找 demo code 來揣摩(講難聽就是抄),若需求有差異又不知道怎麼改了。你們以為我有很多撰寫 java 程式的經驗嗎?沒有,我所有的工作經驗都跟 Java 沒有直接關聯,但是我還是可以和大家一起 debug Java 程式,因為我大部分的時候我都用 Jython 來做,我可以很快複製出和問題程式相同的 context/state 來做檢驗(這需要對 Java/Python 二者有一定程度的了解)。

相信我,有了 Jython,寫 UI 程式就像玩樂高,你可以一步一步建構出你想要東西,建構過程你可以看看中間每一個細節,你就不會對程式感到蠻以捉摸。

我有設定哪些對象該使用 Jython,下一回我就會補上"誰該閱讀"一節。


Duncan edited on 2004-09-25 19:17
reply to postreply to post

給我
辣味豆腐 其餘免談
作者 Re:支持一下!Jython特点简介!&简易安装 [Re:Duncan]
pcbill





發文: 75
積分: 1
於 2004-09-25 20:22 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Duncan wrote:
Python 和 Java 一樣是 hybrid 式的程式語言,編譯成中繼碼再透過 VM 執行,只是 Python introspect 能力強加上其語法的特性可以很容易做到 scripting。

之前站內也提到專為 Java 設計的 script language: groovy,不曉得現在發展到什麼狀態。Groovy 的語法(據我所知,有很大的比例同 Python 與其他的高階語言) 對 Java Programmer 來說也是一種全新的語言,學習支也需要 cost,相較之下學習 Python 並不是一個較差的選擇(之後你要學習 groovy 也會較輕鬆,因為許多語法相同)。

我的目的是利用 Jython 來減少 Java program 設計上的負擔,最明顯的就是打字量減少,實驗性強。當你要去熟悉一個 core classes 的某部分,你可以寫一個 Java demo program 來試驗,你得經過 coding, compile, execute, modify, compile, execute... 等無限循環下去,這花費很多時間,最重要的是,你看到的是程式的 steady-state 表現,中間 transient 的狀態都忽略了,你雖可以利用 debugger tool 配合中斷點的設定來觀察,但這還是得花費不少的功夫。

我不需要功能強大的 IDE 支援,使用 Jython 就可以任意地在程式中加入 probe,程式本身是在暫停的狀態,一個指令一個動作,我可以完整控制程式的流程,我可以隨時去變更各種 UI component 的 property 以觀察對 component 的影響,如果你寫的是 java program 你需要麼樣的步驟呢?

我覺得寫程式對許多 programmer 來說往往因為程式對他們來說是一個不可分割的程序,programmer 盡其所學的讓程式依照他們設計的模式來運行,對一個不甚有經驗的程式員(或是說對某方面沒有經驗),想對程式動手腳(即使程式是自己寫的)不知從何下手,只能從程式的結果去猜測大概是哪部分的問題(沒有驗證),然後對臆測的問題點修改,編譯再執行看看,結果不滿意(不對)再改,但每次都不清楚問題點在哪,像老鼠走迷宮,需花很長的時間把事情弄對了並記取教訓,我覺得這樣子的經驗累積所費時間太長。


唉唉,Duncan 大您這系列怎麼不早點推出呢? 害我也摸索了這麼久。


以板上最常出現的 UI 問題來看,很多人就如上所述,因為沒有太多 AWT/swing 使用經驗,怎麼改都沒辦法做出想要的 runtime 行為,遇到這些挫折少有人會有持續下去的熱情(多數的時候連該從何處下手都沒有頭緒),部分的人會找 demo code 來揣摩(講難聽就是抄),若需求有差異又不知道怎麼改了。你們以為我有很多撰寫 java 程式的經驗嗎?沒有,我所有的工作經驗都跟 Java 沒有直接關聯,但是我還是可以和大家一起 debug Java 程式,因為我大部分的時候我都用 Jython 來做,我可以很快複製出和問題程式相同的 context/state 來做檢驗(這需要對 Java/Python 二者有一定程度的了解)。

相信我,有了 Jython,寫 UI 程式就像玩樂高,你可以一步一步建構出你想要東西,建構過程你可以看看中間每一個細節,你就不會對程式感到蠻以捉摸。

我有設定哪些對象該使用 Jython,下一回我就會補上"誰該閱讀"一節。


經你這麼一說,我看我也要好好學習了。我記得當初 Python 剛推出時,國外的論壇好像驚為天人的樣子,不過在台灣,好像也沒幾人有在玩(或是我情報有誤,請指正)

如果能增進 debug 的速度,的確是一個吸引人學習的誘因阿。寫 UI 程式像玩樂高,聽起來也不錯。

另推薦另一個寫程式使用 JUnit 的系列文章

期待你的文章的推出。


reply to postreply to post
I can do three things a day.
Study hard, Study hard, and Study hard.
» JWorld@TW »  Languages on JVM » Jython

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8