• Like
Lift web framework
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Lift web framework

  • 1,341 views
Published

Lift web framework is one of the most popular parts of Scala ecosystem. Thanks to many innovative features and its use in projects such as foursquare or snapsort, this web framework popularity is …

Lift web framework is one of the most popular parts of Scala ecosystem. Thanks to many innovative features and its use in projects such as foursquare or snapsort, this web framework popularity is skyrocketing. Moreover, for many developers, this web framework is the main reason to study Scala programming language.

Published in Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,341
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
25
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • 3 swimlines:never did web applications, see what web has to offer and how Lift helps building rich web applicationsused legacy web technologies, see how new approaches such as View-Driven-Development helps being more productiveused modern MVC frameworks, see how easy is to switch and what Lift has to offer in addition
  • Lift borrows from the best of existing frameworks, providing:Seaside’s highly granular sessions and securityRails fast flash-to-bang, convention over configurationDjango’s “more than just CRUD is included”Wicket’s designer-friendly templating style
  • Lift borrows from the best of existing frameworks, providing:Seaside’s highly granular sessions and securityRails fast flash-to-bang, convention over configurationDjango’s “more than just CRUD is included”Wicket’s designer-friendly templating style
  • Promotes better coding, fewer defect because of immutability and strong type systemEvent driven programming, synergy with actorsBetter distribution and parallelism

Transcript

  • 1. Petr Hošek@petrh
    CZJUG, December 2010
  • 2. Why do we need another web framework?
  • 3. „Foursquare switched over to Scala & Lift last year and we‘ve been thrilled with the results. The ease of developing complex interactive AJAX web pages enabled very rapid port from our previous platform.“
    Harry Heymann,
  • 4. „Lift is the kind of web framework that enables you as a developer to concentrate on the big picture. Strong, expressive typing and higher-level features like the built-in Comet support allow you to focus on innovating instead of the plumbing. “
    David LaPalomento,
  • 5. „Lift is the only new framework in the last four years to offer fresh and innovative approaches to web development. It‘s not just some incremental improvement of the status quo, it redefines the state-of-the-art. If you are a web developer, you should learn Lift. “
    Michael Galpin,
  • 6. „The fact that Lift-based applications run unchanged on the SAP's NetWeaver CE Java application server makes this an intriguing approach for enterprise applications in the SAP world.“
    Darren Hague,
  • 7. Overall View
  • 8. Expressive elegant web framework
    Combines best of other frameworks
  • 9.
  • 10. Powered by language
    Modern object-functional JVM language
  • 11. View First Approach
  • 12. View-Driven Development
    Similar to MVC but not exactly the same
  • 13. No business code allowed in the view
    Usually represents „seep“ of business logic
  • 14. Designer friendly markup content
    Views are well-formed XHTML/HTML5
  • 15. View-Driven Development
    Similar to MVC but not exactly the same
    No business code allowed in the view
    Usually represents „seep“ of business logic
    Designer friendly markup content
    Views are well-formed XHTML/HTML5
  • 16. vs
    Model-View-Controller
    View-Driven-Development
  • 17. Snippets
  • 18. Snippet provides rendering logic
    Called arbitrarily times on multiple pages
  • 19. Snippet is Scala class or object
    Functions transforming sequence of XML nodes
  • 20. Snippets can be stateful or stateless
    Using session affinity suitable in large scale
  • 21. No hidden magic or code plumbing
    Everything is just well designed
  • 22. Snippet provides rendering logic
    Called arbitrarily times on multiple pages
    Snippet is Scala class or object
    Functions transforming sequence of XML nodes
    Snippets can be stateful or stateless
    Using session affinity
    No hidden magic or code plumbing
    Everything is just well designed
  • 23. AJAX&Comet
  • 24. Native support for AJAX and Comet
    Probably best support available today
  • 25. JavaScript becomes Scala functions
    Using Scala function callbacks for AJAX
  • 26. Abstracts underlying JavaScript libraries
    Support for JQuery, YUI and ExtJS
  • 27. Comet support through Actors
    Receiving messages from browser
  • 28. Utilizes long-polling
    Future use of HTML5 web sockets
  • 29. Provides inherent security
    Using opaque GUIDs for AJAX & Comet URLs
  • 30. Native support for AJAX and Comet
    Probably best support available today
    JavaScript becomes Scala functions
    Using Scala function callbacks for AJAX
    Abstracts underlying JavaScript libraries
    Support for JQuery, YUI and ExtJS
  • 31. Comet support through Actors
    Sending/receiving messages to/from browser
    Utilizes long-polling
    Future use of HTML5 web sockets
    Provides inherent security
    Using opaque GUIDs for AJAX & Comet URLs
  • 32. Persistence Support
  • 33. Dual persistence support
    Provided by Mapper and Record frameworks
  • 34. Mapper persistence framework
    Original persistence framework
  • 35. Lightweight object-relational mapping
    Similar design to ActiveRecord
  • 36. Support for common relational databases
    MySQL, PostgreSQL, Oracle Database, etc.
  • 37. Support for different persistence systems
    Hibernate, JPA, etc.
  • 38. Lightweight object-relational mapping
    Similar design to ActiveRecord
    Support for common relational databases
    MySQL, PostgreSQL, Oracle Database, etc.
    Support for different persistence systems
    Hibernate, JPA, etc.
  • 39. Record persistence framework
    New store-agnostic persistence framework
  • 40. Support for different stores
    MongoDB, CouchDB, Squeryl, etc.
  • 41. Easy to develop custom back-end
    Automatic validation, CRUD and REST support
  • 42. Support for different stores
    MongoDB, CouchDB, Squeryl, etc.
    Easy to develop custom back-end
    Automatic validation,CRUD and REST support
  • 43. REST & WebServices
  • 44. Built-in REST and WebService support
    Using either simple DSL or full dispatching
  • 45. Both statefull and stateless handling
    Declarative rules for URI dispatching
  • 46. Simple DSL for JSON construction
    Extremely fast serialization/deserialization
  • 47. First-class XML support
    Native part of Scala language
  • 48. Built-in REST and WebService support
    Using either simple DSL or full dispatching
    Both statefull and stateless
    Declarative rules for URI dispatching
    DSL for JSON construction
    Extremely fast serialization/deserialization
    First-class XML support
    Native part of Scala language
  • 49. Modularity
  • 50. Lift uses modular architecture
    Using Apache Maven artifacts
    Many existing modules available to use
    Just add dependency into your project
  • 51.
  • 52. Security
  • 53. Out-of-the-box security
    No vulnerability from the Top Ten
  • 54. Difficult to introduce vulnerabilities
    Developers needs to put a lot of effort
  • 55. Page elements have opaque GUIDs
    Used to reference server components
  • 56. AJAX and Comet use similar GUIDs
    Sensitive data are not exposed
  • 57. Persistence safe from SQL injection
    SQL queries sanitization enforcement
  • 58. Out-of-the-box security
    No vulnerability from the Top Ten
    Difficult to introduce vulnerabilities
    Developers needs to make an effort
    Page elements have opaque GUIDs
    Used to reference server components
    AJAX and Comet use similar GUIDs
    Sensitive data are not exposed
    Persistence safe from SQL injection
    SQL queries sanitization enforcement
  • 59. Scalability
  • 60. Support for database sharding
    Using federation of database servers
  • 61. Using non-blocking input/output
    Out-of-the-box support for Jetty Continuations
  • 62. Decoupling threads from requests
    Implemented via Scala Actors
  • 63. Support for database sharding
    Using federation of database servers
    Using non-blocking input/output
    Out-of-the-box support for Jetty Continuations
    Decoupling threads from requests
    Implemented via Scala Actors
  • 64. Negatives & Drawbacks
  • 65. The good, the bad and the ugly
    Lift has downsides as well
  • 66. Framework „takes over control“
    What is happening in the background?
  • 67. Documentation is insufficient
    Many important details are missing
  • 68. Exploring Lift book is incomplete
    Upcoming Lift in Action book is still in EAP
  • 69. No direct tool support
    Related to insufficient Scala tool support
  • 70. The good, the bad and the ugly
    Lift has downsides as well
    Framework „takes over control“
    What is happening in the background?
    Documentation is insufficient
    Many important details are missing
    Exploring Lift book is incomplete
    Upcoming Lift in Action book is still in EAP
    No direct tool support
    Related to insufficient Scala tool support
  • 71. Summary
  • 72. Lift makes the web development simple
    Lift combines many ideas & methodologies
    Lift has new take on web development
    Lift is inherently secure
    Lift has excellent AJAX and Comet support
    Lift is already proven in the industry
  • 73.
  • 74. Content adapted from Lift in Action book
    Timothy Perrett, Manning Publications, 2011
    Content adapted from Exploring Lift book
    Derek Chen-Becker, Marius Danciu and Tyler Weir, 2009
    Content adapted from official website liftweb.net
    Courtesy of WorldWide Conferencing, LLC