共找到3條詞條名為lift的結果 展開

lift

Scala的Web框架

lift是一個非常優雅的web框架,基於Scala編程語言,使用Apache2.0 license許可發布。lift提供開發者最好的方式創建交互的,高性能的web應用。

簡介


它是一種在Scala編程語言上構建的可伸縮框架。它非常適合Apache Geronimo這樣的可伸縮應用伺服器,尤其是在Scala編譯為與Java™語言非常相似的位元組碼並使用Java平台之後。
基於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),但是你不必把所有的狀態一股腦地扔進一個關係資料庫中。狀態是“活的”而不是凍乾的,這使得寫從前端訪問資料庫表的應用非常地不同以往。
網站應用程式架構
ASP.NET▪ ASP.NET MVC▪ BFC▪ DotNetNuke▪ MonoRail▪ Umbraco
ColdFusion▪ ColdSpring▪ Fusebox▪ Mach-II▪ Model-Glue▪ onTap▪ on Wheels
Common Lisp▪ ABCL-web▪ blow▪ BKNR▪ SymbolicWeb▪ UnCommon Web
C++▪ CppCMS
Java▪ Apache Struts▪ AppFuse▪ Flexive▪ GWT▪ Grails▪ Vaadin▪ ItsNat▪ JavaServer Faces▪ Makumba▪ OpenXava▪ Reasonable Server Faces▪ RIFE▪ Restlet▪ Seam▪ Spring▪ Stripes▪ Tapestry▪ WebWork▪ Wicket▪ ZK
Perl▪ Catalyst▪ Interchange▪ Mason
PHP▪ Agavi▪ Akelos▪ CakePHP▪ Chisimba▪ CodeIgniter▪ Garden▪ Horde▪ Kohana▪ Kolibri▪ KumbiaPHP▪ Midgard▪ Orinoco Framework▪ PHPonTrax▪ Seagull▪ Simplicity▪ Symfony▪ WASP▪ Yii Framework▪ Zend▪ Zoop
Python▪ Bottle▪ CherryPy▪ Django▪ Flask▪ Gork▪ Pyjamas▪ Pylons▪ Pyramid▪ Tornado▪ TurboGears▪ web2py▪ Zope
Ruby▪ Ruby on Rails▪ Merb▪ Sinatra
Scala▪ Lift
Smalltalk▪ AIDA/Web▪ Seaside
Other languages▪ Application Express▪ Fusebox▪ OpenACS▪ Yaws▪ HAppS▪ SproutCore