C11.Lift Web Framework

The Definitive Guide to Lift: A Scala-based Web Framework

當您處於任何俱開發框架(Framework)之中, 尤甚是以 Web 形態的學習或者產品階段時, 您都必須隨時提醒自己, 您的"創造力"正不自覺被“框“限侵蝕, 進而可能讓您成為特定"框"的高階使用者甚至代言人, 這點要非常之小心, 不要忘了您的初衷!~ 老魚

Lift 是一個用於開發Web應用的表達力強大而優美的框架。 
http://liftweb.net/
Github - Lift, https://github.com/lift/framework
Lift 創造者 David 做的展示站, http://lift-example.appspot.com/

好文選

http://bone.forestlife.info/book/LiftFramework











Reference





InfoQ詢問了David關於他開發lift的動機以及到目前為止他使用Scala的經驗。
我做了18個月的Rails開發和10年的Java開發。Rails對於Web開發來說是一個新穎的視角……對於普通任務,Rails是「最便 捷」(short path)的方式。它很偉大。但是,我發現Ruby的動態類型導致了許多錯誤,並且導致需要95%的測試覆蓋率來保證可靠的部署。不幸的是,為了達到 95%的測試覆蓋率,我的代碼數量(包括測試)激增到接近Java代碼數量的水平。而且,因為Rails在開發、測試和部署的時候「總是改變事物」(Rails動態改變它的方法),即使有出色的測試覆蓋,還是經常出現部署事故。上述情況再加上aMRI Ruby實現的緩慢和不穩定以及開發社區的漠不關心,我決定「另尋出路」。我無意中碰到了Scala然後立刻認識到它就是我正在尋找的語言。Scala擁有所有我喜歡的Ruby的語言特徵和所有我喜歡的Java的語言特徵。

lift強調
  • 安全性
  • 可維護性
  • 可伸縮性
  • 性能
  • 使開發者達到高水準的生產效率
句法。性能。穩定性。一個僅當你需要的時候才出現的優秀的類型系統。閉包。模式匹配。內建的XML語言支持(XML literals)。Actor[譯註:Scala的基本並發構造]。


我對lift應用做了許多基準性能測試。lift的渲染管道簡明扼要,而且lift在標準的web容器中運行。這意味著你可以得到與良好開發的J2EE應 用相同的性能。對於資料庫無關的頁面,lift的渲染時間通常低於1秒。對於需要訪問資料庫的頁面,頁面渲染時間與資料庫訪問相關。在一個Amazon EC2實例上(1.7Ghz Intel處理器,2GB內存),我可以支撐每秒500+的頁面訪問,其中50%的頁面要訪問資料庫,而且MySQL實例與Web應用運行在相同的服務器 上。

lift與現存的Java代碼配合工作的非常好。lift的RabbitMQ和XMPP支持是基於Java庫的。Scala可以100%無縫的調用 Java代碼。Scala可以100%無縫的實現Java接口,繼承Java類。它就是可以工作。至少有一個lift項目,其中lfit和Spring在 同一個WAR文件中共存。我的第一個Scala應用是一個Servlet容器。"它就是可以工作"讓我鬆了一大口氣。

Lift是一個非常優雅的web框架,基於Scala編程語言,使用Apache 2.0 license許可發佈。Lift 提供開發者最好的方式創建交互的,高性能的web應用。基於Lift 的應用能夠部署為WAR文件進入 J2EE 容器,類似Jetty, Tomcat, 和 WebLogic。基於Lift 的應用擁有高性能和能夠使用你現存的Java庫。

◆Lift 的Comet 和 Ajax 支持能夠讓開發者創建實時交互應用

◆Lift 的簡潔的代碼允許開發者能夠極大的提高開發生產力,類似Rails 和 TurboGears

◆Lift 提供高性能 和 擴展能力

◆Lift 內建支持REST 和其他 web services

◆Lift 使用Scala 的類型安全 type-safety ,所以你的測試只需要集中於 業務邏輯





StringTemplate is a java template engine (with ports for C#, Python, Ruby, and Scala) for generating source code, web pages, emails, or any other formatted text output. StringTemplate is particularly good at multi-targeted code generators, multiple site skins, and internationalization/localization.
lift使用了一個叫stringtemplate的模板語言,類似於wicket和tapestry的view模板,在我看來,並不是一個好的選擇。我曾經學過tapestry和wicket,覺得這種view層太複雜了,實在不應該用在一個號稱「類RoR」的框架上。當我們有haml之後,再使用其它的view模板,都會覺得太囉嗦。(除了有專業美設計網頁)




References
Scala Lift框架的花生醬放進巧克力之路