`
bastengao
  • 浏览: 150543 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

在java语言中执行jruby

阅读更多
    ruby一种动态语言,而JRuby是纯java实现的ruby语言。JRuby使用ruby语法开发。不仅可以使用ruby类库,同时也可以使用java基础类库和第三方jar包。
举一个hello world的例子:
ruby语言
puts "hello world"

jruby语言
include Java
java.lang.System.out.println "hello world"


使用jruby开发 swing
include Java
import java.lang.Boolean
import java.lang.System
import javax.swing.JFrame
import javax.swing.JButton
import java.awt.Dimension

frame=JFrame.new
frame.set_default_close_operation JFrame::EXIT_ON_CLOSE
button = JButton.new("button")
button.add_action_listener do |evt|
  javax.swing.JOptionPane.show_message_dialog(nil, <<EOF)
you click me #{System.identity_hash_code evt}
EOF
end
frame.get_content_pane.add button
frame.set_minimum_size Dimension.new(200, 200)
frame.set_location_relative_to nil
frame.set_visible true

运行截图

swing为了监听事件通常要写很多匿名内部类,我觉得这是java语言的弱点。ruby有block和闭包,那么使用jruby开发swing就能解决这个问题。

好吧,让我们切入正题。有时候我们需要利用不同语言的特性解决不同的问题,比如用java语言做开发,但有一个生成静态页面的模块用jruby(我感觉在模板引擎这块ruby远远要比java做的好,即使java有freemarker和velocity),我需要在合适的时机通过java调用jruby写的模块来生成页面。

问题来了,怎样通过java调用jruby写的程序呢?
有三种方式可以解决这个问题(参考 RedBridge


1  Embed Core
需要 jruby.jar
String jrubyCode="puts 'hello world'";
ScriptingContainer container = new ScriptingContainer();
container.runScriptlet(jrubyCode);


2  jsr223 Java Script Engine
如果jdk版本低于1.6需要 jsr223 api和 jruby.jar
或者jdk1.6 和jruby.jar
String jrubyCode="puts 'hello world'";
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("jruby");
engine.eval(jrubyCode);

利用jsr223 Script Engine 可以调用许多动态语言,其中jdk原生还支持JavaScript(第一次在JavaScript中调用java类感觉有些激动)


BSF
需要BSF相关的jar与 jruby.jar
String jrubyCode="puts 'hello world'";
BSFManager.registerScriptingEngine("jruby", "org.jruby.embed.bsf.JRubyEngine", new String[] {"rb"});
BSFManager manager = new BSFManager();
manager.exec("jruby", "<script>", 0, 0, jrubyCode);

  • 大小: 7.3 KB
  • 大小: 15.6 KB
分享到:
评论

相关推荐

    Ruby-JRuby一个Ruby语言的Java实现

    在JRuby中,你可以直接调用Java类库,就像调用Ruby内置函数一样简单。这对于集成Java框架,如Spring或Hibernate,或者利用Java的并发和多线程能力,都是极大的便利。同样,Java开发者也可以轻松地调用Ruby代码,实现...

    JRuby和Rails-让Ruby语言融入于Java项目.rar

    JRuby是Ruby编程语言的一个实现,它是用Java语言编写的,因此可以无缝地与Java平台交互。JRuby的优势在于它不仅支持Ruby语法,还能利用Java的生态系统,包括Java库、Java虚拟机(JVM)以及各种企业级服务。这使得...

    java调用脚本语言笔记(jython,jruby,groovy)

    本文将深入探讨如何在Java中调用三种流行的脚本语言:Jython、JRuby和Groovy。 ### Jython Jython是Python的一个Java实现,它允许Java开发者利用Python的强大语法和丰富的库。要使用Jython,首先需要在项目中引入...

    jruby1.7.8版本呢

    JRuby 是一个开源的、高性能的 Ruby 解释器,它能够将 Ruby 代码编译成 Java 字节码,从而在 Java 虚拟机(JVM)上运行。JRuby 的出现使得 Ruby 开发者能够利用 JVM 的强大功能和丰富的库,同时也让 Java 开发者能够...

    org.jruby.rar

    1. JRuby 定义:JRuby 是 Ruby 语言的一个开源实现,它的目标是使 Ruby 程序能够无缝地在 Java 平台上运行。JRuby 不仅实现了 Ruby 标准库,还支持 Ruby on Rails 框架,使得 Java 开发者能够利用 Ruby 的生产力特性...

    jruby-src-1.0

    JRuby是一种实现Ruby编程语言的Java版本,它允许在Java平台上运行Ruby代码,同时也支持与Java应用程序进行无缝集成。这个压缩包“jruby-src-1.0.zip”包含了JRuby 1.0版本的所有源代码文件,对于开发者来说,这是一...

    巧妙规避Java与Ruby语言迁移过程中的风险

    在IT行业中,语言迁移是一个常见的现象,特别是在软件开发领域,开发者可能会从一种编程语言迁移到另一种,例如从Java转向Ruby。然而,这种迁移过程往往伴随着风险。本文主要探讨了Java和Ruby这两种语言在迁移过程中...

    jruby-bin-1.3.1.zip

    JRuby是Java平台上的一个实现,它允许开发者在Java虚拟机(JVM)上运行Ruby编程语言。这个“jruby-bin-1.3.1.zip”压缩包是JRuby的一个早期版本,专为Ruby语言的研发提供必要的工具和环境。在这个版本中,重点是兼容...

    jruby-bin-1.5.5.zip java脚本编程

    JRuby是Java平台上的一个实现,它允许开发者使用Ruby语言编写程序,并且能够无缝地运行在Java虚拟机(JVM)上。这个“jruby-bin-1.5.5.zip”压缩包包含了JRuby 1.5.5版本的二进制发行版,它是面向那些想要在Java环境...

    jRuby On Rails WEB2.0

    JRuby是一种Ruby语言的实现,它运行在Java虚拟机(JVM)上,能够充分利用Java平台的强大功能,如垃圾回收、线程安全以及与Java库的无缝交互。JRuby的出现使得Ruby代码能够在Java环境中运行,同时保持了Ruby的动态性...

    如何安装与配置JRuby

    保存后,在 CMD 中再次运行 `jruby HelloWorld.rb`,如果成功,会显示 "hello world",表明 JRuby 可以调用 Java 类。 **五、常见问题与解决方案** - **'cmd' 错误提示**: 如果在运行 JRuby 脚本时出现 `'cmd' ...

    聊聊Java平台上的非Java语言共3页.pdf.zip

    在Java平台上,尽管Java语言是主要的开发工具,但其实并不仅限于Java,还有许多其他编程语言可以在Java虚拟机(JVM)上运行。这些语言通常被称为“JVM语言”,因为它们编译成字节码,可以在Java虚拟机上执行,从而...

    JRuby 实战入门

    JRuby允许开发者在Java平台上运行Ruby代码,它是一个完整的Ruby解释器,通过JVM(Java虚拟机)来执行。这意味着你可以使用Ruby编写程序,并在任何支持JVM的环境中运行,包括服务器集群、大型分布式系统等。JRuby不仅...

    jruby_windows_1_6_4安装文件

    JRuby是一个开源的、基于Java平台的Ruby语言实现,它允许开发者在Ruby环境中使用Java类库,并且可以让Java应用程序无缝地调用Ruby代码。标题中的“jruby_windows_1_6_4安装文件”指的是JRuby的一个特定版本——1.6.4...

    jruby-bin-0.9.0.tar.gz

    JRUBY是Ruby编程语言的一个实现,它允许在Java平台上运行Ruby代码。 **描述解读:**描述中提到“Ruby大家不可以不知道吧?”意味着Ruby是一种广为人知的编程语言,它以其简洁、优雅的语法和强大的元编程能力而受到...

    走近JRuby

    JRuby,全称为Java Ruby,是Ruby编程语言的一个实现,它允许Ruby代码在Java平台上运行。与MRI(Matz's Ruby Interpreter)——Ruby的默认解释器不同,JRuby利用了Java虚拟机(JVM),为开发者提供了与Java平台无缝...

    jruby_windows1.7and bin1.7

    JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。Rails彻底加快及简化了Web应用的开发,不过它让人觉得不够成熟,特别是在高端...

    jruby-core-1.7.12.zip

    JRuby-core-1.7.12.zip 提供的是 JRuby 的核心库,用于在 Java 平台上执行 Ruby 代码。sbuild-https-plugin.zip 是一个 sbuild 插件,用于支持 HTTPS 下载源代码,保证构建过程的安全性。两者都是开源项目,体现了...

    jruby-1.5.5+OperaWatir+RSpec

    JRuby 是 Java 虚拟机(JVM)上的一个 Ruby 实现,它允许 Ruby 代码在 Java 平台上运行,并能够利用 Java 类库。JRuby 1.5.5 是该实现的一个早期版本,发布于 2010 年左右,提供了与标准 Ruby 1.8.x 相当的功能。它...

Global site tag (gtag.js) - Google Analytics