一起学习
张惠敏
只用了短短的8年时间,却好像已经成长了35年,Java已经迅速在广泛的领域中找到了自己的位置:P2P、开放源代码、无线应用、嵌入式应用程序以及将要命名的某些应用。很难追踪Java的具体方向,因为它在每个领域都正处于领导地位。
现在,让我们看看Java领域中日益增长的脚本语言的影响。
关于快速开发
毋庸置疑,脚本语言,比如Jython、Python、Perl和PHP正越来越流行。Jython实际上是Python编程语言的一个完整实现。它由100%的纯Java语言写成,并且可以很方便地访问Java类库。
这种脚本趋势正由于快速应用程序开发(RAD,Rapid Application Development)的发展而越来越扩大化。RAD是一种开发风格,如今它正吸引着越来越多的拥护者。销售部经理给IT部门施加了巨大的压力以便加速生产,IT经理就不得不寻找更高效的方法来缩短研发生产时间。因此,RAD自然成了最好的推动力。
Infravio公司作为一个Java和Web服务的集成商,CTO Mukund Balasubramanian 说:“通过某些脚本语言,你可以变得非常聪明并且能够完成常规Java无法完成的很多事情。如果你知道如何利用一个好的脚本语言,你可以在开发中节省大量的时间和金钱。”
脚本语言的优势
Balasubramanian说,脚本语言具有以下优势:
· 快速开发。它们大大缩短了“开发、部署、测试、调试”周期。
· 部署简便。大多提供即时部署能力,而无需花费大量时间在编译和打包周期上。
· 与已有技术集成。它们大都构建在已有的组件技术,诸如Java或者COM上,以便有效重复利用现有代码。
· 易于学习和使用。技术门槛很低,可以轻松找到大量的使用者。
· 动态代码。脚本语言能够被即时生成和执行,这在某些应用程序中是非常必要和有用的高级特性(比如说,JavaScript中的动态类型)。
当然,Java脚本语言也存在着一些缺点:
· 凡事没有十全十美。它假定存在着一个“现实”的编程语言,比如说,找到内建在脚本语言中的数据库驱动器是件非常困难的事情。
· 对于软件工程和代码结构领域的熟练开发者来说,这不太有利。比如说面向对象和基于组件的开发环境。
· 它们通常都不具有“一般性”,而是为某种特定的应用程序所产生,比如说PHP和互联网。
“尽管如此,脚本语言可以加速软件开发的进程,并且将其扩展到一个巨大的领域。但是必须要注意的是选择特定的应用程序,比如说动态页面或者完成一个‘真实’的编程语言(如对于Java而言就是Jython)。”Balasubramanian如是说。
第三方实用程序
通过基本框架帮助网格脚本
IBM的 Bean Scripting Framework的应用程序使得将 Tcl、Python、Perl和其他脚本语言嵌入Java应用程序相当简单。Sun、Borland、BEA和其他厂商也提供类似应用程序。但是熟练的Java开发者,比如Mentro Graphics公司的David Kearns指出,支持一个脚本语言会有时间和费用上的风险,更不要说支持六个这样的语言了。
在最近《Java World》的一篇文章中,Kearns描述了在Java应用程序中支持脚本会有的潜在风险。
“Jython具有最快的脚本解释能力,同时具有强大的编程特性。”他说,“我最关注的其实是Jython的控制流语法,对你来说也许重要,也许不重要。因为有新的领域要涵盖,为Jython编写脚本或许比JavaScript和BeanShell需要更长的学习周期。如果需要用Python编写高级应用的脚本,我推荐去买本书。Python是一个很流行的编程语言,所以书店中会有大量的书籍可供选购。”
其他Java脚本语言
这里简单介绍一些其他被广泛使用的、与Java相关的脚本语言。
· Beanshell。Beanshell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性。BeanShell执行标准Java语句和表达式,另外包括一些脚本命令和语法。它将脚本化对象看作简单闭包方法(simple method closure)来支持,就如同在Perl和JavaScript中的一样。
可以将BeanShell交互地用于Java试验和调试,或者也可以将其当作简单的脚本引擎以用于你的应用程序。简言之,BeanShell是一个动态的解释型Java,加上了一些有用的特性和功能。还有另外一种描述BeanShell的方式:在很多方面,BeanShell之于Java就像Tcl/TK之于C。BeanShell是嵌入式的——你可以从Java应用程序中调用BeanShell,以便实时、动态地执行Java代码,或者为应用程序提供扩展的脚本能力。当然,也可以在BeanShell中调用Java应用程序和对象,动态地与Java对象和API协同工作。既然BeanShell是用Java写成,并且在应用程序中的某处运行,那么就可以随意传送参数到脚本中的“实时”对象,并且将结果作为参数返回。
它具有以下的一些特点:使用Java反射API以提供Java语句和表达式的实时解释执行;可以透明地访问任何Java对象和API;可以在命令行模式、控制台模式、小程序模式和远程线程服务器模式等四种模式下面运行;与在应用程序中一样,可以在小程序中(Applet)正常运行(无需编译器或者类装载器); 解释器非常精简——jar文件大小为175k(如果去掉某些实用程序,那么就只剩下135k);纯Java写成,并且是免费的!
· Jess。Jess是完全用Java写成的规则引擎和脚本环境。Jess的产生是受到CLIPS专家系统的启发,但是其本身正逐渐成长为一个完备的、独特的、动态环境。使用Jess,你可以构建Java小应用程序,这些程序具有根据你以规则声明的形式所提供的知识来“推理”的能力。
Jess非常小巧、灵活,并且是已知规则引擎中最快的。核心Jess语言与CLIPS依然兼容,许多Jess脚本也是有效的CLIPS脚本。与CLIPS一样,Jess使用Rete运算法则来处理规则。Rete是一个非常高效的算法,用于解决复杂、艰深的多对多匹配问题。在CLIPS的基础上,Jess添加了许多特性:后向链表、运行内存查询以及操作和直接推理Java对象的能力。Jess同时也是一个强有力的Java脚本环境。通过它你能够创建Java对象、调用Java方法而无需编译任何Java代码。
Jess可以被授权用于商业应用,可以被免费用于学术研究。
· JudoScript。JudoScript是一种Java类型的脚本,具有一系列特性:HTTP客户端和服务器端编程、文件系统和归档、XML和XSLT脚本、JDBC脚本以及HTML代码优化。它同时带有以下功能:有监视器的调度程序、sendmail、可运行调试、Java GUI的创建、FTP、SSH和SCP、Windows注册表等等。该软件可被自由下载,并且包括源代码在内都是免费的。
JudoScript是一种通用的、应用广泛的、Java脚本语言。JudoScript包括三个紧密联系的部分:一种通用脚本语言;完备的Java脚本工具;支持特定领域的特性。
它由纯Java设计和实现。它的设计包含了第三代和第四代语言的思想,不仅提供强大的编程支持,同时提供一种特殊的机制,被称之为“WYSIWYG(所见即所得)”的编程方法。该机制如今已经非常流行,它使得编程工具的使用更加方便、高效,质量优异。这是一种高层次的语言,被集成进了一个健壮的、通用的Java脚本环境中。
JudoScript由LGPL(Lesser GNU Public License)发布,因此你可以随意使用它以及它的代码。当用于商业目的或者其他目的时,只要保留其最初的版权信息就可以。它会始终与最新的Java开发保持同步,并且与更多LGPL或者GPL开发源代码Java工程继承。原理很简单:如果有什么是有用和有效的,那么JudoScript就力图使得它更加容易使用,并且很乐意使得它们具有脚本能力。
· Rhino。Rhino是用纯Java写成的JavaScript的开放源代码实现。它最常被用于嵌入Java应用程序,以便为终端用户提供脚本的能力。
相关链接
脚本语言的定义
当谈论到脚本的时候,我们的意思是说更快、更简便地去做某件事情。下面是有关脚本和脚本语言的定义:
· 脚本(从编程的角度)就是为了简便、直观、清楚和准确地去完成某件事情。脚本是如此的神奇以至于任何熟悉编程知识的人都可以在见到这样一大段代码的同时,不用丝毫犹豫和思考就可以理解程序代码的意义。
· 脚本支持意味着极高抽象级别的语言结构或者说是特定领域的语言。
· 脚本语言通常是通用编程语言,具有对一个或多个脚本支持的能力。他们通常是可以编辑和运行,并且,作为可选项,它们提供编译工具,目的在于提高性能、安全性等。这些都是典型的应用,以便将应用程序和组件连接起来从而达到更加简便、快速和高效地完成任务的目的。
下面就是一些关于脚本以及脚本定义的资料:
· 游戏脚本语言是最完美的例子。它们也许基于某种通用编程语言发展而来,但是他们具有很高的抽象性,因此,一系列的动作可以被轻松地组合和嵌入以实现扭曲和旋转。
· JudoScript是被广泛应用的脚本语言,用于操作系统级的脚本、JDBC脚本、XML和SGML脚本、ActiveX脚本等等。
· Unix Shells是一种专项应用的脚本语言,用于操作系统级的脚本。
· C、C++、Java、Perl、Python、Jython、Beanshell、JavaScript、Visual Basic、 JudoScript都是通用的编程语言。
· Jython、Beanshell、JudoScript、Rhino是用于Java领域的脚本语言(任何优秀的Java程序员都应该意识到代码中无需过多麻烦Java的好处)。
· Vusyak Basic(包括VBA)是用于COM/ActiveX领域的脚本语言。
· Prolog,不能确定它的分类……可能还有其他的分类可以适合(逻辑编程语言或者其他什么)。
下载本文示例代码
Java趋势:脚本语言引领风骚Java趋势:脚本语言引领风骚Java趋势:脚本语言引领风骚Java趋势:脚本语言引领风骚Java趋势:脚本语言引领风骚Java趋势:脚本语言引领风骚Java趋势:脚本语言引领风骚Java趋势:脚本语言引领风骚Java趋势:脚本语言引领风骚Java趋势:脚本语言引领风骚Java趋势:脚本语言引领风骚Java趋势:脚本语言引领风骚
阅读(204) | 评论(0) | 转发(0) |