lift是個由Scala語言所開發的web framework,由於想試玩一下據說連James Gosling都玩的Scala,索性就試著裝裝看lift,看看有沒有機會在上面開發Web APP。據說Scala在.NET及java平台下都可以執行,不過我試的平台是sun jdk 1.5。

首先先安裝好jdk跟maven2,再來打入這一大串,


mvn archetype:create -U \
-DarchetypeGroupId=net.liftweb \
-DarchetypeArtifactId=lift-archetype-basic \
-DarchetypeVersion=0.9 \
-DremoteRepositories=http://scala-tools.org/repo-releases \
-DgroupId=mytestorm.group -DartifactId=mytestorm.app


這會自動建立一個可連結derby database ,有models的ORM骨架的web application. 最厲害的是maven這個工具連scala,jetty這些你缺的dependency都能幫你裝到好。

接下來可以修改mytestorm.app/src/main/scala/bootstrap/liftweb/Boot.scala將db的connection string改成:"jdbc:derby:mytest;create=true" 這等一下會在我的專案目錄mytestorm.app裡建立一個名為mytest的derby db,再打入mvn jetty:run 就可以啟動webserver了(這裡打入mvn tomcat:run的話會幫你裝好tomcat). 因為lift已經事先幫你建好了model,所以現在連到server的8080 port或http://127.0.0.1:8080,就可以看到一個可以登入的歡迎畫面:





到這邊其實就已經有一點django admin模組的味道了,可以註冊帳號跟login什麼的,
如果用django的術語來講,整個lift的架構也不難解釋,django的urlconf跟settings被放在bootstrap/Boot.scala,
model.py被放到scala/your-proj's-group/model這個目錄裡,template是在webapp裡,template tag在scala/your-proj's-group/snippet裡,view在scala/your-proj's-group/view/,
說來說去,實在也是換湯不換藥,大底上目前的web開發就是如此。

如果你還有興趣的話,可以到抓下lift 0.9的release tarball, 然後解開之後到lift-0.9/sites/example裡,用mvn jetty:run 將example都跑起來玩一玩。裏面有幾個sample還滿有趣的,還包括一個comet的聊天室實作。

稍微玩了一下其實沒啥大感覺,主要覺得lift用的maven工具太複雜了,讓整個開發像在變魔術一樣,老是要找東西被裝到那,反而覺得scala沒什麼玩到,主要都在搞設定,另外mavan在裝dependency的時候整個download的過程都要連到國外總站,要裝的package又不少,導致安裝速度變得有點慢,如果能有台灣mirror應該會好一點。