Nowadays, websites are getting bigger and more complex. If you are an experienced programmer, you've probably noticed that you do not only want your project to look good and neat - you want it to be designed with ease and be fully customizable!
Of course you do things like ajax, dynamic localization of content and URL, session handling etc. but with what cost?
You may wonder - is it possible.. to have all this things on my website and sleep happy?
Yes! There is a web framework that makes it easy and gives you full control over every aspect of frontend and backand.
They don't pay me for saying this, but I'm going to say it anyway. Because I wrote it, and it's a truth. I love this framework. It's the best framework ever. Ladies and gentelmans..
Lift!
What is Lift?
Lift is an expressive and elegant framework for writing web applications. Lift stresses the importance of security, maintainability, scalability and performance, while allowing for high levels of developer productivity. Lift open source software licensed under an Apache 2.0 license.
Lift is some kind of RAD (Rapid Application Bulding) frameworks in Scala - which is an elegant, very well designed JVM language, that was made to support modern programming paterns. It's functional and object-oriented language, which can be used with and even within Java code.
Sounds great - isn't it?!
But that's not all. In Lift you manage everything from code, using MVC methodology. Deriving your entities from special CRUD traits (Scala terminology), gives you very fast results. You can have your simple website up and working within minutes.
If you need to start fast and see the quickly see the results then Lift's CRUD is just for you.
Lift basic archetype will greet you with a User CRUD like complex signup, signin, change/forgot password dialogs, etc. You don't need to write things that are common to almost every project you make.
Moreover, you can use CRUD to any from your entities classes. Overriding some special functions will give you very fast and neat create/edit/delete dialogs.
Lift comes with two database access systems. Mapper and Record. You can configure many database sources to balance your application database usage.
Localization is a strong thing in Lift. You can access special translation mechanism from scala code or from XHTML snippet. Once you use localization in your app you only need to add new translation files to make more users understand your site. It's so easy.
So you may wonder: what do I need to start?
Since Lift is written in Scala and Scala is running on JVM you need Java SDK.
Next I encourage you to use maven as a build manager. It gives you compact and fast interface to build and deploy your application.
It will carry about downloading all the libraries you need to use including Scala and jetty (later in text).
Learn more about maven at: http://maven.apache.org/
Once you have installed maven, starting lift project is as simple as building project from mavan:
mvn archetype:generate -DarchetypeVersion=2.0-M3 -DgroupId=com.codeappeal -DarchetypeArtifactId=lift-archetype-basic -Dversion=1.0-SNAPSHOT -DarchetypeGroupId=net.liftweb -DartifactId=webapp
and running:
mvn jetty:run
which start jetty server instance for serving your application, and voila :)
so.. why walk if you can use Lift!
Find what is Scala at:
http://www.scala-lang.org
You can find much more about Lift at:
http://liftweb.net
and if you would like to see some Lift demos - take a look at:
http://demo.liftweb.net
Feel free to ask if you want to know more!
Comments
Another Scala framwork worth mentioning
http://www.thomasknierim.com/scala-pages-web-framework/
It's just first release but it could be some alternative to Lift if we don't need a complex framework - we could just observe how it will grow.
BTW nice article.
thanks Adrian! that framework
thanks Adrian!
that framework looks very promising. esspecialy that snippet functionality.
i think in near future we will see more and more scala made web frameworks.
This language is like no other before. XML support, easy returning data from functions and of course the fact that it is a functional language makes it perfect choose not only in this area.
Any sufficiently advanced technology is indistinguishable from magic...