快速业务通道

诊断Java代码: Repl提供交互式评价 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
优点之一是,有数量庞大的 API 可以使用,它们可以与一切事物 ― 从数据库到 Web 服务到电视 ― 对接。不过需要花些时间学习 API 的语义。

通常,Javadocs 不会对 API 的行为的每个方面都作出明确说明。对付这种窘境的办法是直接测试 API,使用 repl 可以使测试快得多 ― 只要输入一个方法调用看看其结果就行了!

一个额外的好处是,使用 repl 测试 API 还强化了大多数程序员的主要行为 ― 我们倾向于在实践中取得最好的学习效果。

Java 编程中可用的 repl

那么,如果 repl 有这么多优点,下一个问题显然是 Java 语言可以使用哪些 repl?

Jython

Jython(以前的名称是 JPython)是 Python 的 Java 编程语言实现(包含一个 repl)(经认证,是 100% 纯 Java 的)。实际上,它把 Python 编译成(有点复杂)Java 源代码或直接编译成字节码。

本着 Python 的精神,人们尝试了各种办法以提供 Java 和 Jython 之间的无缝互操作性。Jython 让您可以访问所有的 Java 标准库,就好像您是自然地使用 Java 语言进行编程一样,您也可以访问现有的 Java 类文件。所以您不仅可以将 repl 用来与标准库一起工作,还可以与已经编译成字节码的您自己的 Java(或 Jython)类一起工作。

使用 Jython repl 时的一个重要注意事项是您在写 Python 表达式,而不是 Java 表达式。其积极的一面是您得到了 Python 在句法方面简明而又优美的优点。

例如,假如我想构造一个新的散列表,这个表将 a 映射到 1、 b 映射到 2, c 映射到 3。使用 Jython 我所要写的只是:

>>> h = {''a'':1, ''b'':2, ''c'':3}

解释器在每一个新的输入行前显示 >>> 。

当探索新的 GUI 设计时,Jython 句法也有很多优点。举个例子来说,可以将 GUI 元素的各个域指定为构造函数的关键字参数,就像这样:

>>> from javax.swing import * >>> f = JFrame(visible=1)

这个示例说明了 Jython 和 Java 语言的其它一些差异:

导入语句的句法有很大不同。

整型被用来取代了布尔型(1 是真,0 是假)。

这里是另一个示例,示例中 Jython 代码为您节省了一些输入,给 GUI 元素添加了动作侦听器(action listener)。通常,这样的侦听器通过使用命令模式(Command Pattern)被指定为匿名内部类的实例。在 Python(和其它许多“脚本”语言)中,这样的命令可以通过使用交互式函数定义更简洁地加以指定。例如,让我们在上述的交互式会话的基础上给 JButton 添加一个简单的动作侦听器:

>>> def listener(event): ...  print ''thank you'' >>>

这是 Jython 中的函数定义的一个示例。为了让我们知道它什么时候需要一个语句以便继续进行,解释器在下一行打印省略号(代替脱字符)。这个函数只需要一个参数,并会将“thank you”打印到标准输出。我们可以将它用作动作侦听器,如下:

>>> panel = JPanel() >>> panel.add(JButton(''press me'', actionPerformed=listener)) >>> f.getContentPane().add(panel) >>> f.pack()

诊断Java代码: Repl提供交互式评价(3)

时间:2011-02-12 IBM Eric E. Allen

现在,我们将有一个显示在屏幕上的窗口,这个窗口有一个标有“press me”的按钮,按下这个按钮后将打印“thank you”到标准输出。想像一下,如果使用 Java 代码的话,这将需要多少语句啊。

当然,缺点也是有的。例如:

您失去了静态类型检查(尽管按理说静态检查在 repl 中没有多少价值)。

因为您输入到 repl 中的表达式不是 Java 代码,所以您无法在转换它们之前将表达式从 repl 中复制和粘贴到您的程序中。

当与 Java 代码一起使用 Jython

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号