java语言软件开发工具包是什么(使用java语法的脚本语言)
边肖将与您分享一个比较四种Java脚本语言的示例分析。相信大部分人都不太了解,所以分享这篇文章供大家参考。希望你看完这篇文章能收获很多。一起看看吧!
在一些Java应用中,集成脚本语言的支持可以带来极大的便利。例如,用户可能希望编写脚本来驱动应用程序、扩展应用程序,或者编写循环和其他流控制逻辑来简化操作。在这种情况下,一个理想的解决方案是在Java应用程序中为脚本语言解释器提供支持,让脚本语言解释器读取用户编写的脚本,并在应用程序提供的类上运行。为了实现这个目标,您可以在运行Java应用程序的JVM中运行基于Java的脚本语言解释器。
一些支持库,如IBM的Bean脚本框架,可以帮助您将不同的脚本语言集成到Java程序中。这些支持框架使您的Java应用程序能够运行用Tcl、Python和其他语言编写的脚本,而无需进行大量更改。
脚本解释器集成到Java应用程序后,用户编写的脚本可以直接引用Java应用程序的类,就像这些脚本是Java应用程序的一部分一样。这个想法有利也有弊。它的优点是,如果你想对应用程序使用脚本驱动的回归测试,或者你想通过脚本对应用程序进行低级调用,都会带来很大的便利。缺点是,如果用户的脚本直接操作Java程序的内部结构,而不是经过批准的API,可能会影响Java程序的完整性和应用程序的安全性。因此,我们应该仔细规划允许用户为其编写脚本的API,并声明程序的其余部分不允许使用脚本进行操作。此外,您可以混淆不希望用户编写脚本的类和方法的名称,只留下那些允许编写脚本的API类和方法。通过这种方式,您可以有效地减少冒险用户直接使用脚本来操作受保护的类和方法的可能性。
在Java程序中支持多种脚本语言意义重大,但如果你是写业务应用,就要慎重考虑3354。虽然你为用户提供了最完善的功能,但你也带来了最多的错误。必须考虑配置和管理问题,因为至少有一些脚本解释器是定期更新的,所以必须下大力气管理每个解释器的哪些版本适合Java应用。如果用户升级其中一个脚本解释器来解决旧脚本解释器中的BUG,那么您的Java应用程序将在未经测试的配置中运行。几天或几周之后,用户可能会发现脚本引擎升级带来的问题,但他们很可能不会告诉你脚本引擎的升级,所以你很难再次尝试用户报告的错误。
此外,用户可能会坚持要求您必须为Java应用程序支持的脚本解释器提供补丁。有的脚本解释器按照开源模式及时维护更新;对于这些脚本解释器,可能会有专家帮助您解决问题,修复解释器,或者在新版本中引入补丁。这一点非常重要,因为脚本解释器是一个非常复杂的工具,其中包含大量代码。没有专家的支持,你可能无法自己完成修改脚本解释器的烦人任务。
为了避免这个问题,您应该彻底测试准备在Java应用程序中提供支持的每个脚本解释器。对于每一个解释器,保证它能够成功处理最常见的用例,保证即使在极其苛刻的条件下运行大量的脚本,也不会出现重大的内存泄漏,保证你严格Beta测试Java程序和脚本解释器时不会出现意外。当然,这种预测试需要投入时间和其他资源;但无论如何,测试的投资总是值得的。
如果必须在Java应用程序中提供脚本支持,则必须首先选择最符合应用程序要求和用户基础的脚本解释器。选择合适的解释器可以简化集成解释器的代码,降低客户支持成本,提高应用的稳定性。最难的问题是:如果只有一个翻译,应该用哪一个?
我比较了几种脚本解释器,最初考虑的脚本语言包括Tcl、Python、Perl、JavaScript和BeanShell。然后,在进一步分析之前,我放弃了Perl。为什么呢?因为Perl没有用Java编写的解释器。假设您选择了一个用本机代码实现的脚本解释器,比如Perl,那么Java应用程序和脚本代码之间的交互将不再直接进行。此外,对于您想要支持的每个操作系统,您必须提供一个脚本解释器的二进制代码库。因为很多开发人员选择Java是因为它的跨平台可移植性,为了保证Java应用有这个优势,最好选择不依赖本机代码的解释器。与Perl不同,Tcl、Python、JavaScript和BeanShell都有基于Java的解释器,因此这些语言的代码可以在与Java应用程序相同的JVM和进程中运行。
第一个评估项目是可用性。该评估分析是否存在某个解释器不可用的情况。用每种语言写一个简单的测试程序,然后用相应的解释器运行。结果表明,所有口译员都通过了测试,每个口译员都可以稳定工作或轻松互动。既然每个解释器都值得考虑,那么哪些因素可能会让开发者更喜欢其中一个呢?
Jacl:如果您想在Tk脚本代码中创建用户界面元素,请访问Swank项目,该项目将Java的Swing组件封装到Tk中。该版本不包含Jacl脚本的调试器。
Jyn:支持用Jython语法编写的脚本。Python缩进层次结构用于表示代码块的结构,而不是像许多其他语言一样使用花括号或起止符号来表示控制流。这种改变是好事还是坏事,取决于你和用户的习惯。该版本不包含Jython脚本的调试器。
犀牛:很多程序员总是把JavaScript和网页编程联系在一起,但是这个版本的JavaScript不需要在浏览器中运行。用于
程中,我没有发现任何问题。它的发行版带有一个简单但实用的脚本调试器。
BeanShell:Java程序员很快会对这个源代码解释器产生一种亲切的感觉。BeanShell的文档写得很不错,但开发组很小。然而,只有当BeanShell的开发者改变了他们的兴趣,却又没有其他人填补他们转换兴趣后留下的空白时,开发组太小才会成为一个问题。它的发行版不包含BeanShell脚本调试器。
第二个评测项目是性能。这项测试是要分析各个脚本解释器执行一些简单程序的速度。本次测试没有要求解释器排序大型数组,也没有执行复杂的数学计算,而是执行了一些简单的、常见的操作,例如循环、整数比较,以及分配和初始化大型数组和二维数组。测试程序都很简单,且这些操作都是每一个商业应用或多或少要用到的。另外,本项测试还分析了每一个解释器初始化和执行简单脚本所需要的内存。
为一致起见,测试程序的每一种脚本语言的版本都尽量地相似。测试在一台Toshiba Tecra 8100笔记本上进行,CPU是700-MHz的Pentium III处理器,RAM是256 MB。调用JVM时,堆栈大小使用默认值。
为了便于理解和比较脚本程序的执行速度,本项评测还在Java 1.3.1下运行了类似功能的Java程序,又在Tcl本机解释器内运行了为Jacl脚本解释器编写的Tcl脚本。因此,在下面的表格中,你还可以看到这两次测试的结果。
本项评测证明Jython具有最好的性能,与其他解释器拉开了相当可观的差距,Rhino第二,BeanShell稍。
网友转载外烟请保留链接:本文链接java语言软件开发工具包是什么(使用java语法的脚本语言),http://fiows.com/lunwenfenxiang/49869.html谢谢合作!
相关阅读:
iphone 11 pro max与iphone 12pro(2 max1) CES 2022-在Covid Surge、AMD和一加退学,加入微软、谷歌和英特尔。 iPhone 14谣言 – 发布日期,价格,SIM卡等(iphone14最新官方消息) 2022年最佳小手机