BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

JRuby 1.4 RC1发布:增加了Windows安装包、1.8.7支持及新的嵌入式 API

| 作者 Werner Schuster 关注 7 他的粉丝 ,译者 张龙 关注 14 他的粉丝 发布于 2009年10月19日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

JRuby 1.4 RC1发布了(点击此处查看JRuby 1.4 RC1的所有版本)。

JRuby 1.4 RC1进行了大量的改进,如对Ruby 1.8.7的支持及新的Java集成支持(此前InfoQ曾进行过报道)

Windows用户可能会对新的JRuby安装包情有独钟,该安装包是个.exe文件,可从JRuby 1.4下载点下载

对于那些想在应用中嵌入JRuby进行脚本编程或是想从Java代码中调用JRuby的开发者来说有个好消息,现在可以使用“Red Bridge”或是org.jruby.embed了,这是一个新的嵌入式API,将在JRuby的未来版本中替换掉JavaEmbedUtils。

Red Bridge的创建者Yoko Harada解释到

在JRuby 1.4 RC1发布后,用户可能会被JRuby的JavaEmbedUtils和Red Bridge搞晕了,到底应该用哪个呢?毫无疑问,新用户应该首选Red Bridge,因为其使用简单且功能强大。现在我们正在商讨如何废弃JavaEmbedUtils以及与嵌入式相关的其他接口。很多包(包括JRuby Rack)都使用到了JavaEmbedUtils以及其他嵌入式API,因此这是一个牵一发而动全身的事情,需要谨慎行事。

Red Bridge和其他嵌入式API修复了一些问题,像是如何跨越对JRuby的不同调用查看调用变量等。新的org.jruby.embed.ScriptingContainer文档中写到:

第三个示例介绍了如何在多个赋值语句之间保持局部变量。该特性模拟了JRuby的BSF引擎。在Ruby语义下,一旦赋值结束,局部变量就失效了。因此,该特性是可选的,同时在容器实例化时用户需要指定LocalVariableBehvior.PERSISTEN。

示例代码:

ScriptingContainer container = new ScriptingContainer(LocalVariableBehavior.PERSISTENT);
container.runScriptlet("p = 42");
container.runScriptlet("puts #{p}");

如果没有指定LocalVariableBehavior.PERSISTENT,那么在第二次调用container.runScriptlet时变量p就失效了,因此需要将其声明为全局变量而非局部变量。

我们希望大家都来试用JRuby 1.4 RC1,有问题请及时报告。

最后,对JRuby感兴趣的用户可以阅读R.J. Lorimer关于JRuby内核的系列文章,最新的文章深入分析了JRuby JIT。

查看英文原文:JRuby 1.4RC1 Released, Adds Windows Installer, 1.8.7 Support, New Embedding API

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT