JRuby——Java和Ruby的强强联合

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

什么是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,就可以看到运行的结果。

目录
相关文章
|
7月前
|
Java Linux 应用服务中间件
在 Ruby on Rails 应用程序中重用 Java 代码
在 Ruby on Rails 应用程序中重用 Java 代码
|
Java 数据挖掘 数据库连接
简单讲一下 python,Java,C++,C#,Go,Ruby 语言的优势和前景
python,Java,C++,C#,Go,Ruby 语言的优势和前景
简单讲一下 python,Java,C++,C#,Go,Ruby 语言的优势和前景
|
Java 程序员 Ruby
Rava助Java程序员尽快适应Ruby
对于程序员来说,从Java切换到Ruby是一个重大的改变。Rava让这个迁移的过程舒适一些。
255 0
Rava助Java程序员尽快适应Ruby
|
Java Ruby 容器
java调用ruby代码
问题: 最近在做一个应用的时候碰到了一个问题。客户端需要调用服务器端传回的脚本信息,然后执行。其中脚本类型包括ruby。而java中调用ruby的代码大致如下: 1 String jrubyCode="puts 'hello world'"; 2 ScriptEngineManager ...
1277 0
|
7天前
|
安全 算法 Java
深入理解Java并发编程:线程安全与性能优化
【4月更文挑战第11天】 在Java中,高效的并发编程是提升应用性能和响应能力的关键。本文将探讨Java并发的核心概念,包括线程安全、锁机制、线程池以及并发集合等,同时提供实用的编程技巧和最佳实践,帮助开发者在保证线程安全的前提下,优化程序性能。我们将通过分析常见的并发问题,如竞态条件、死锁,以及如何利用现代Java并发工具来避免这些问题,从而构建更加健壮和高效的多线程应用程序。
|
1天前
|
安全 Java
java多线程(一)(火车售票)
java多线程(一)(火车售票)
|
1天前
|
安全 Java 调度
Java并发编程:深入理解线程与锁
【4月更文挑战第18天】本文探讨了Java中的线程和锁机制,包括线程的创建(通过Thread类、Runnable接口或Callable/Future)及其生命周期。Java提供多种锁机制,如`synchronized`关键字、ReentrantLock和ReadWriteLock,以确保并发访问共享资源的安全。此外,文章还介绍了高级并发工具,如Semaphore(控制并发线程数)、CountDownLatch(线程间等待)和CyclicBarrier(同步多个线程)。掌握这些知识对于编写高效、正确的并发程序至关重要。
|
1天前
|
安全 Java 程序员
Java中的多线程并发编程实践
【4月更文挑战第18天】在现代软件开发中,为了提高程序性能和响应速度,经常需要利用多线程技术来实现并发执行。本文将深入探讨Java语言中的多线程机制,包括线程的创建、启动、同步以及线程池的使用等关键技术点。我们将通过具体代码实例,分析多线程编程的优势与挑战,并提出一系列优化策略来确保多线程环境下的程序稳定性和性能。
|
2天前
|
缓存 分布式计算 监控
Java并发编程:深入理解线程池
【4月更文挑战第17天】在Java并发编程中,线程池是一种非常重要的技术,它可以有效地管理和控制线程的执行,提高系统的性能和稳定性。本文将深入探讨Java线程池的工作原理,使用方法以及在实际开发中的应用场景,帮助读者更好地理解和使用Java线程池。