什么是JRuby

JRuby是一个纯Java实现的Ruby解释器。通过JRuby,你可以在JVM上直接运行Ruby程序,调用Java的类库。很多Java编写的Ruby IDE都是使用JRuby来解释语法的。

JRuby,JVM下的一个开源Ruby解释器,能够在Java里面使用Ruby类库。就像标准的Ruby解释器一样,除开使用Ruby调用本地方法(C代码)或者Java类库以外,Ruby代码都能够在JRuby里面正确执行。

为什么JRuby

除了适合用来开发面向Internet 的Web 应用之外,还有很多公司将JRuby 看作是使Rails 进入企业应用的关键技术,例如ThoughtWorks。JRuby 允许Rails 应用部署在流行的Java 应用服务器中,很多企业早已建立了这样的运行环境,但因为某些原因无法为运行Rails 应用建立一个全新的运行环境。任何技术的流行,深究起来,其背后都有经济上的原因。Rails 能够达到5 倍于SSH 的开发效率,使它成为了一个几乎无法被抗拒的选择。Rails 进入企业应用,只是一个时间问题,它的前景十分光明。

下载和安装JRuby

到JRuby的官方网站:
http://jruby.org/

                       图:JRuby官方网站截图

下载最新版本的JRuby。这里边有windows版本和linux还有macos版本的,你可以根据你自己的环境下载相应的版本。

下载完成之后解压缩,然后到解压后的目录,我们下文中提到的目录<JRUBY_HOME>就是默认的解压根目录。

在<JRUBY_HOME>下执行bin\jruby -v

如果出现如下提示则表示成功运行:

             图:验证JRuby是否成功运行

运行第一个JRuby程序

在<JRUBY_HOME>下的samples目录下新建文件random.rb,加入如下程序:

View Code

1 require 'java'
2 include_class 'java.util.Random'
3 r = Random.new(123)
4 puts "Some random number #{r.nextInt % 10}"
5 r.seed = 456
6 puts "Another random number #{r.nextInt % 10}"

然后执行如下命令:

            图:运行JRuby random.rb

就会得到对应的结果。

其中Java调用JRuby和JRuby调用Java的例子可以在下面的链接中看到,写的很详细:

https://github.com/jruby/jruby/wiki/JRubyAndJavaCodeExamples

在JRuby运行Swing

在上面的例子运行成功后,我们接下来运行swing的例子,在sample目录下新建文件swing2.rb,输入如下内容:

View Code

 1 # Import Java packages
 2 include Java
 3
 4 import javax.swing.JFrame
 5
 6 frame = JFrame.new("Hello Swing")
 7 button = javax.swing.JButton.new("Klick Me!")
 8 button.add_action_listener do |evt|
 9   javax.swing.JOptionPane.showMessageDialog(nil, <<EOS)
10 <html>Hello from <b><u>JRuby</u></b>.<br>
11 Button '#{evt.getActionCommand()}' clicked.
12 EOS
13 end
14
15 # Add the button to the frame
16 frame.get_content_pane.add(button)
17
18 # Show frame
19 frame.set_default_close_operation(JFrame::EXIT_ON_CLOSE)
20 frame.pack
21 frame.visible = true

然后执行bin\jruby samples\swing2.rb

我们可以看到调用的Swing程序:

        图:JRuby调用Swing程序

使用netbeans开发JRuby

到netbeans官方网站上下载

http://netbeans.org/

netbeans,因为最新版本安装这个插件有问题,所以这里下载的是netbeans7.1.1。

安装完成后到netbeans选择菜单“工具->插件”,将出现如下界面:

                       图:netbeans安装Ruby插件的界面

然后按照这篇文章中的描述,下载对应的文件,选择安装:

http://blog.enebo.com/2012/01/workaround-for-ruby-support-on-netbeans.html。

然后点击“工具->Ruby平台”,配置Ruby环境,因为我们选用的是JRuby,所以这里配置解析器为JRuby。

                  图:JRuby平台的环境配置

新建一个ruby应用

                  图:新建Ruby应用

然后选择工作空间和编译环境:

                  图:选择工程空间和编译环境

点击完成,然后在生成的main.rb文件中输入:

View Code

 1 class ADuck
 2     def quack()
 3         puts "quack A";
 4     end
 5 end
 6
 7 class BDuck
 8     def quack()
 9         puts "quack B";
10     end
11 end
12
13 # quack_it doesn't care about the type of the argument duck, as long
14 # as it has a method called quack. Classes A and B have no
15 # inheritance relationship.
16 def quack_it(duck)
17     duck.quack
18 end
19
20 a = ADuck.new
21 b = BDuck.new
22 quack_it(a)
23 quack_it(b)

点击运行或者按F6,就可以看到运行的结果。

转载于:https://www.cnblogs.com/skyme/archive/2012/08/18/2637417.html

JRuby——Java和Ruby的强强联合相关推荐

  1. JRuby:使Java和Ruby成为一家人

    一. 引言 Ruby是现在编程界讨论得正热火朝天的一种语言.这种语言功能强大而且易于使用:同时Ruby还紧密 绑定到例如Ruby on Rails等web应用程序开发框架中.另一方面,在过去的十年间, ...

  2. 通过drb集成java和ruby环境

    通过drb集成java和ruby环境 通过drb集成java和ruby环境 - fsword's blog 通过drb集成java和ruby环境 Mar 8th, 2012 | Comments ru ...

  3. 比较Perl、PHP、Python、Java和Ruby

    !预览 · 语言的发展趋势一定是动静结合.刚柔并济 · Perl凝练晦涩,Python优雅明晰,Ruby精巧灵动,PHP简明单纯 · 或许优雅正是来自对细节和规范的重视 · (RoR)与Ruby结合之 ...

  4. python对象模型 ruby_使用JRuby/Jython实现Ruby/Python的互操作性?

    不,那不行.至少不是你想的那样.在 Jython和JRuby之间的互操作性与CPython和YARV之间的工作方式相同:它们都运行在同一个平台上,因此可以使用该平台彼此通信.在 在CPython和YA ...

  5. Perl、PHP、Python、Java和Ruby的比较(来自知乎)

    ◆ 语言的发展趋势一定是动静结合.刚柔并济 ◆ Perl凝练晦涩,Python优雅明晰,Ruby精巧灵动,PHP简明单纯 ◆ 或许优雅正是来自对细节和规范的重视 ◆ (RoR)与Ruby结合之后,便如 ...

  6. 从Java到Ruby——我的最近一次技术转型

    来自:http://blog.csdn.net/mozilla/archive/2007/07/22/1702365.aspx   感觉不错,与大家分享. 这里所涉及到的都是与软件开发有关的技术,感觉 ...

  7. javapython区别最全整理终极收藏_Perl、PHP、Python、Java 和 Ruby 比较【转载+整理】...

    从本文的内容上,写的时间比较早,而且有些术语我认为也不太准,有点口语化,但是意思到了. 问题: Perl.Python.Ruby 和 PHP 各自有何特点? 为什么动态语言多作为轻量级的解决方案? L ...

  8. Perl、PHP、Python、Java和Ruby的比较

    提问 ◆ Perl.Python.Ruby和PHP各自有何特点? ◆ 为什么动态语言多作为轻量级的解决方案? ◆ LAMP为什么受欢迎? ◆ Ruby on Rails为什么会流行? ◆ 编程语言的发 ...

  9. java获取抓包数据中的data_【成都】金数据 | 前端、测试、高级Java、Ruby等岗位热招中!...

    成都IT内推圈成立于2016年,专注成都IT互联网领域的招聘与求职;覆盖精准IT人群10W+,通过内推圈推荐且已入职人数超过5000+,合作公司均系成都知名或靠谱公司.此公众号每天7:30AM准时推送 ...

最新文章

  1. 从产品的适用性以及费用方面考虑
  2. 推荐中的attention有什么作用?
  3. 情人节用python写个贪吃蛇安慰自己
  4. 筛表合集(素数筛 欧拉函数筛 莫比乌斯函数筛)
  5. 28-hadoop-hbase入门小程序
  6. 四.因子图优化学习---对因子图优化的粗浅理解
  7. python中加等是什么意思_Python创建类的时候,加()和不加有什么区别、联系?
  8. Oracle修改机器名后导致监听和console无法启动解决方法参考(转的)
  9. python机器学习案例系列教程——模型评估总结
  10. java8.0安装教程_jdk8安装教程详解
  11. 二维绕任意点旋转_旋转变换(一)旋转矩阵
  12. CodeForces - 3B Lorry【贪心】
  13. win10计算机中删除桌面,win10 电脑桌面文件夹为什么删不掉该如何处理
  14. ps cs6安装教程
  15. centos8安装和启动中文智能拼音
  16. 苹果8参数_iPhone11 iPhone11Pro哪里买最便宜靠谱划算 2020双十一苹果手机购机攻略...
  17. RNC/SGSN/PDP/IUPS概念
  18. 操作系统虚拟内存管理
  19. 常用的几款Vue移动端UI推荐
  20. [享学Eureka] 一、源生Eureka介绍 --- 基于注册中心的服务发现

热门文章

  1. 微信的原创保护机制到底是如何实现的?
  2. vue3+Typescript---Composition API(常用部分)学习笔记(二)
  3. 自学Python去接单,一周就能赚取近1200块,你看不起的行业,真的很赚钱!
  4. 浅谈Unity中的rotation和Quaternion的乘法
  5. 电脑报价管理系统C语言,C语言笔记本电脑销售系统课设(附源码).doc
  6. 海南楼市充斥着传说 投机者必将自食其果
  7. Android NFC 应用程序记录ARR
  8. python测试用例设计方法_功能测试用例设计方法分享
  9. 首席新媒体运营黎想教程:电商运营必须掌握的5个公式
  10. device unauthorized adbd cannot run as root in production builds insufficient permissions