案例分享:阿里巴巴全球化电商核心系统架构实战,点击学习>>> 了解详情
写点什么

David Pollak 谈 lift 框架和 Scala 语言

2008 年 3 月 12 日

昨天 David Pollak 宣布 lift 的 0.6 版发布了

lift 是一个用于开发 Web 应用的表达力强大而优美的框架。lift 强调安全性、可维护性、可伸缩性和性能,同时使开发者达到高水平的生产效率。

lift 0.6 带来了以下刺激的新鲜的增强的新特性:

  • 支持 Scala 2.7.0(这意味着你可以使用 Eclipse 来开发 lift 应用) - lift 核心类的本地化(谢谢 Marius)
    - 增强了重定向的支持
    - 支持 Cookie(而不是使用基础的 Servlet cookie 支持)
    - 增强了 Prepared Statements
    - 显著增强了对 JSON 的支持和客户端 HTML 生成
    - 提高了测试和文档(谢谢 Eric)

InfoQ 询问了 David 关于他开发lift的动机以及到目前为止他使用 Scala 的经验。

你可以给我们介绍一些导致你开发lift的背景经验么?

我做了 18 个月的 Rails 开发和 10 年的 Java 开发。Rails 对于 Web 开发来说是一个新颖的视角……对于普通任务,Rails 是“最便捷”(short path) 的方式。它很伟大。但是,我发现 Ruby 的动态类型导致了许多错误,并且导致需要 95% 的测试覆盖率来保证可靠的部署。不幸的是,为了达到 95% 的测试覆盖率,我的代码数量(包括测试)激增到接近 Java 代码数量的水平。而且,因为 Rails 在开发、测试和部署的时候“总是改变事物”(Rails 动态改变它的方法),即使有出色的测试覆盖,还是经常出现部署事故。上述情况再加上 MRI Ruby 实现的缓慢和不稳定以及开发社区的漠不关心,我决定“另寻出路”。我无意中碰到了 Scala 然后立刻认识到它就是我正在寻找的语言。Scala 拥有所有我喜欢的 Ruby 的语言特征和所有我喜欢的 Java 的语言特征。对我来说,这是一个“把你的花生酱放进我的巧克力”的时刻。

什么因素使得 Scala 成为构建一个 Web 框架的伟大环境?

句法。性能。稳定性。一个仅当你需要的时候才出现的优秀的类型系统。闭包。模式匹配。内建的 XML 语言支持(XML literals)。Actor[译注:Scala 的基本并发构造]。很难说什么是决定性因素。

lift与 Rails 以及 Seaside 或者其他 Java 框架例如 Structs 或者 Spring 的区别是什么?

像 Rails 一样容易而简明。 像 Seaside 和 Wicket 一样安全而正式。

类型安全但不像 Struts 一样冗长。

支持允许多人合作的“实时”应用。

所以,你可以飞快地构建巨强大的应用(就像 Rails),但是你不必把所有的状态一股脑地扔进一个关系数据库中。状态是“活的”而不是冻干的,这使得写从前端访问数据库表的应用非常地不同以往。

你可以描述一下你在生产环境中部署lift的经验么?你看到的性能如何?

我对 lift 应用做了许多基准性能测试。lift 的渲染管道简明扼要,而且 lift 在标准的 web 容器中运行。这意味着你可以得到与良好开发的 J2EE 应用相同的性能。对于数据库无关的页面,lift 的渲染时间通常低于 1 秒。对于需要访问数据库的页面,页面渲染时间与数据库访问相关。在一个 Amazon EC2 实例上(1.7Ghz Intel 处理器,2GB 内存),我可以支撑每秒 500+ 的页面访问,其中 50% 的页面要访问数据库,而且 MySQL 实例与 Web 应用运行在相同的服务器上。

你如何看待 lift与现存的 Java 应用配合工作,或者在混合语言环境(例如 JRuby)中工作?

lift 与现存的 Java 代码配合工作的非常好。lift 的 RabbitMQ 和 XMPP 支持是基于 Java 库的。Scala 可以 100% 无缝的调用 Java 代码。Scala 可以 100% 无缝的实现 Java 接口,继承 Java 类。它就是可以工作。至少有一个 lift 项目,其中 lfit 和 Spring 在同一个 WAR 文件中共存。我的第一个 Scala 应用是一个 Servlet 容器。"它就是可以工作"让我松了一大口气。

查看英文原文: David Pollak on lift and Scala

2008 年 3 月 12 日 21:153038
用户头像

发布了 47 篇内容, 共 76902 次阅读, 收获喜欢 2 次。

关注

评论

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

立于山巅!他,凭什么抗住万亿级流量冲击!

博文视点Broadview

❤️专科出身拿到阿里offer,我直呼666!【付硬核面试】❤️

编程susu

Java 编程 程序员 面试 计算机

简述 Linux I/O 原理及零拷贝(上)— 磁盘 I/O

Qunar技术沙龙

Linux 缓存 Mmap 磁盘 I/O

ipfs矿机公司星际联盟是什么公司?星际联盟ipfs矿机靠谱吗?

IPFS星盟小熊

分布式存储 IPFS Filecoin ipfs挖矿 ipfs矿机

简述 Linux I/O 原理及零拷贝(下) — 网络 I/O

Qunar技术沙龙

Linux TCP I/O DPDK 网络io

FabEdge快速安装指南,极速上手体验边缘集群

BoCloud博云

边缘计算 博云开源 FabEdge 技术干货

软件测试框架之——Postman参数化(超详细小白教程)

程序员阿沐

软件测试 自动化测试 接口测试

论坛接口测试——Postman数据驱动(超详细小白教程)

程序员阿沐

编程 程序员 软件测试 自动化测试 接口测试

石油行业数据采集中的 MQTT 协议

EMQ映云科技

数据 mqtt emq 远程监控 实时数据

fil矿机1T一天可以挖多少币?fil矿机能挖多久?

IPFS老胡

fil矿机能挖多久 fil矿机1T一天可以挖多少

Go- 可变参数函数

HelloBug

Go 可变参数函数 空接口

Apache APISIX 社区周报 | 2021 8.16-8.22

Apache APISIX 中国社区

Apache 开源 APISIX 社区 社区周报

又快又稳!Alibaba出品Java性能优化高级笔记(全彩版)震撼来袭

Java~~~

Java 架构 jdk 面试 JVM

解密优酷智能生产技术,看 AI 赋能内容数字化

阿里云视频云

音视频 短视频 视频处理 视频制作 视频云

webrtc BitrateAllocator 带宽分配器

糖米唐爹

WebRTC

译文 | 四张画布教你判断「产品开发优先级」

LigaAI

产品经理 产品开发 画布 产品优先级

fil挖矿怎么挖?fil挖矿成本是多少?

IPFS老胡

fil挖矿怎么挖 fil挖矿成本是多少

面试“特效药”,不愧是Github上标星80K的腾讯Java进阶笔记!

互联网架构师小马

Java 面试

可视化全埋点系列文章之功能介绍篇

神策技术社区

程序员 代码 埋点 神策数据

简单、快捷、低成本的超写实虚拟人平台来了……

百度开发者中心

人工智能 AI 最佳实践 虚拟人 前沿技术

影像篡改与识别(一):胶片时代

腾讯安全云鼎实验室

影像 暗房技术 篡改识别

腾讯WeTest压测大师通过中国计量科学研究院测试认证,获国家级权威认可

WeTest

一个案例:论写作的重要性

非著名程序员

个人成长 写作 认知提升 8月日更

如何优雅的在业务中使用设计模式(代码如诗)

小呆呆666

flutter android 前端 设计模式

短视频询盘获客系统开发案例解析

获客I3O6O643Z97

抖音、快手获客系统 抖音矩阵拓客

入职京东:成功拿到offer薪资30K「面试经历+面试真题」

今晚早点睡

Java 秋招

Redis高可用之主从复制实践

普普通通程序员

微服务的痛:你的微服务还好吗?

我爱娃哈哈😍

架构设计 架构设计实战

吹爆!阿里高工携18位架构师耗时57天整合的1658页面试总结太香了

Java~~~

Java spring 架构 面试 JVM

阿里,字节,腾讯,面试题都涵盖了,这一份Java面试文档也太强了

Crud的程序员

Java 程序员 架构 面试 编程语言

Go- defer

HelloBug

Go defer 代码追踪 记录函数参数和返回值

数据库运维技术发展与展望

数据库运维技术发展与展望

David Pollak谈lift框架和Scala语言-InfoQ