5. y !!
a s
⢠Secure r E
p e
⢠Interactive S u
⢠Designer Friendly
⢠Scalable
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
6. About Us
⢠Dave Briccetti ⢠Indrajit Raychaudhuri
⢠Veteran software developer ⢠Active Lift committer
⢠Teacher in love with programming ⢠Hacker trying to do programming
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
8. The Project
⢠Started by David Pollak (@dpp) in 2006
⢠Community (> 3000 members in ML)
⢠Committers from around the world
⢠Stable master philosophy
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
9. The Project
⢠Developers â Plumbers
⢠Best concepts from other frameworks
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
11. The Project
⢠Open Source (Apache 2.0 License)
⢠Ready on a JVM near you
⢠Full Java EE compliance
⢠Works in all modern servlet containers
⢠Batteries included (user replaceable)
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
12. The Project
⢠Best implementation on JVM for
Comet Ajax
REST Templating
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
14. Secure Lift
⢠Definitive strategy tackles OWASP Top 10
⢠So you donât have to bother
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
15. Secure Lift
⢠Definitive strategy tackles OWASP Top 10
â.name *â #> â<script>alert(âhiâ);</script>â
⢠So you donât have to bother
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
17. Interactive Lift
⢠Great support for Comet and AJAX
⢠Great REST Support
⢠Parallel Rendering of Snippets
⢠Lazy Rendering of Snippets
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
18. Interactive Lift
⢠Great support for Comet and AJAX
serve {
case "api" :: "user" :: AsLong(id) :: _ XmlGet _ =>
<b>ID:{id}</b>
⢠Great REST Support case "api" :: "user" :: AsLong(id) :: _ JsonGet _ =>
JInt(id)
}
⢠Parallel Rendering of Snippets
⢠Lazy Rendering of Snippets
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
19. Interactive Lift
⢠Great support for Comet and AJAX
⢠Great REST Support
⢠Parallel Rendering of Snippets
⢠Lazy Rendering of Snippets
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
20. Interactive Lift
⢠Great support for Comet and AJAX
// HTML
<div class="lift:FetchTicker?parallel=true">
  Ticker server #1: <span class="ticker">The Ticker</span>
⢠Great REST Support </div>
// Snippet
object FetchTicker {
⢠Parallel Rendering of Snippets   def render = {
    Thread.sleep(500 millis) // The call
    ".ticker" #> Thread.currentThread.getName // The result
⢠Lazy Rendering of Snippets   }
}
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
21. Interactive Lift
⢠Great support for Comet and AJAX
⢠Great REST Support
⢠Parallel Rendering of Snippets
⢠Lazy Rendering of Snippets
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
22. Interactive Lift
⢠Great support for Comet and AJAX
// HTML
<div class="lift:LazyLoad">
  <span class="lift:LongTime"> I started this computation at
⢠Great REST Support     <span id="start">start</span> and it
    completed at <span id="end">end</span>.
  </span>
⢠Parallel Rendering of Snippets </div>
// Snippet
object LongTime {
⢠Lazy Rendering of Snippets   def render = {
    val start = now
    Thread.sleep(randomLong(15 seconds))
    "#start" #> start.toString &
    "#end" #> now.toString
   }
}
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
26. Scalable
⢠Fast path for handling REST/Ajax/Comet
⢠No additional layers (e.g. bolt-on security)
⢠Foursquare and UK Guardian serve millions of pages a day with Lift
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
27. Summary
⢠Tremendously secure
⢠Highly Interactive Web apps simple
⢠Very friendly to designers
⢠Successful large scale deployments
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
30. Smarter Java
⢠Runs on JVM, interoperated with any JVM language
⢠Functional (and OO too!)
⢠Itâs a lot easier than you think
⢠Stories from the trenches
Copyright Š 2011 Lift Web Framework, Worldwide Conferencing, LLC
- Heard of Lift\n- Used Lift (and other web framework)\n- Toughest problem in building web application\n- Security, Interactive, Scalable (not 90's type - cloud grade), Designer friendly (User interface)\n\n
\n
\n
\n
\n
\n
\n
Backed by vibrant community\nCommitter in every 3 TZ\nThe master never breaks [people conveniently use SNAPSHOT for deployment]\nCommits go through CI server\nMilestone Release on regular basis (for those preferring stable build)\n
Plumbing taken care of, so that developer don&#x2019;t have to\nView First philosophy\nSeaside: Granular sessions and security\nRails: Convention over configuration\nWicket: Designer friendly templates\n+ the tough ones (truly realtime with existing tech is hard)\n
Business friendly license, very clean IP\nTypically builds a war\nThus, works on all modern servlet containers on a compatible JVM\nFor well known containers it even detects availability of advanced features and uses them (continuation in Jetty, Tomcat 7, GlassFish)\nMost of all that you need for a web application is bundled (but everything has clean abstraction - so you can choose your own implementation)\ne.g., The HTTPProvider can be implemented to work on, say, Netty/Unfiltered\n\n
Comet and Ajax\nAsynchronous page rendering\nDesigner friendly templates\n\n
- Via Actor model\n- Continuations supported on Jetty6+, Tomcat 7, Glassfish 3\n- JS boiler plate handled behind the scene\n- Supports JQuery, YUI, ExtJS\n\nFrameworks usually don&#x2019;t have these ootb, riding on Lift&#x2019;s comet support, it&#x2019;s easy to do &#x201C;server push&#x201D;\n
- Via Actor model\n- Continuations supported on Jetty6+, Tomcat 7, Glassfish 3\n- JS boiler plate handled behind the scene\n- Supports JQuery, YUI, ExtJS\n\nFrameworks usually don&#x2019;t have these ootb, riding on Lift&#x2019;s comet support, it&#x2019;s easy to do &#x201C;server push&#x201D;\n
\n
\n
Impedance mismatch and friction between design team and development team\nRaise of hands on the trouble\nDemo code on class based and namespace based approach\n
Backed by strongly typed language\nHighly Functional. Therefore, parallel-izable (scalable)\n\nSimple notion of Transformation\nRequest => Response [NodeSeq => NodeSeq] based on current user/system state\nNodeSeq is immutable\n\nSnippets can be executed in parallel\n\n
To Wrap Up:\nprobably the friendliest for a JVM based framework\n\n