写点什么

David Pollak 谈 lift 框架和 Scala 语言

  • 2008-03-12
  • 本文字数:1466 字

    阅读完需:约 5 分钟

昨天 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-03-12 21:153848
用户头像

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

关注

评论

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

性能优化之母:为什么说“方法内联”是编译器优化中最关键的一步棋?

poemyang

编译原理 Java虚拟机 JIT编译器 #java

大数据-64 Kafka 深入理解 Kafka 分区与重分配机制:高并发与高可用的核心 实机测试

武子康

Java 大数据 kafka 分布式 消息队列

企业在黑龙江做二级等保测评,一般要准备哪些材料?

等保测评

一分钟读懂超融合架构 | 轻松干货

智驱前线

超融合架构

黑龙江的二级等保和三级等保,在保护要求上有啥不一样?

等保测评

超融合架构:破解传统 IT 困局的关键引擎

智驱前线

IT 超融合架构

区块链Web3项目的开发流程

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

区块链开发 软件外包公司 web3开发

使用spaCy检测编程语言的NLP技术解析

qife122

自然语言处理 编程语言检测

京东商品列表API秘籍!轻松获取商品列表数据

tbapi

京东API 京东商品列表API 京东数据采集 京东数据分析

超融合架构:中小企业数字化转型的利器

智驱前线

超融合架构

意念统御,军团集结!网易伏羲以科技重铸《魔兽世界》统御之盔,用意念“控制”机器人

网易伏羲

网易伏羲 脑机接口 人形机器人 宇树科技 魔兽世界

【AI编程】让Codebuddy改写《浪浪山小妖怪》,结果写出了打工人血泪史

卷福同学

超融合架构:数字化转型的万能钥匙?这些场景适用!

智驱前线

超融合架构

MyEMS:以开源创新构建企业能源管理的自主可控生态

开源能源管理系统

开源 能源管理系统

网站卡顿被攻击?EdgeOne 十分钟接入指南:安全加速一体化落地实战

六月的雨在InfoQ

CodeBuddy首席试玩官 CodeBuddyIDE AIIDE 边缘安全加速平台 EO

黑龙江等保测评结果与企业的信用、资质有何关联?

等保测评

超融合:企业最关心的那些事

智驱前线

超融合

Intigriti Bug Bytes

qife122

漏洞挖掘 漏洞赏金

基于 WebGL 的数字孪生项目

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

软件外包公司 数字孪生开发 webgl开发

详细解析!高校行业指标体系建设与 AI 数智应用方案

袋鼠云数栈

指标体系 高校 指标建设 数字化转型‘’ 数智应用

可定制NLP工具包spaCy与LLM集成技术解析

qife122

自然语言处理 开发者工具

基于AI的课程内容生成系统技术解析

qife122

系统架构 生成式AI

CANN与智谱GLM强强联合,国产AI加速迈向端云协同

极客天地

基于Python爬虫实战:获取财经股票数据

袁袁袁袁满

Python爬虫 爬虫案例 爬虫实战 采集股票数据

2025 WAIC探展合合信息展台:AI鉴伪技术洞察“看不见”的伪造痕迹

猫头虎

人工智能 OCR OCR识别 ai鉴伪

AI语境下创新教学模式应用示范与推广联盟成立丨南开大学携手和鲸,破解AI时代教育难题

ModelWhale

AI教育 南开大学 和鲸

海外品牌危机频发的背后,你是否看见了数据盲区?

沃观Wovision

数据 沃观Wovision 舆情监测系统 海外舆情监测

超融合架构是什么?一文看懂计算、存储、网络的一体化

智驱前线

数据中心升级十字路口:超融合架构,是理想路径还是现实考量?

智驱前线

超融合架构

百度搜索PC端全量上线系列AI功能  AI搜索月活已超3.22亿

极客天地

什么是真正的Monorepo?深入解析单一代码仓库的利与弊

qife122

版本控制 软件开发

David Pollak谈lift框架和Scala语言_Java_Gavin Terrill_InfoQ精选文章