lift是一個非常優雅的web框架,基于Scala編程語言,使用apache2.0 license許可發布。lift提供開發者最好的方式創建交互的,高性能的web應用。
簡介
它是一種在Scala編程語言上構建的可伸縮框架。它非常適合Apache Geronimo這樣的可伸縮應用服務器,尤其是在Scala編譯為與Java?語言非常相似的字節碼并使用Java平臺之后。
基于lift的應用能夠部署為WAR文件進入JBoss容器,類似Jetty,Tomcat,和Weblogic。基于lift的應用擁有高性能和能夠使用你現存的Java庫。
特點
lift的Comet和Ajax支持能夠讓開發者創建實時交互應用
lift的簡潔的代碼允許開發者能夠極大的提高開發生產力,類似Ruby on Rails和TurboGears
lift提供高性能和擴展能力
lift內建支持REST和其他web services
lift使用Scala的類型安全type-safety,所以你的測試只需要集中于業務邏輯
lift最讓人印象深刻的是由一群對創建偉大的web開發工具和web應用的開發者和使用者社區創造出來的。所以lift強大,因為使用創造,開發,使用lift的人們很強。lift社區是一個非常優秀的社區。
開發經驗
我做了18個月的Ruby on Rails開發和10年的Java開發。Rails對于Web開發來說是一個新穎的視角……對于普通任務,Rails是“最便捷”(short path)的方式。它很偉大。但是,我發現Ruby的動態類型導致了許多錯誤,并且導致需要95%的測試覆蓋率來保證可靠的部署。不幸的是,為了達到95%的測試覆蓋率,我的代碼數量(包括測試)激增到接近Java代碼數量的水平。而且,因為Rails在開發、測試和部署的時候“總是改變事物”(Rails動態改變它的方法),即使有出色的測試覆蓋,還是經常出現部署事故。上述情況再加上MRI Ruby實現的緩慢和不穩定以及開發社區的漠不關心,我決定“另尋出路”。我無意中碰到了Scala然后立刻認識到它就是我正在尋找的語言。Scala擁有所有我喜歡的Ruby的語言特征和所有我喜歡的Java的語言特征。對我來說,這是一個“把你的花生醬放進我的巧克力”的時刻。
部署經驗
我對lift應用做了許多基準性能測試。lift的渲染管道簡明扼要,而且lift在標準的web容器中運行。這意味著你可以得到與良好開發的JBoss應用相同的性能。對于數據庫無關的頁面,lift的渲染時間通常低于1秒。對于需要訪問數據庫的頁面,頁面渲染時間與數據庫訪問相關。在一個Amazon EC2實例上(1.7Ghz 英特爾處理器,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),但是你不必把所有的狀態一股腦地扔進一個關系數據庫中。狀態是“活的”而不是凍干的,這使得寫從前端訪問數據庫表的應用非常地不同以往。
網站應用程式架構
參考資料 >