BT

你的观点很重要! 快来参与InfoQ调研吧!

Lift JRuby集成架起了Ruby与Scala之间的桥梁

| 作者 Mirko Stocker 关注 0 他的粉丝 ,译者 张龙 关注 9 他的粉丝 发布于 2011年2月19日. 估计阅读时间: 5 分钟 | ArchSummit社交架构图谱:Facebook、Snapchat、Tumblr等背后的核心技术

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

近日,流行的Scala Web框架Lift(单击以查看InfoQ上关于Lift的更多报道)想通过一个JRuby API吸引Ruby程序员。Lift创建者David Pollak写到:“除了某些特殊情况,JRuby中可以完美应用Lift”。

但既然有了Rails和其他Ruby框架可以开发Web应用,Ruby开发者为何还会使用Lift呢?David在声明中写到:

Lift无疑是目前最为优秀的Web框架。相对于其他任何Web框架来说,它对Comet和Ajax都提供了更好的语义支持。默认情况下,它比其他大多数框架都更为安全。基于Lift的应用的可伸缩性也更棒。Lift应用要比其他大多数Web应用都更为简洁。换句话说,如果你是个Ruby开发者,正在寻找更加安全、可伸缩性更好的Web框架以构建交互性更好的应用,那么Lift就是你的不二之选。

你可以通过Lift's Seven Things站点验证上面这些声明,该站点提供了一些示例,演示了“其他Web框架很难或是根本没法实现的7件事”。

我们向David问到:将Lift带给Ruby程序员的动机是什么。

我热爱Scala,它是我最钟情的编程语言。在与一些开发组织交流并看到Scala的使用率之后,我认识到Scala在未来几年内的使用率不可能达到Ruby,甚至是Python的水平。另一方面,Lift已经演变为一个成熟的Web框架,比其他任何Web框架(看看Seven Things吧)都更为安全、更易于构建交互式应用。因此,我决定在Lift中支持其他语言。

我相信这么做是正确的,并且招聘了几名资深的Ruby开发者帮助我在Lift中开发Ruby API,他们看起来像是Ruby API,而非生硬地添加到Lift之上的附属物。我们打算采用Ruby的方式编写Lift-Ruby代码。感兴趣的读者可以到http://liftjr.org了解更多信息。

我真诚希望Lift之上的Ruby API能够以一种比Scala API更好的方式将Lift暴露出来,未来某一天,Ruby方式终究会对Lift的Scala API产生积极的影响。

但作为静态语言Scala的拥趸,我的主要目标是少说、多听,看看我们到底能将Ruby API开发到什么程度。

InfoQ:从JRuby中访问Scala或是从Scala中访问JRuby会遇到什么问题呢?

JRuby API是整洁、平滑且易于使用的。除了标准的unityped与完整的类型之间的差别外并没有什么实际的问题,请查看Philip Wadler的介绍。

如果从JRuby中访问Scala,那么Scala的singletons(object关键字)会产生一些问题,我们已经增强了JRuby,将其当作是Ruby的Class对象。Scala还有一些符号方法名(如!、%、&等等),我们需要将其在JRuby中公开出来,现在正在解决这个问题。

InfoQ:Scala的一个非常灵巧,又被经常使用的一个特性就是模式匹配,而这在Ruby中却没有对应之物。你提到了Ruby中用于模式匹配的DSL,能否向我们介绍一下呢?

这或许是整个项目中最为困难的一部分了。我们针对Actor做了一个设计(尚未实现),看起来还不错:
  class MyActor < LiftActor
    def string(str) # same as case str: String =>
    end
   
    def some_message(p1, p2) # same as case SomeMessage(p1, p2) =>
    end
  end
我们还具体分析了每一种模式匹配的情况。重申一次,这个想法是以Ruby的方式编写API,但却反映出Lift的语义而不是将Scala语法硬塞到Ruby语法中。

Lift Google Group上的其他Ruby开发者的建议也是非常不错的。

Lift JRuby集成有自己的站点(liftjr.org)。不知读者怎么看?Ruby和Scala社区会从这种跨界中受益么?

查看英文原文:Lift-JRuby Integration Bridges the Gap Between Ruby and Scala

评价本文

专业度
风格

您好,朋友!

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

获得来自InfoQ的更多体验。

告诉我们您的想法

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

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

目标漂浮不定 by zhong shigang

有点好笑,lift是看好rails的方式和scala的语言,现在又用ruby。你有好的想法,还不如去升级rails。

Re: 目标漂浮不定 by Liu Jarod

虽然我也不看好liftjr,但lift不算是rails的模仿者

允许的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通知我

2 讨论

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


找回密码....

Follow

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

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

Like

内容自由定制

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

Notifications

获取更新

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

BT