BT

您是否属于早期采用者或者创新人士?InfoQ正在努力为您设计更多新功能。了解更多

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

| 作者 Mirko Stocker 关注 0 他的粉丝 ,译者 张龙 关注 9 他的粉丝 发布于 2011年2月19日. 估计阅读时间: 不到一分钟 | 硅谷人工智能、机器学习、互联网金融、未来移动技术架构 ,尽在QCon上海2017

近日,流行的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