Groovy 相对于 Jython 或 Jruby 的优势?

2024-03-30

当我可以使用 Jython 或 Jruby 时,为什么我要选择使用 Groovy?该语言是否提供了任何固有的优势来弥补 Jython 和 Jruby 技能适用于 JVM 之外的其父语言的事实?

请记住,我故意保持这个问题的通用性,但如果特定领域存在任何优势,请毫不犹豫地描述它们。

EDIT
澄清一下,如果我在 Jruby 中编写一些代码,在某些情况下,我现在可以根据需要将该代码移出 JVM,或者至少我对 Ruby 有了更好的了解。而 Groovy 技能仅在使用 JVM 内存在的语言时才适用。 Jython 和 Jruby 有这个内置的优势,Groovy 需要用什么来弥补这个劣势呢?

如果 Groovy 没有您发现的任何优点,并且您建议只使用 Jython 或 Jruby,请告诉我。

Edit 2
感谢大家的所有回答,他们中的大多数都提出了相同的观点,Groovy 与 Java 的集成略好于 Jython 或 Jruby。

跟进
使用 Netbeans 6.5 作为我的 IDE,我发现 Groovy 与 Java 项目的集成比 Jruby 更好。我不确定缺乏集成是否是 Jruby 或 Netbeans 的失败。但在使用了一点之后,Groovy 似乎确实有优势。


我在 Ruby 和 Groovy 中进行了相当广泛的开发(以及使用 Grinder 作为负载测试工具的一点 Jython)。

在这 3 个中,我最喜欢 Groovy。我最喜欢闭包语法,并且我认为它在与 JVM 上的其他 java 类一起工作方面具有最紧密的集成。自从我上次使用 JRuby 以来已经有一段时间了,但是导入 Java 类并使用 JRuby 中的类加载器对我来说并不那么干净。

事实上,Groovy 本质上也是 Java 的超集,这意味着大量 Java 程序员会比 Ruby/JRuby 更快地掌握 Groovy。他们可以开始像 Java 一样对其进行编程,并在拿起它时慢慢开始插入 idomatic groovy。

更重要的是你所问的问题,我认为 Groovy 的另一个优点是,当你想要优化某些东西时,你使用的语言几乎是完全相同的语法,它是 Java。如果您在 Ruby 或 Python 领域工作,那么您将不得不使用 C(这是一个很大的转变)或 Java(与这些语言也有很大不同)。使用 Groovy 编程也有助于保持 Java 技能的敏锐度。

如果您对 Ruby 或 Python 基础设施有特殊的访问权限,或者团队熟悉这些环境,那么我可以考虑选择其他语言之一。

确实,它们都是非常好的语言,您选择什么应该更多地取决于您要解决的问题以及您可以使用的资源。一旦您精通一种动态语言,学习第二种或第三种就会容易得多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Groovy 相对于 Jython 或 Jruby 的优势? 的相关文章

  • Soapui 添加节点到请求 (Groovy)

    我遇到了问题 所以我得到了这样的 WSDL
  • Jenkinsfile:在 Docker 容器中运行 sh 步骤时权限被拒绝

    我在运行简单的程序时遇到问题Jenkinsfile e g pipeline agent label ssh slave stages stage Shell Test steps sh echo Hello World master 上的
  • Grails 2.4.3:使用 REST 服务

    如何在 Grails 2 4 3 中使用 RESTful Web 服务 我还需要使用基本身份验证 你可能认为这个问题已经有了一个很好的答案 但我真的很难找到一个 许多答案都向我指出了 Grails Rest 插件的方向 我已经尝试过但无法为
  • 为什么 Groovy/Grape 不能解析来自 Maven Central 的工件?

    通过全新下载的 Groovy 2 1 9 我创建了 Test Groovy Grab commons io commons io 1 2 import org apache commons io CopyUtils println Reso
  • 将结果行强制转换为对象

    有没有办法将调用存储过程获得的结果行强制转换为特定对象 以便我可以仅将该对象的列表传递到视图中 我知道我可以使用 Node list 之类的东西来做到这一点 但我最终将用一个相当复杂的存储过程替换 getnodes 该存储过程创建临时表并执
  • 我可以在不安装 Python 的情况下为 RobotFramework 安装 Selenium2Library 吗?

    如果我只有 Jython 我可以使用 Selenium2Library 吗 也就是说 我还没有安装Python 并且希望摆脱不需要它的麻烦 我读过相互矛盾的信息 但是 jybot 不能使用 selenium2library 我需要 pybo
  • 如何在 Groovy 中执行引用等于?

    Groovy 将 映射到 eq uals 通常很方便 但是当我想按同一性进行比较时该怎么办 例如 GPathResult通过调用text 来实现equals 对于大多数内部节点来说它是空的 我正在尝试识别根节点 但通过该实现这是不可能的 如
  • Groovy 二维数组

    我有3个数组 l1 l2 and l3 每个都有 5 个字符 e g l1 A B C D E 二维数组由这些组成 screen l1 l2 l3 所以它看起来像这样 screen 我怎样才能迭代这个数组 我打电话吗screen 5 or
  • 如何从 Jenkins 文件调用 groovy 脚本?

    我正在尝试将 Jenkinsfile 中的内容分离成一个常规脚本来制作 但它无法调用这些脚本 这是代码 usr bin env groovy node test node stage Checkout echo BRANCH NAME en
  • 如何使用 JRuby 创建 Java 小程序?

    我想使用 JRuby 创建一个 Java 小程序 也就是说 我想创建一个 Java 小程序 其中包含由 JRuby 运行的 Ruby 代码来完成所有 GUI 操作 我正在寻找一个简单的示例来说明如何开始 查看这些链接 来自我们代码库的 JR
  • 从属性文件加载属性并使其在整个作业/管道中可用 - Jenkins 声明性语法

    我的要求很简单 我只是想外部化一些 值 以使我的 Jenkinsfile 更可重用 为此我需要从 Jenkinsfile 旁边的文件加载属性 并确保这些属性是可以在管道中的任何地方使用 我对 Groovy 和 Jenkins 代码仍然很陌生
  • 从 Gemfile 中找出哪些 gem 需要本机 c 扩展?

    我最近才开始将注意力转向在上面部署 Ruby 应用程序TorqueBox当然 它是构建在 Jruby 之上的 到目前为止 我基本上一直在执行bundle install然后在通往 jrubydom 的路上解决每个宝石 但我遇到了一些宝石 由
  • 从 Groovy 中的列表中删除空项目

    从 Groovy 列表中删除空项目的最佳方法是什么 ex null 30 null 想要返回 30 只需使用减号 null 30 null null
  • 如何在 Groovy 2.3 中使用 @SourceURI 注释检索脚本文件的完整路径?

    我需要在运行时检索 Groovy 2 3 中脚本文件的完整路径 实际上我遇到了与这里描述的问题相同的问题 在运行时获取 groovy 源文件的路径 https stackoverflow com questions 11958185 get
  • Groovy 安装 HTTPBuilder 现在 Codehaus 关闭了?

    我是一个 groovy n00b 并尝试使用 http builder 但网络上的所有示例都引用相同的内容 Grab声明不起作用 我认为这是因为 codehaus org 不再托管常规内容 我尝试过从以下位置下载源代码github http
  • Sikuli 积分器 C#

    我想在 C 中使用 Sikuli Integrator 我以管理员身份运行 VS 通过 NuGet 管理器安装 Sikuli Integrator 并想在简单任务上测试他 这是我的代码 using SikuliModule using Sy
  • Grails 操作被调用两次。帮助!

    我正在编写一个 grails 应用程序并遇到一个奇怪的问题 单击页面上的提交按钮时 关联的操作会快速连续调用两次 这会导致一切都严重破坏 以前有其他人见过这个问题吗 下面是我的代码 从普惠制页面
  • 可以混合使用 JVM 语言吗?即:Groovy 和 Clojure

    我知道你可以轻松地混合groovy java clojure java 无论什么JvmLang java 这是否也意味着我也可以让 clojure 和 groovy 代码进行交互 如果我使用 Grails 或 jRoR 我也可以在该环境中使
  • 如何在 Groovy 中设置最后一个字段

    我有一个在 groovy spock 中测试的 java 类 java 类有一个final 字段 private static final log Logger getLogger 我想测试一个方法是否使用此记录器 最好使用模拟 问题是这个
  • Groovy 和 Groovy++,它们有什么不同吗?

    我最近知道groovy 已经发布了 Groovy和Groovy 的主要区别是什么 来自 groovy 页面http code google com p groovypptest http code google com p groovypp

随机推荐

  • 我应该如何调整我的代码以实现 TBytes 和 TIdBytes 之间的兼容性?

    我遇到了与 中提到的相同的问题 Delphi XE4 Indy TBytes 和 TidBytes 之间的兼容性问题 https stackoverflow com questions 16339656 delphi xe4 indy co
  • 关闭连接后继续处理[重复]

    这个问题在这里已经有答案了 PHP 有没有办法关闭连接 本质上告诉浏览器没有更多数据 但继续处理 我想到的具体情况是 我想要提供缓存数据 那么如果缓存已过期 我仍然会提供缓存数据以获得快速响应 关闭连接 但继续处理以重新生成并缓存新数据数据
  • R-如何使用两种不同的调查设计进行双样本 t 检验

    我想对两个均值的相等性进行双样本 韦尔奇 t 检验 其中之一是使用简单随机抽样获得的 srsmean 另一个是使用调查包的调查权重计算得出的 mean weighted 我还进行了 t 检验mean weighted以及在调查设计中同时实施
  • Orion 的 Freeboard 数据源与 Context Broker 之间没有连接

    我一直在尝试连接 Freeboard 以可视化来自 OCB 的上下文信息 但是遇到了一些困难 导致我无法从那里接收任何数据 我的想法是 将Freeboard连接到OCB有问题 因为在OCB的订阅列表中没有任何新条目 并且Freeboard中
  • Visual Studio 2020 如何阻止选项卡中的文件名被缩短

    在 Visual Studio 对我来说是 2020 中 打开文件的文件名写在屏幕顶部的选项卡中 如果文件名太长 它会自动缩短 即代替真正的长文件名 cs它会说真的L lename cs 我想要显示整个文件名 我意识到我可以将鼠标悬停在选项
  • 使用退格控制字符擦除

    我正在尝试使用退格控制字符 b 删除行尾的尾随逗号 尽管它在没有其他输出的情况下有效stdout 如果之后有另一个输出 b 它变得毫无用处 这是一个例子 include
  • OpenCV2 薄板样条应用变换不起作用?

    我正在使用 Python OpenCV2 实现薄板变压器并遇到一些问题 当我执行 WarpImage 时 图像会正确扭曲 但是当我使用一些手动输入的点的estimateTransformation 时 这些点无法正确映射 相反 所有点最终都
  • Python 将列重塑为多列 - 交替行

    任何人都可以建议一种有效的方法 将一列 在 python pandas 数据框中 重塑为多列 并交替进行列分配 我可以用循环来做到这一点 但想知道是否有更优雅的方法 例如 请考虑以下示例 Added 有没有人有一个解决方案 可以将单列中的每
  • 如何比较两个日期?

    我有三个日期 1 上一个日期 2 当前日期 3 下一个日期 我想检查 currentDate 是否晚于前一个日期且早于 nextDate 我怎么做 NSDateFormatter df NSDateFormatter alloc init
  • Haskell 函数 :: [名称] -> [[(Name, Bool)]]

    鉴于以下情况 type Name String envs Name gt Name Bool 我必须实现 envs 以便给定名称列表 它返回名称和布尔值的所有可能组合 我的尝试没有返回所有可能的组合 这是我的代码 envs xxs x xs
  • 如何确保 Jest 在“unhandledRejection”上失败?

    我们的单元测试在持续交付管道的容器中运行 有时 我们不会在单元测试中处理拒绝 但是 我认为这是不正确的 并且在我看来管道应该失败 我怎样才能确保当我执行时jest并且在测试期间unhandledRejection事件发生 jest 会错误退
  • 提示工具包和提示工具包有什么区别

    我最近运行了一个 conda 列表 我发现我有两个不同的软件包 分别称为prompt toolkit 3 0 4 和prompt toolkit 3 0 4 我试图用谷歌搜索它们之间的区别 基本上使用我的问题标题的确切措辞 而出现的只是pr
  • 在javascript中获取鼠标光标的大小

    我需要确定网页上当前使用的鼠标光标的宽度和高度 我需要在光标正下方显示一个 div 也可能在其右侧 所以我需要确定 div 相对于确切指针位置的偏移量 这样光标就不会覆盖 div 该机制将用于Intranet系统 因此它可以是仅firefo
  • Terraform 中使用多个 user_data 文件

    我正在尝试为常见任务 例如文件夹创建和某些包安装 提供一个通用的 user data 文件 并为应用程序特定的配置提供一个单独的 user data 文件 我正在尝试以下 user data data template file userd
  • MacOS,如何删除键盘快捷键中未使用的服务项

    我是 Mac OS 的新手 正在学习 Automator 我发现它很有用 但不太可控 我在服务中创建了快捷方式 但不知道如何删除它 突出显示的项目是我要删除的项目 我想我应该用 Automator 来做 但我不知道如何做 任何帮助将不胜感激
  • javascript闭包立即评估[重复]

    这个问题在这里已经有答案了 考虑以下 JavaScript 代码 var a var f function for var i 0 i lt 3 i a push function alert i for var j 0 j lt 3 j
  • 如何使用 Haskell Aeson 解析数组

    我有一个 JSON 文档 如下所示 series 1 2 2 3 3 4 我想将其解析为一组数据类型 data Series Series DataPoint data DataPoint DataPoint Int Int x and y
  • 为什么我的 MongoDB $or 查询不起作用?

    我正在尝试执行 or 搜索来匹配两个正则表达式 如下所示 metadata text or regex hello regex world 我正在使用 mlab com 并收到以下错误 MongoDB error Command faile
  • 使用twig变量动态调用导入的宏子函数

    我正在尝试是否使用变量来调用特定的宏名称 我有一个正在导入的宏文件 import form elements html twig as forms 现在该文件中包含所有表单元素宏 文本 文本区域 选择 单选等 我有一个传入的数组变量 其中包
  • Groovy 相对于 Jython 或 Jruby 的优势?

    当我可以使用 Jython 或 Jruby 时 为什么我要选择使用 Groovy 该语言是否提供了任何固有的优势来弥补 Jython 和 Jruby 技能适用于 JVM 之外的其父语言的事实 请记住 我故意保持这个问题的通用性 但如果特定领