虽然只有8岁,却犹如35岁的青壮年一般,java已经迅速地在众多领域确立了其地位:对等网络、开放源代码、无线开发和嵌入式应用程序等等,这还只是其中一些。要准确地把握这门语言的走向是很困难的,因为它正在同时向各个方向齐头并进。
在本系列的文章里,我邀请了经验丰富的java开发人员来讨论他们认为重要的发展趋势。第一部分涵盖了java社区的发展(java community process)及其官僚作风的问题。现在,我们要看看java王国里脚本语言正在增强的影响力,以及使用它们的优势和劣势。
关于快速开发的一切
毫无疑问:脚本编写语言,例如jython、python、perl和php,正在被越来越多地使用。jython事实上就是python编程语言的完整实现。它100%使用纯java编写而成,并允许对java库的轻松访问。
这种脚本编写的趋势在很大程度上是由快速应用程序开发(rad)推动的,这是一种始终都能够赢得追随者的开发风格。由于市场营销的执行者逼迫it的生产公司加速产品的开发,因此it的管理者被迫寻找最有效的方式来满足最终期限的要求。在这里rad是主要的源动力。
“你可能很擅长某些脚本语言,并且能够完成常规java所不能完成的任务,”mukund balasubramanian说。他是位于加利福尼亚州雷德伍德城的infravio的首席技术官,负责着java和web服务的集成。“如果你知道如何使用一门优秀的语言,你就可以在开发中省下很多的时间和金钱。”
脚本语言的优势
balasubramanian说,脚本语言具有下列优势:
快速开发:脚本语言极大地简化了“开发、部署、测试和调试”的周期过程。
容易部署:大多数脚本语言都能够随时部署,而不需要耗时的编译/打包过程。
同已有技术的集成:脚本语言被java或者com这样的组件技术所包围,因此能够有效地利用代码。
易学易用:很多脚本语言的技术要求通常要低一些,因此能够更容易地找到大量合适的技术人员。
动态代码:脚本语言的代码能够被实时生成和执行,这是一项高级特性,在某些应用程序里(例如javascript里的动态类型)是很有用也是必需的。
脚本语言的劣势
但是,java脚本语言有下面这些劣势:
脚本语言不够全面。它们会要求一门“真正的”编程语言的存在;例如,你必须找一个数据库驱动程序将其内置进脚本语言里。
脚本语言并不是软件工程和构建代码结构的最佳选择,例如面向对象和基于组件的开发。
脚本语言通常不是“通用”语言,但是能够根据专门的应用来调整,例如php和万维网。
“因此,脚本语言能够在很大程度上加速软件的开发,但是必须要根据具体的应用来仔细选择――例如动态web页面,或者对‘真正的’编程语言进行补充,就像jython是对java的补充一样,”balasubramanian说。
第三方的工具能够有助于将脚本和基础框架融合在一起
像ibm的bean脚本编写框架(bean scripting framework)这样的工具使得将tcl、python、perl和其他脚本语言融合进java应用程序变得相当容易。sun、borland、bea和其他的公司也提供了类似的工具。但是俄勒冈州威尔逊维尔的mentor graphics的资深java开发人员david kearns指出,支持一门脚本语言就存在耗时和耗钱的风险,不要说支持六门语言了。
在其最近为java世界所撰写的一篇文章中,kearns描述了在你java应用程序里支持脚本语言所固有的风险。
“在我看来,jython具有最快的脚本解释器,并有一些强大的编程特性,”他说。“我唯一真正关心的是jython的控制流句法(control-flow syntax),这可能对你来说很重要,也可能不重要。对于jacl而言,编写用于jython的脚本的学习曲线可能要比javascript或者beanshell高,(即学习前者要比学习后两者困难),因为有更多的新东西要学习。如果你想要在python里编写不同寻常的脚本,那么我推荐你去买本书看看。python是一门很常见的编程语言,所以你在书店里会有很多的选择。
其他java脚本语言
下面列举出了一些使用最广泛的面向java的脚本语言,感谢java老手――about.com的william wagers提供这些内容:
beanshell
beanshell是一个简短的、免费的、可下载的、可嵌入的java源代码解释器,它具有使用java编写成的对象脚本语言的特性。除了普通的脚本命令和句法之外,beanshell还能够执行标准的java陈述式和表达式。它能够将脚本对象作为简单的方法闭塞(method closure)来支持,就像perl和javascript里的一样。
jess
jess是一个完全使用java语言编写的规则引擎(rule engine)和脚本环境。jess最初的灵感来自clips专家系统,但是现在它已经发展成为一个完整的、卓越的动态环境。使用jess,你能够创建java applet以及应用程序,并让这些程序根据以说明规则(declarative rule)的形式所提供的信息进行“推理”。
judoscript
judoscript是一个java类的脚本,它具有很多特性:http客户端和服务器编程、文件系统和归档、xml和xslt脚本编写、jdbc脚本编写,以及html修饰能力(scraping)。它还有值得炫耀的带有监控程序的调度程序、sendmail、运行可执行(run executable)、java gui的创建、ftp、ssh和scp,以及windows注册表等等。这个软件可下载,包括源代码,都是免费的。
rhino
rhino使用纯java编写而成,是一个开放源代码的javascript的实现。它通常被嵌入到java应用程序里,用来向终端用户提供脚本编写的能力。
脚本编写是java的未来吗?
你认为脚本编写稳固地扎根在java的未来里吗?将你的看法发布在下面。
闽公网安备 35060202000074号