JRuby是什么
来源:互联网 发布:淘宝客服兼职 招聘靠 编辑:程序博客网 时间:2024/05/01 01:58
作为一个Java程序员,你不要想在产品中使用Ruby直到你能够让它和存在的Java应用程序和类库进行交互,而这些程序和类库之中能够支持Ruby的很多种类的基本功能。JRuby,JVM下的一个开源Ruby解释器,能够在Java里面使用Ruby类库。就像标准的Ruby解释器一样,除开使用Ruby调用本地方法(C代码)或者Java类库以外,Ruby代码都能够在JRuby里面正确执行。
相比较于微软的.NET平台的公共语言运行时,JVM往往只能够支持一种语言。但是事实上,JVM平台不仅仅能够支持Java,而且可以支持Python、JavaScript、Groovy、Scheme,和其他各种语言,这意味着有必要的时候,Ruby代码能够和这些语言很好地进行交互。
在2006年7月中旬,JRuby仅仅有一个预览版本(0.9)。但是它迅速发展起来:一个志愿者团队从2005年一月开始总共发布了五个版本。JRuby通过针对标准解释器的不断评估测试逐渐成熟起来,而且现在已经超过90%的测试都是在基本支持Ruby on Rails这个框架。
为了尝试JRuby,保证Java SE 5 是安装好了的而且JAVA_HOME环境变量也是设置好了的。从JRuby的工程页面下载压缩包然后解压。设置JRUBY_HOME环境变量到JRuby安装的根目录。你可以在bin目录里面尝试着用jirb进行交互。大多数场合,你将使用JRuby解释器——创建一个文件将文件名作为一个参数传递到JRuby的bin目录下批处理脚本。
除了执行先前的Ruby代码,你仍然可以使用JRuby来构造Java对象,调用Java方法,从一个Java类继承。一个Ruby类能够实现Java接口——有必要的话可以在Java里面静态调用Ruby方法。
为了从Ruby访问Java需要初始化类库,需要以”java”命令开始。接下来用include_class方法指定需要使用的Java类,比如,include_class “javax.jms.Session”。你能够使用include_package导入整个Java包到Ruby模块里面。就像Java导入包的通配符语句一样,尽量避免include_package使用产生的名称冲突是明智的;在JRuby里,如果解释器为了需要的类搜索所有的包也是格外不明智的。尽可能严格地使用include_class。
很多Java标准类的名称和Ruby类的名称相同。为了解决这样的冲突,传递一个代码块到include_class函数,为这个Java类返回一个新名称,而且JRuby将使用这个名称作为Java类的别名。(见Listing4)
Listing 4. Include a Java class with clashing name
require "java"# The next line exposes Java's String as JStringinclude_class("java.lang.String") { |pkg, name| "J" + name }s = JString.new("f")
或者,你可以创建一个包含java类定义的Ruby模块,但是需要在一个隔离的名称空间里面。例如:
Listing 5. Java module importing multiple Java classes
require "java"module JavaLang include_package "java.lang"ends = JavaLang::String.new("a")
- JRuby是什么
- JRuby Basics(JRuby基础)
- JRuby Cookbook
- 走近JRuby
- 什么是JRuby
- JRuby安装
- JRuby 1.0 发布
- 咱也玩玩JRuby
- Jython、JRuby 和 Groovy
- JRuby的性能优化
- Groovy还是Jruby?
- 《JRuby实战》译序
- Jruby常用网站
- JRuby使用经验
- Spring AOP之Jruby
- (JRuby) Performance Tuning
- Jruby开发Web Service
- Jruby自动安装包
- 随机从oracle数据库取N条记录
- Seam+Flex开发入门--1为什么选择Seam+Flex
- windows中结束线程的4种方式
- JBoss 4.0.5 应用服务器WEB应用配置
- java script 判断和获取浏览器的类型
- JRuby是什么
- 配置Apache2.2+PHP5+CakePHP1.2+MySQL5
- C++ 中的位操作符
- 网站源码查看
- 仿MSN,QQ窗体震动的功能 (C#)
- 6大B2C购物系统比较
- 两种页面布局(Tiles、Sitemesh)
- 防SQL注入之SqlParameter的简单使用[C#]
- 学习 Zend Framework 框架连载(一)