Dave Briccetti   Indrajit Raychaudhuri@dcbriccetti     @indrajitr
Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
• Secure• Interactive• Designer Friendly             Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
• Secure• Interactive• Designer Friendly• Scalable             Copyright © 2011 Lift Web Framework, Worldwide Conferencing...
y !!                                                                  a s• Secure                                         ...
About Us• Dave Briccetti                                          • Indrajit Raychaudhuri  • Veteran software developer   ...
The ProjectCopyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
The Project• Started by David Pollak (@dpp) in 2006• Community (> 3000 members in ML)• Committers from around the world• S...
The Project• Developers ≠ Plumbers• Best concepts from other frameworks                          Copyright © 2011 Lift Web...
The ProjectCopyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
The Project• Open Source (Apache 2.0 License)• Ready on a JVM near you• Full Java EE compliance• Works in all modern servl...
The Project• Best implementation on JVM for Comet          Ajax REST           Templating                        Copyright...
Secure LiftCopyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
Secure Lift• Definitive strategy tackles OWASP Top 10• So you don’t have to bother                        Copyright © 2011...
Secure Lift• Definitive strategy tackles OWASP Top 10                                                   “.name *” #> “<scr...
Interactive LiftCopyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
Interactive Lift• Great support for Comet and AJAX• Great REST Support• Parallel Rendering of Snippets• Lazy Rendering of ...
Interactive Lift• Great support for Comet and AJAX                                            serve {                     ...
Interactive Lift• Great support for Comet and AJAX• Great REST Support• Parallel Rendering of Snippets• Lazy Rendering of ...
Interactive Lift• Great support for Comet and AJAX                                            // HTML                     ...
Interactive Lift• Great support for Comet and AJAX• Great REST Support• Parallel Rendering of Snippets• Lazy Rendering of ...
Interactive Lift• Great support for Comet and AJAX                                            // HTML                     ...
Designer Friendly LiftCopyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
Designer Friendly Lift• Step 1: Get designers to write pure XHTML, HTML5• Step 2: There isn’t any!                        ...
ScalableCopyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
Scalable• Fast path for handling REST/Ajax/Comet• No additional layers (e.g. bolt-on security)• Foursquare and UK Guardian...
Summary• Tremendously secure• Highly Interactive Web apps simple• Very friendly to designers• Successful large scale deplo...
Resources• Source [github.com/lift]• Books  • Simply Lift [simply.liftweb.net]  • Exploring Lift [exploring.liftweb.net]• ...
Scala: A Quick Primer
Smarter Java• Runs on JVM, interoperated with any JVM language• Functional (and OO too!)• It’s a lot easier than you think...
Demo: TalkingPuffin Web
Questions?
Upcoming SlideShare
Loading in...5
×

Lift Introduction

872

Published on

Lift and Scala presentation at Silicon Valley Code Conf (10/09/2011 @ Foothill College)

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
872
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • - Heard of Lift\n- Used Lift (and other web framework)\n- Toughest problem in building web application\n- Security, Interactive, Scalable (not 90&apos;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&amp;#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
  • Injection\nXSS\nSession Management\nDirect Object References\nCSRF\nURL Access\n\n
  • Injection\nXSS\nSession Management\nDirect Object References\nCSRF\nURL Access\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&amp;#x2019;t have these ootb, riding on Lift&amp;#x2019;s comet support, it&amp;#x2019;s easy to do &amp;#x201C;server push&amp;#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&amp;#x2019;t have these ootb, riding on Lift&amp;#x2019;s comet support, it&amp;#x2019;s easy to do &amp;#x201C;server push&amp;#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 =&gt; Response [NodeSeq =&gt; 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
  • \n
  • \n
  • \n
  • \n
  • \n
  • Lift Introduction

    1. 1. Dave Briccetti Indrajit Raychaudhuri@dcbriccetti @indrajitr
    2. 2. Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
    3. 3. • Secure• Interactive• Designer Friendly Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
    4. 4. • Secure• Interactive• Designer Friendly• Scalable Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
    5. 5. y !! a s• Secure r E p e• Interactive S u• Designer Friendly• Scalable Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
    6. 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
    7. 7. The ProjectCopyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
    8. 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. 9. The Project• Developers ≠ Plumbers• Best concepts from other frameworks Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
    10. 10. The ProjectCopyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
    11. 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. 12. The Project• Best implementation on JVM for Comet Ajax REST Templating Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
    13. 13. Secure LiftCopyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
    14. 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. 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
    16. 16. Interactive LiftCopyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
    17. 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. 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. 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. 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. 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. 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
    23. 23. Designer Friendly LiftCopyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
    24. 24. Designer Friendly Lift• Step 1: Get designers to write pure XHTML, HTML5• Step 2: There isn’t any! Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
    25. 25. ScalableCopyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
    26. 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. 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
    28. 28. Resources• Source [github.com/lift]• Books • Simply Lift [simply.liftweb.net] • Exploring Lift [exploring.liftweb.net]• Wiki [wiki.liftweb.net]• Mailing List [googlegroups.com/group/liftweb] Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
    29. 29. Scala: A Quick Primer
    30. 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
    31. 31. Demo: TalkingPuffin Web
    32. 32. Questions?
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×