写点什么

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

  • 2011-02-19
  • 本文字数:1435 字

    阅读完需:约 5 分钟

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

2011-02-19 02:002021
用户头像

发布了 88 篇内容, 共 273.4 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

托住每份期待,双十一“购”顺畅!

天翼云开发者社区

云服务

互联网云签电子合同小程序:高效便捷的数字化签署解决方案

微擎应用市场

从 Transform 到 Transformer,用 EventBridge 与百炼构建实时智能的 ETL 数据管道

阿里巴巴云原生

阿里云 云原生 EventBridge

2025年上海敏捷之旅·Jim老师话题分享

ShineScrum

敏捷活动

从素人到网红:如何利用海外网红推广打造品牌信任链条?

Wolink

跨境电商 品牌营销 海外社媒营销 海外营销推广 海外红人营销

Bonree ONE 2025秋季版功能上新视频重磅发布!

博睿数据

直播回顾 | 攻克转型挑战!博睿数据详解车企可观测性体系建设的核心价值

博睿数据

物流信息总滞后?快递鸟在途监控 API,毫秒级响应让物流透明不等待

快递鸟

直播预告 | 博睿数据 × 高效运维:《AI + 可观测引领智能运维的全面革新》

博睿数据

超级服务商城 O2O 小程序系统:一站式服务交易解决方案

微擎应用市场

平台亮点 | 数据堂位姿标注工具:助力具身智能理解真实世界

数据堂

人工智能 数据标注 标注平台 具身智能 位姿估计

vivo国产数据库技术储备,突破大规模数据的存储与性能瓶颈

老纪的技术唠嗑局

数据库 #OceanBase

不止点赞数:如何用数据驱动社交媒体营销决策?

Wolink

跨境电商 品牌营销 海外社媒营销 海外营销推广 海外红人营销

UI自动化维护成本高?一个Dify工作流,实现自愈式测试,告别脚本脆弱性

测吧(北京)科技有限公司

智慧生产管控数字化平台

深圳亥时科技

Golang 构建网络漏洞扫描器

俞凡

golang 网络安全

【跨国数仓迁移最佳实践11】基于 MaxCompute Resource & Quota策略优化实现资源管理性能与成本最优平衡

阿里云大数据AI技术

阿里云 数据仓库 数据迁移 MaxCompute

微网红矩阵正在颠覆传统的海外红人营销新模式

Wolink

海外社媒营销 海外营销推广 海外红人营销 品牌推广

2026年社交媒体营销的5大趋势与行动指南

Wolink

跨境电商 出海企业 海外营销推广 海外红人营销 品牌推广

告别灵感枯竭:社交媒体营销爆款内容的底层逻辑与公式

Wolink

跨境电商 品牌营销 海外社媒营销 海外营销推广 海外红人营销

OA办公系统是干什么的?有哪些功能?怎么使用?

数字工具研究

OA办公软件

KaiwuDB 焕新升级 —— V3.0 重磅发布!

KaiwuDB

数据库 KaiwuDB 分布式多模数据库

避坑指南:海外网红推广中必须注意的7个风险

Wolink

跨境电商 海外社媒营销 海外营销推广 海外红人营销 品牌推广

从技术角度看:如何安全实现YouTube下载1080P视频

So...

4k视频素材下载 油管视频下载 youtube 油管视频

区块链技术在游戏中的应用

北京木奇移动技术有限公司

区块链技术 区块链游戏 软件外包公司

企业海外营销内容本土化的核心策略与实战案例

Wolink

跨境电商 出海企业 海外营销推广 品牌出海 品牌推广

解码Z世代:如何通过海外网红推广触达年轻消费群体?

Wolink

跨境电商 海外社媒营销 海外营销推广 海外红人营销 品牌推广

系统日志管理与审计

运维有小邓

日志管理 日志审计 日志管理系统 #日志分析 日志收集

KubeEdge 1.22.0版本发布!边缘资源管理能力提升!

华为云原生团队

云计算 容器 云原生 边缘计算

大模型幻觉挑战凸显,企业级应用如何破局?

EasyLink_ai

人工智能 OCR rag 大模型幻觉

数字揭秘丨《回到未来》中布朗博士的生存真相

Altair RapidMiner

人工智能 AI 仿真 CAE MotionSolve

Lift JRuby集成架起了Ruby与Scala之间的桥梁_Java_Mirko Stocker_InfoQ精选文章