複製鏈接
請複製以下鏈接發送給好友

lift

(Scala的Web框架)

鎖定
lift是一個非常優雅的web框架,基於Scala編程語言,使用Apache 2.0 license許可發佈。lift 提供開發者最好的方式創建交互的,高性能的web應用。
外文名
lift
另    名
LiftWeb
類    型
Web 應用程序框架
發    佈
Apache 2.0 license

lift簡介

它是一種在 Scala 編程語言上構建的可伸縮框架。它非常適合 Apache Geronimo 這樣的可伸縮應用服務器,尤其是在 Scala 編譯為與 Java™ 語言非常相似的字節碼並使用 Java 平台之後。 [1] 
lift是一個非常優雅的web框架,基於Scala編程語言,使用Apache 2.0 license許可發佈。lift 提供開發者最好的方式創建交互的,高性能的web應用。基於lift 的應用能夠部署為WAR文件進入 J2EE 容器,類似Jetty, Tomcat, 和 Weblogic。基於lift 的應用擁有高性能和能夠使用你現存的Java庫。

lift應用特點

lift 的Comet 和 Ajax 支持能夠讓開發者創建實時交互應用
lift 的簡潔的代碼允許開發者能夠極大的提高開發生產力,類似Rails 和 TurboGears
lift 提供高性能 和 擴展能力
lift 內建支持REST 和其他 web services
lift 使用Scala 的類型安全 type-safety ,所以你的測試只需要集中於 業務邏輯
lift 最讓人印象深刻的是由一羣對創建偉大的web開發工具和 web應用的 開發者和使用者社區創造出來的。所以 lift 強大,因為使用 創造,開發,使用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的渲染管道簡明扼要,而且lift在標準的web容器中運行。這意味着你可以得到與良好開發的J2EE應用相同的性能。對於數據庫無關的頁面,lift的渲染時間通常低於1秒。對於需要訪問數據庫的頁面,頁面渲染時間與數據庫訪問相關。在一個Amazon EC2實例上(1.7Ghz Intel處理器,2GB內存),我可以支撐每秒500+的頁面訪問,其中50%的頁面要訪問數據庫,而且MySQl實例與Web應用運行在相同的服務器上。

lift兼容配合性

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

lift成功因素

句法。性能。穩定性。
一個僅當你需要的時候才出現的優秀的類型系統。閉包。模式匹配。內建的XMl語言支持(XMl literals)。Actor[譯註:Scala的基本併發構造]。很難説什麼是決定性因素。

lift同類對比

像Rails一樣容易而簡明。
像Seaside和Wicket一樣安全而正式。
類型安全但不像Struts一樣冗長。
支持允許多人合作的“實時”應用。
所以,你可以飛快地構建巨強大的應用(就像Rails),但是你不必把所有的狀態一股腦地扔進一個關係數據庫中。狀態是“活的”而不是凍乾的,這使得寫從前端訪問數據庫表的應用非常地不同以往。
參考資料