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

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

\

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

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

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

\

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

\
\t \t我热爱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还有一些符号方法名(如!、%、\u0026amp;等等),我们需要将其在JRuby中公开出来,现在正在解决这个问题。

\

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

\
\t这或许是整个项目中最为困难的一部分了。我们针对Actor做了一个设计(尚未实现),看起来还不错: \t
\  class MyActor \u0026lt; LiftActor\    def string(str) # same as case str: String =\u0026gt;\    end\   \    def some_message(p1, p2) # same as case SomeMessage(p1, p2) =\u0026gt;\    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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值