lift is yet another web development framework. lift runs inside a Java web container and uses the Scala programming language for coding. lift stresses security, developer productivity, ease of deployment, ease of maintainability, performance, and compatibility with existing systems.
lift borrows from the best of existing frameworks including Seaside's highly granular sessions and security, Rails fast flash-to-bang, Django's "more than just CRUD is included", and Erlyweb's scalability for Comet-style applications.
lift is built on Scala, a hybrid Functional and O-O language that compiles code down to the Java Virtual Machine. Scala code can call any Java code and make use of all Java classes. Java code can call some Scala code. lift applications are packaged as WAR files and can be deployed on any Servlet 2.4 engine (e.g., Tomcat 5.5.xx, Jetty 6.0, etc.)
lift code is as clean and brief as Rails, yet performs 6 times faster and
is multithreaded. Additionally, because Scala is strongly typed, the compiler
catches type errors. For example:
And lift has lots of helper methods to make things clean and
simple:
User.find(By(User.email, "foo@bar.com")) // legal
User.find(By(User.birthday, new Date("Jan 4, 1975"))) // legal
User.find(By(User.birthday, "foo@bar.com")) // compiler error
But the LoC and total character count for lift and Rails substantive code is similar,
however, the LoC for lift tests is about 60% compared to Rails because there's no need
to write tests for type-related issues.
User.find(20) // find the user with primary key 20
// find all the users that registered 4 days ago
User.findAll(By(User.registered, 4.days.ago))
// activate the account or suspend it after 4 days
State(NewAcct, On({case Activate =>}, Activated),After(4 days, Suspended))
State(Suspended) entry {sendSuspendedEmail}
lift is currently in 'early alpha' state. Use at your own risk. Things might break. APIs might change. You know the drill.
lift is an open source project distributed under an Apache License V2.0