NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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:001474
用户头像

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

关注

评论

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

文心一言 VS 讯飞星火 VS chatgpt (77)-- 算法导论7.3 2题

福大大架构师每日一题

福大大架构师每日一题

搭载KaihongOS的工业平板、机器人、无人机等产品通过3.2版本兼容性测评,持续繁荣OpenHarmony生态

OpenHarmony开发者

OpenHarmony

成本翻倍,部署复杂?那是你用错了kubernetes!

鼎道智联

Kubernetes CI/CD

嵌入式开发场景下的代码管理方案(上)

极狐GitLab

git svn gitlab 嵌入式 源代码管理

腾讯云原生数据库TDSQL-C Serverless架构全新升级,助力业务存储成本降低80%

Geek_2d6073

苹果mac版 Photoshop 2023 v25.0beta「ps」

胖墩儿不胖y

ps 2023 PS 2023破解 ps ai beta

跨国视频传输速度太慢?那是因为没有好的跨国文件传输工具

镭速

跨国传输大文件 跨国传输

Java应用堆外内存泄露问题排查 | 京东云技术团队

京东科技开发者

Java 内存泄露 堆外内存 企业号 8 月 PK 榜

从 1 杯咖啡到 1 首歌的时间,炎凰数据如何实现 Pipeline 执行提速 6 倍?

极狐GitLab

DevOps gitlab cicd pipeline 炎凰数据

IPQ4019-IPQ4029-IPQ5018-IPQ6010-support 802.11KVR-Fast Roaming-The Future of Seamless Connectivity

wifi6-yiyi

wifi5

JVM关闭前做点什么

FunTester

在 React 中获取数据的6种方法

互联网工科生

JavaScript React Promise

京东门详一码多端探索与实践 | 京东云技术团队

京东科技开发者

小程序 taro 企业号 8 月 PK 榜 一码多端

使用NineData实现数据量亿级别MySQL大表迁移

NineData

数据库 NineData MySQL大表迁移 迁移方案 迁移复制

什么文件传输协议才能保障跨国文件传输安全又稳定

镭速

文件传输协议 跨国文件传输

【墨菲安全实验室】企业微信私有化2.5-2.6.93版本后台API未授权访问漏洞

墨菲安全

网络安全 安全 企业微信 漏洞分析

华为云零代码新手教学-体验通过Astro Zero快速搭建微信小程序

华为云PaaS服务小智

开发者 低代码 华为云

软件测试/测试开发丨Python 常用第三方库 urllib3

测试人

Python 程序员 软件测试 测试开发 urllib

智能仓储管理系统(自动化仓库管理解决方案)

万界星空科技

MES系统 仓储执行系统 WMS仓库管理

带你快速上手HetuEngine

华为云开发者联盟

大数据 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

医疗机构过等保选择哪款堡垒机好?为什么?

行云管家

网络安全 等保 等级保护 IT运维 医疗机构

解锁数据潜力:信息抽取、数据增强与UIE的完美融合

汀丶人工智能

人工智能 自然语言处理 信息抽取

聊聊自动化测试的分层实践

老张

自动化测试

Parallels Desktop 18 中文激活-Pd 18密钥

mac大玩家j

极光笔记 | 如何为您的业务开发和训练一个AI-BOT

极光JIGUANG

人工智能 AI技术 AI工具

StoneData 2.0 正式上线阿里云市场,高性能、低成本一站式实时数仓,满足用户全场景分析需求

StoneDB

MySQL 数据库 HTAP StoneDB

攀枝花是哪个省的?当地有等级保护测评机构吗?

行云管家

等保 等级保护 等保测评 攀枝花

TDengine 全新打造数据接入功能,让 MQTT 无缝数据接入变得很简单

TDengine

时序数据库 mqtt #TDengine

【墨菲安全实验室】jeecg-boot/积木报表基于SSTI的任意代码执行漏洞

墨菲安全

漏洞 jeecg-boot MPS-4hzd-mb73

糟了糟了,总部被SD画完都Q了,这篇深入浅出贴助你早日实现Stable Diffusion自由 | 京东云技术团队

京东科技开发者

AI绘画 Stable Diffusion 企业号 8 月 PK 榜

Tampermonkey for Mac(油猴Safari浏览器插件) 4.17.6162 中文版

mac

油猴 苹果mac Windows软件 Tampermonkey插件

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