簡介
它是一種在 Scala 程式語言上構建的可伸縮框架。它非常適合 Apache Geronimo 這樣的可伸縮套用伺服器,尤其是在 Scala 編譯為與 Java™ 語言非常相似的位元組碼並使用 Java 平台之後。
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 ,所以你的測試只需要集中於 業務邏輯
lift 最讓人印象深刻的是由一群對創建偉大的web開發工具和 web套用的 開發者和使用者社區創造出來的。所以 lift 強大,因為使用 創造,開發,使用lift 的人們很強。lift 社區是一個非常優秀的社區。
開發經驗
我做了18個月的Rails開發和10年的Java開發。Rails對於Web開發來說是一個新穎的視角……對於普通任務,Rails是“最便捷”(short path)的方式。它很偉大。但是,我發現Ruby的動態類型導致了許多錯誤,並且導致需要95%的測試覆蓋率來保證可靠的部署。不幸的是,為了達到 95%的測試覆蓋率,我的代碼數量(包括測試)激增到接近Java代碼數量的水平。而且,因為Rails在開發、測試和部署的時候“總是改變事物 ”(Rails動態改變它的方法),即使有出色的測試覆蓋,還是經常出現部署事故。上述情況再加上MRI Ruby實現的緩慢和不穩定以及開發社區的漠不關心,我決定“另尋出路”。我無意中碰到了Scala然後立刻認識到它就是我正在尋找的語言。Scala擁有所有我喜歡的Ruby的語言特徵和所有我喜歡的Java的語言特徵。對我來說,這是一個“把你的花生醬放進我的朱古力”的時刻。
部署經驗
我對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容器。"它就是可以工作"讓我鬆了一大口氣。
成功因素
句法。性能。穩定性。
一個僅當你需要的時候才出現的優秀的類型系統。閉包。模式匹配。內建的XMl語言支持(XMl literals)。Actor[譯註:Scala的基本並發構造]。很難說什麼是決定性因素。
同類對比
像Rails一樣容易而簡明。
像Seaside和Wicket一樣安全而正式。
類型安全但不像Struts一樣冗長。
支持允許多人合作的“實時”套用。
所以,你可以飛快地構建巨強大的套用(就像Rails),但是你不必把所有的狀態一股腦地扔進一個關係資料庫中。狀態是“活的”而不是凍乾的,這使得寫從前端訪問資料庫表的套用非常地不同以往。