jruby

 

1JRuby

JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。Rails彻底加快及简化了Web应用的开发,不过它让人觉得不够成熟,特别是在高端企业级功能方面。另一方面,Java平台及其虚拟机、库和 应用服务器的速度、稳定性和功能方面却一直在提升,现在已被公认为是开发高端服务器。

 

calling a Java method from Ruby
pdf_demo.rb:

#encoding: utf-8

require 'java'
pdf = com.itextpdf.text.Document.new
para = com.itextpdf.text.Paragraph.new 'Brought to you by JRuby'
file = java.io.FileOutputStream.new 'pdf_demo.pdf'
com.itextpdf.text.pdf.PdfWriter.get_instance pdf, file
pdf.open
pdf.add para
pdf.close

 


ruby代码如何加载并与java开发包进行交互
使用iText库来生成pdf文件,在官网http://sf.net/projects/itext/files上下载最新的jar包, 拷贝到当前文件夹
-J-cp 用于指定jar位置


jruby -J-cp itextpdf-5.5.5.jar pdf_demo.rb


在JRuby中,java的方法看起来很像ruby的方法,在这个例子中,你所看到的所有方法都来自与java类
包括get_instance, JRuby将getInstance()重命名为 get_instance, 更好的适应ruby语法结构。


JRuby - Extending a Ruby Program

 


Ackermann.java


public class Ackermann {
    public static int ack(int m, int n) {
        if (m == 0)
            return n + 1;
        if (n == 0)
            return ack(m - 1, 1);
        return ack(m - 1, ack(m, n - 1));
    }
}

 


编译.java文件

javac Ackermann.java

 


在调用Ackermann.ack的时候,加上Java::

require 'rubygems'
require 'java'

puts  Java::Ackermann.ack(3,9).to_s



关注我
微信号: ruby程序员 (←长按复制)
[Ruby程序员]旨在分享最新的Ruby & Rails,移动开发以及其他相关技术的分享,内容通俗易懂,有来自北京,上海,广州的技术达人不定期的分享。

 

 

你可能感兴趣的:(jruby)