选择合适的java脚本语言

4种最适合0基础入门的编程语言候选名单! 如果你想学习编程,虽然选择第一门编程语言与你想用它来做什么最终达到什么目的有很大的关系,但是事实上某些编程语言的确比其他语言要好学。 选择一门合适的编程语言作为入门的语言对于培养自己编程的兴趣会有很大的帮助。 下面为大家总结出的几种最适合0基础入门的编程语言候选名单。 1、Java Java是互联网历史最悠久、最坚挺和最具影响力的编程语言之一。你可以在线上线下、各种平台、操作系统和设备应用的核心... 阅读详情
选择合适的java脚本语言
--如果你正考虑在java应用中集成脚本解释器,最难得是决定使用那种

摘要:脚本语言已经向java开发者证明了它的价值。它让客户实现应用功能的扩展和界面的个性化,从而程序的价值得以提升。另外,它们可以显著的简化程序开发者的设计任务,通过实现动态定义、装载和评估。对于开发人员,集成一种或多种脚本语言的任务是简单的,从越来越长的可选列表中选出一个确实困难的。本文描述了一些伴随java应用中脚本语言支持的问题,并从不同角度比较了Groovy, JudoScript, Pnuts, JRuby, Jacl, Jython, Rhino和Beanshell,以期能帮助读者作出正确的决定。

三年前,我在javaworld写了一遍叫做“JavaScripting语言,那种是适合你的?”的文章。当我收集解释器并进行比较时,我尽量选择那些看起来满足苛刻商务需求的。理想状态下,我希望解释器能够方便的扩展应用的用户接口,并且有易读的脚本代码,高可靠,快速,有好的支持和文档,并且是完备的。在那个时候,我把列表限制到了Jacl,Jython,Rhion和BeanShell。

过去的三年中发生了很多变化。可选项不再是很少的几个,不管是动态开发还是直接选择,可选的脚本语言都有一打以上。可靠的选择列表比三年前增多了,现在还包括了Groovy, JudoScript, Pnuts和BeanShell。我们还可以考虑不再这个列表中的其他解释器,但这个列表中,已经足够开发人员自己的所需了。

我准备标准化所有解释器,看看Jacl, Jython, Rhion和BeanShell在2002年后性能有没有提高,并看看Groovy, JudoScript, Jruby和Pnuts同它们比较起来会怎样。我认为,看看不同脚本语言有什么独特之处,有什么特别的强项和弱点是很有意思的事情。

商务风险

在以前的文章里,我讲述了一些著名的优秀脚本解释器的资料,并说明了结合脚本解释器时你可能遇到的风险。本文中,我把这些内容简化为一些要点,并根据我在写那些文章之后的经验进行了改进。Java脚本解释器的优点是毋庸置疑的。使用脚本语言编码比使用java简单;脚步语言使程序的应用逻辑和用户界面的推动(drive/驱动?)和扩展成为可能;脚本代码可以违反java应用中类接口而运行,这是非常强大的功能。这样可以容易的编写程序测试驱动(write test drivers against your program),与编码并编译用于java类的单元测试相比,这是更加快速的。另外,如果用户花时间使用脚本扩展你的应用,他们就作你的工具上进行了投资,这使得你在竞争中多了一件利器。

但是,当在应用中集成jiava脚本解释器时,你必须面对一定的风险。两个主要的风险是,解释器可能成为孤儿,或者是当你把产品装上后,你可能发现解释器的致命缺陷。大多数解释器是通过开源模型动态维护和更新的,在这种情况下,你可以向研究你所发现问题的专家寻求帮助,给解释器打补丁,或者在未来版本中包含你需要的bug-fix(bug修理?)。这是一种安全的赌博,但并不能得到足够保证。如果你正严肃的考虑采用某个特定的解释器,请先看看它的开发站点,看看它的代码的进化,看看上面的流言板,用户的提问都有答案否。这可以帮助你了解代码支持的实际情况。

自我保护的另一格措施是,对你准备采用的任脚本何解释器进行完全测试。一些解释器在发布时包含了一个单元测试集。在测试你的应用中集成的解释器时,这些单元测试可以作为你的更大的测试集中的一部分。在测试解释器和应用之间的集成时,可以剔出自己的工作(you have your work cut out for you),因为脚本解释器有足够的弹性,并向开发人员暴露了足够的功能。你在早期向质量保证投入时间,而不是在应用已经成为产品,当用户需要急切的bug修复时才考虑。

新的竞争者列表

如果你正在寻找一个脚本解释器,你有很多选择。一些解释器支持已经存在的语言,比如Ruby, Python, JavaScript, Java和Tcl。另外一些解释器,如JudoScript, Groovy和Pnuts,选择了它们自己的类似java的语言语法。在比较不同的解释器,需要进行的最大的选择是,那种脚本语言的语法能很好的适合你的应用。像这种个人偏好发生作用的技术选择,可能在不同的开发人员团队引起激烈的争论。也许本文能有助于解决一些争论。

我收集比较了最近发布的八种不同的脚本解释器。解释器及其版本都在下表中列出。如果你对这些解释器并不熟悉,我还给出了每种解释器功能和开发活动的概要(a thumbnail sketch)。

脚本语言

版本号

简短描述

Jacl

1.3.1

Tcl解释器的java实现。如果你希望在脚本中使用工具包来创建用户接口类,看看Swank工程中的包裹(wrap)java swing 工具的类集。Jacl已经存在较长时间了,并且还在持续改进。

Jython

2.1

Python解释器的java实现。我注意到的一个问题是,已经有很长一段时间没有看到这个解释器的新版本了。但在Jython的网站上,说明了改变这种现状的计划,并且有基金支持。

Rhino

1.6.1

JavaScript解释器的java实现。它还支持把脚本编译成类文件。它的最新版本在几个月前发布,并加入了xml支持。

JRuby

0.8

Ruby解释器的java实现。它正在发展中,其测试版0.8表现良好。

BeanShell

2.0 beta 2

它是一个java源文件解释器,正在持续的发展和加入新特性。2.0版本提供了完全的普通java源文件解释支持。

Groovy

1.0 beta 9

Groovy是把Python和Ruby的特征加入java类似语法形成的,由很多令人兴奋的特征。可以把脚本直接编译成类文件,对不同的IDE,又很多Groovy插件可供选择,JSR委员会正在制定Groovy的规范。

JudoScript

0.9

它有和JavaScript类似的编程语法,学习和使用更加容易。在它的FAQ中提到了它的一个明确目标:“支持对象级,操作系统级和应用级的脚本”。我测试的0.9版运行良好。

Pnuts

1.1 beta 2

Pnuts有和java相似的编程语法,并保持持续更新。它可以把脚本直接编译成java类文件。

第一个指标:性能

未来测试第一项指标,我为每个解释器编写了等价的脚本代码,让他们完成简单的任务集并记录它们执行脚本所花的时间。我的测试脚本主要关注基本操作,如循环,整数比较和大的一维、二维数组分配和初始化。用于各个解释器的测试脚本和运行它们的java程序可以在原文资源部分下载。

在基准测试中最有用的信息是,解释器完成简单任务速度的apples-to-apples比较。如果你重点考虑吞吐量,基准数将十分重要。对每种脚本语言,我尽力编写相识的测试代码。测试使用Java1.4.2在东芝Tecra8100笔记本上运行,CPU为PIII700MHz,内存256MB。启动JVM时使用了默认的堆尺寸。出于向你展示解释器到底有多快还是多慢的兴趣,我编写了测试用例的java代码,并在java1.4.2上运行了。测试集包括:

1到1,000,000的计数

1,000,000次整数相等比较

分配并初始化包含100,000个元素的数组

分配并初始化一个500*500的二维数组

在2002年后有提高么?

在告诉你哪个解释器最快之前,我们先看看图1,这个条状图列出了很多耗时任务的结果:1百万次整数相等比较。对2002年文章中讲述的4种脚本解释器,我给出了在Java1.3.1JVM和Java1.4.2上运行所需的时间。非常有趣的是,测试Jython时用的是同一个版本的脚本解释器,结果表明新版JVM上速度提升了25%。在加上我使用了和前一次测试完全相同的硬件,所以可以肯定JVM1.4.2减少了运行基础测试所需的时间。现在看看Rhino,BeanShell和Jacl发生了什么:新版Rhino在1.4.2的JVM上比在1.3.1的JVM上运行的旧版本快乐86%,Jacl的这个数字是76%。可以看出,性能提高了很多。



四项任务的总时间

由于解释器在速度方面都十分相似(至少对我的基准测试是这样),我把各解释器完成四项基准测试所耗的总时间算出来并在图2中给出。



多变的标志

对这些简单测试,Rhino,Pnuts和Jytho始终是最快的,紧跟在后面的时Groovy,然后是JudoScript,然后是其他的。这些性能参数对你是否有用,取决于你希望脚本语言做的事情。如果你的脚本函数包含大量的迭代,并且用户要等待结果,你就需要关注速度最快的解释器,或者你就该考虑用java实现高性能要求的算法,而不是脚本代码。如果你的脚本只需要很少的重复操作,这些解释器速度的差异就不是那么重要了,快速的硬件也会使问题变得不同。

还有一点需要指出的是,即使最快的解释器,完成上面测试所用的时间也是同样功能java代码所用时间的大约40倍。如果速度是你最主要的问题,你必须清楚,最有意义的事情是用java代替脚本代码实现关键算法。

一些脚本解释器支持脚本代码直接编译成字节码。我对这将会产生多大的性能差异非常好奇,所以我进行了另一项测试。我用Rhino脚本解释器把基准测试脚本编译成了字节码,然后我把整个基准测试集用脚本和脚本产生的字节码分别运行了10遍。令人惊奇的是,与直接运行脚本相比,脚本码编译成字节码再运行仅仅节省了10%的时间。我最初任务,JVM的魔咒占用了运行测试集的大部分时间,但进一步的检查发现JVM魔咒本身只占测试集运行总时间的20%。简单脚本代码编译成字节码看起来会有积极的意义,但这并不一定是显著提高性能的银弹。也许在更长的或者,更加计算中心的脚本中,会看到不同的结果。

第二个标准:集成难度

第三个标准:许可证

英文原文:

http://www.javaworld.com/javaworld/jw-03-2005/jw-0314-scripting.html
计算机编程语言的分类及示例代码 以上是几种常见的计算机编程语言类型及其示例代码。每种类型都有其特点和适用场景。选择适合的编程语言取决于项目需求、开发团队的技能和个人偏好。希望这些示例代码能够帮助您理解不同类型的编程语言。如果您对特定语言或编程概念有更多的问题,请随时提问。计算机编程语言是用于编写计算机程序的工具。它们根据不同的特性和用途可以分为多种类型。本文将介绍几种常见的计算机编程语言类型,并提供相应的示例代码。// 在此处添加其他操作。 阅读详情

相关推荐

微型计算机的软件系统通常分为哪些编程?

Web编程:Web编程是开发Web应用程序的一种方式,它涉及到前端和后端两个方面。后端开发主要使用服务器端编程语言,如Python(使用Django或Flask框架)、Java(使用Spring框架)或Node.js等,用于处理数据和业务逻辑。图形化编程:图形化编程是通过可视化界面来设计和开发应用程序的编程方式。具体选择何种编程方式取决于应用程序的需求、开发者的技能和偏好以及所使用的开发工具和平台。软件系统是微型计算机的核心组成部分,它包含了各种编程语言和工具,用于开发和运行应用程序。

DevPhantom的博客 181

FTPC Pnuts概述

Pnuts最初是由Toyokazu Tomatsu在1997年开发的,作为Java类的测试工具。此后,Pnuts得到了扩展,主要关注基于java的脚本引擎所需的基本功能,如模块系统和字节码编译器。 Pnuts的商业用途被罗克韦尔自动化的FactoryTalk开发系统,集成在FTPC中。 Pnuts是一种面向Java平台的动态脚本语言。它被设计成与Jav...

为何生存 3114

24、深入探索Ghidra脚本编程基础

本文深入介绍了Ghidra脚本编程的基础知识,涵盖Java和Python两种脚本开发方式。内容包括Ghidra的扩展与脚本功能概述、脚本管理器的使用方法、Java脚本开发的实现步骤以及Python脚本开发的现状与展望。通过示例代码和详细说明,帮助开发者快速上手并扩展Ghidra的功能,满足逆向工程中的多样化需求。

tgb345678的博客 119

四种Java脚本语言之评测

一、脚本解释器概述 在一些Java应用的需求中,集成某种脚本语言的支持能够带来很大的方便。例如,用户可能想要编写脚本程序驱动应用、扩展应用,或为了简化操作而编写循环和其他流程控制逻辑。在这些情况下,一种理想的解决方案是在Java应用中提供对脚本语言解释器的支持,让脚本语言解释器读取用户编写的脚本并在应用提供的类上运行这些脚本。为了实现这个

socoolfj的专栏 3255

Java中调用Jython、JRuby与Groovy的实用笔记

Jython是一种完全用Java语言编写的Python实现。它允许我们运行Python代码,利用Java平台的丰富库和强大的运行时环境。由于Jython直接与Java虚拟机(JVM)交互,因此它可以无缝地访问所有Java对象和库。这使得Jython成为那些希望利用Python动态特性的Java开发者的一个非常吸引人的选择。JRuby是一个完全用Java编写的Ruby语言的实现。它允许Ruby程序完全访问Java平台,意味着JRuby可以无缝地集成Java的类库和框架,同时也能被Java代码所调用。

weixin_28913879的博客 1199

CH582低功耗实战:从1.2mA降到5uA,我的蓝牙广播功耗优化笔记

本文详细记录了沁恒CH582蓝牙芯片从1.2mA降至5μA的功耗优化全过程。通过建立基准测试环境、分层排查软件配置与IO状态、精细调优射频参数以及硬件层面的电源管理,实现了极致的低功耗表现。文章还提供了实用的功耗测量方法和典型问题排查指南,为蓝牙设备开发者提供了宝贵的参考经验。

weixin_30368405的博客 572

[RockWell FTPC]入门教程02_Pnuts

RockWell FTPC平台语言pnuts介绍及语法说明

weixin_46214043的博客 3768

【安徽理工大学】一文带你高分拿下计算机考研复试(85+的秘密)

一文带你高分拿下安徽理工大学计算机考研复试(85+的秘密)

猫天意的博客 1523

从关系型数据库到非关系型数据库

自1970年,埃德加·科德提出关系模型之后,关系数据库便开始出现,经过了40多年的演化,如今的关系型数据库具备了强大的存储、维护、查询数据的能力。但在关系数据库日益强大的时候,人们发现,在这个信息爆炸的“大数据”时代,关系型数据库遇到了性能方面的瓶颈,面对一个表中上亿条的数据,SQL语句在大数据的查询方面效率欠佳。我们应该知道,往往添加了越多的约束的技术,在一定程度上定会拖延其效率。

zyy5411的专栏 9972

Lane、PHY和Preset Value Bit

每个Lane支持不同的传输速度和带宽,例如PCIe 3.0中,一个Lane的传输速度可以达到8 GT/s(Giga Transfers per second),也就是1 GB/s(GigaBytes per second)。Preset Value Bit(预置值位)是在PCIe 3.0的Lane上新引入的一种机制,用于优化信号传输质量。PCIe设备可以包含多个Lane,例如x1、x4、x8、x16等,表示该设备同时使用的Lane数目,比如x16表示该设备采用了16个Lane,具有更高的传输速度和带宽。

weixin_58083606的博客 1296

html一号店项目代码,项目一号店素材(html模板)

【实例简介】【实例截图】【核心代码】oneShop├── css│ ├── ShopShow.css│ ├── base.css│ ├── load.css│ ├── logo.css│ ├── register.css│ └── style.css├── detail.html├── images│ ├── Thumbs.db│ ├── a_close.png│...

weixin_35390150的博客 4989

一个学java的跟python哪个好,学python和java那个更好

如果对Python感兴趣的话,可以试试我的学习方法以及相关的学习资料如果你是零基础小白,想快速入门Python是可以考虑培训的。一方面是学习时间相对较短,学习内容更全面更集中。Python所有方向的学习路线Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。温馨提示:篇幅有限,已打包文件夹,获取方式在“文末”!!!

2301_79533350的博客 805

Docker网络教程(四)macvlan 网络教程

在这种网络下,Docker 宿主机在它的IP之上,允许接受多个 MAC 地址的请求,然后再将这些请求路由至对应的容器里。流通,Docker 会用它的 MAC 地址,把流量路由进你的容器里。对于网络上的网络设备来说,你的容器似乎是物理上连接到网络上的。),Docker使用其MAC地址将流量路由到你的容器。对于网络上的网络设备来说,你的容器似乎是物理上连接到网络上的。你需要 3.9 或者更高版本的 Linux 内核,4.0 以及以上的版本是更好的。如果你的设备叫别的名字,用对应的名字代替。

weixin_42445065的博客 4132

如何学编程 | 从零基础到编程高手的学习路线与技巧

然而,由于没有编译成机器码,脚本语言的运行速度相对较慢,且对系统资源的依赖较大。首先,如果你是编程的初学者,最重要的是选择一门编程语言作为起点。总结来说,编译语言适用于需要高效执行的系统程序或大型应用程序,而脚本语言则适用于开发速度要求高且对性能要求不太高的应用场景。通过实践,理解编程语言的应用场景,并提高解决问题的能力。总结来说,学编程的关键是坚持不懈地学习和实践。学编程对于许多人来说,可能是一个相对陌生的领域,但其实只要掌握了正确的方法和学习路径,任何人都可以从零开始学习编程并成为高手。

vfgpvl_009的博客 271

乐企归集能力说明文档V2.0006

纳税人销售货物、提供服务开具的增值税发票及购进货物、接受服务取得的增值税发票、海关缴款书(含出口转内销证明)、代扣代缴完税凭证,可以通过本能力进行归集。纳税人可将本能力中的各类规则和接口嵌入本单位信息化系统中(如:销售、报销、财务等),实现发票自动化归集,便于纳税人完成发票入账、抵扣、退税以及代办退税等操作,有效提升涉税业务办理效率。

记录点滴 573

[dprecated]第五章:TTM分析: 5.1 TTM设计目标和核心概念

TTM是Linux DRM框架下的通用显存管理模块,其复杂性源于需要满足多样化的显存管理需求。该文解析了TTM的核心结构体及其关系:ttm_device作为顶层管理者,包含多个ttm_resource_manager处理不同类型内存;ttm_buffer_object为核心对象,通过ttm_resource关联物理资源;其他组件如ttm_tt管理页表、ttm_pool优化分配效率。文章强调理解这些结构体关系是掌握TTM机制的基础,并建议国产芯片开发者参考这些功能需求。

图形/计算GPU的驱动与虚拟化技术分享园地 2128

Android学习笔记(四四):第三方Java库的使用

Java有很多第三方库。Android的Dalvik虚拟器不完全是Java,也就是Android SDK和传统的SDK不完全一样,如果Java库兼容Android,则可被利用。Java库使用受限于下面因素: 目标平台:Java代码适配版本是否比Android基于的Java版本更高。是否用了Android不支持的Java SE的API,例如Swing、AWT图形。Size:为桌面或者服务器设计

愷风(Wei)的专栏 1万+

GJB软件需求规格说明-编制指南

《软件需求规格说明》是软件开发过程必不可少的文档,并且需要评审,也是后续鉴定试验的依据,因此,非常有必要认真对待此文档。 文档对于很多开发技术人员来说是一件非常头疼的事,虽然标准有要求,但是光看标准还是难以下笔。 本文将详细讲解如何按照GJB 438C的要求编写《软件需求规格说明》。 注:文中有背景颜色内容为标准内容,加粗部分为范例。斜体部分为解释。 全文1.3万字

Abel的博客 6357

Atitit 提升开发效率 简化设计工具箱 vs 问题诊断 目录 1. 语言类类tool内嵌脚本解释器 1 1.1. 脚本语言 php nodejs python 1 1.2. Sql 1 2. D

Atitit 提升开发效率 简化设计工具箱 vs 问题诊断 目录 1. 语言类类tool内嵌脚本解释器 1 1.1. 脚本语言 php nodejs python 1 1.2. Sql 1 2. Db os 工具箱 1 3. 类库类 简化类库 工具箱 2 3.1. Json Fastjson 2 3.2. Orm sringjdbc vs mybatis vs jpa hibrnate 2 3.3. 微服务nginx 》 dubbo 》springcloud 2 4. 声明编程...

attilax的专栏 279

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

记录nlp工作要求

nlp领域找工作的基本需求:(1)主流的深度学习框架tensorflow,pytorch,caffe至少要会一个多个更好。(2)编程语言至少要会一门除python(在很多人眼里python还算不上一门编程语言)外的java,c++等,推荐c++。(3)论文竟赛优势,发过顶会期刊(accl等),kaggle与天池比赛算法排名靠前。(4)学历要求:硕士及以上。(5)英语要求,cet6 过线。

windy741的博客 297

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

第一门编程语言选谁?(转)

http://blog.youkuaiyun.com/bitfan/article/details/7939691 Are You Ready? Go! ——第一门编程语言选谁? 金旭亮 最近,台湾知名技术专家蔡学镛先生写了一本《编程ING》,宣称“人人都能学会程序设计”。作为一名IT教育工作者,这本书引发了我的兴趣,翻看之后,共鸣之处不少,结合国内计算机教育的现状,产生了颇多感触,于是就有了这...

weixin_33971977的博客 129

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

学习编程语言,一门通不如门门通,如何短期内掌握所有编程语言?

我想在这里讨论的不是如何掌握一门编程语言,而是掌握所有的编程语言。 许多初学者会写信给我,问我应该学习哪种编程语言,以及如何学习编程语言。起初我总觉得这个问题太低级。但是渐渐地,我发现不仅是初学者,即便是许多知名科技公司的高级工程师实际上也对这个问题颇为不解。 今天,我打算花点时间回答这个搁置了很久的“低级”问题。我也希望与更多开发者分享我的想法。 如果你有以下几种困惑,那么本文会对您所...

致力于C语言C++知识分享! 363

各种语言的介绍

Table of contents [showhide] 1 各种语言的介绍(第二版) 1.1 各种语言的选择 1.2 各种语言的选择 2 我为什么选择了python 3 ruby 吸取了所有语言精华的语言 第二版 4 ruby和python的比较 4.1 python和ruby的相同点 4

ITNoobie的博客 1500

Python真的完美吗?

如果你懂编程,那么必须懂Python,无论你之前用的语言有多牛逼。 Python借着机器学习的火一下子窜了上来,以几乎不可思议的速度,Google,microsoft,amazon,国内大厂等纷纷表示自己使用了Python并且如何如何好用等云云。 Python是最好的脚本语言吗? 作为一种脚本语言,Python的确是最好的,当年能一较高下的NodeJs已经无人问津,当然NodeJs的陨落与Python无关,完全是因为自身定位问题,这个话题以后再说。 Python语法真的优美吗? 这可是被Pytho

aa80303857的博客 221
上一篇: Java异常
下一篇: 四种Java脚本语言之评测
socoolfj
博客等级 码龄21年 9粉丝 52原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值