SlideShare ist ein Scribd-Unternehmen logo
1 von 21
An Introduction
to Lift
Dallas, TX
May 02, 2012




Discussion document – Strictly Confidential & Proprietary
Agenda …


Where are we going?

• Scala Web Frameworks

• Why is Lift Different

• In the Wild

• The Basics of Lift

   –   Getting Up and Running

   –   Building Blocks

   –   Page Templates

   –   Snippets

   –   Model

   –   Business Logic




                                An Introduction to Lift
                                         May 2, 2012      2
Agenda …


Goals

• Have an understanding of what Lift is

• Have an interest in learning more

• Go play with Lift!




                                          An Introduction to Lift
                                                   May 2, 2012      3
Scala Web Frameworks …


What web frameworks are available for Scala?

Minimalist
• Scalatra
    –    Leveraged primarily for RESTful services
    –    Used by LinkedIn for RESTful services supporting mobile platform
• Unfiltered
    –    Provides a consistent API for handling HTTP requests on various server backends
    –    Used by Meetup for real-time APIs



Full Stack
• Includes ORM, view and state management
• Play
    –    MVC Model
    –    Scala styling for the Java web framework
    –    Supported framework of Typesafe
• Lift




                                                                                           An Introduction to Lift
                                                                                                    May 2, 2012      4
Why is Lift Different …


Seven Things

Lift offers seven things that differentiate it from other frameworks
• Lazy loading
    –   Render page to browser while waiting for computation to complete
    –   Once complete, render remaining HTML
• Parallel page rendering
    –   By labeling a snippet parallel, Lift will forward snippet to another thread in a pool of threads
    –   When all threads are completed, results are combined and page is sent to browser
•   Comet and AJAX
    –   Server push – long poll wait for AJAX response
•   Wiring
    –   Interdependent page elements can be associated to one another
    –   If a precedent element changes, dependent items are redisplayed on the next HTTP response
•   Designer friendly templates
•   Wizard
    –   Define multi-page input screens with field and form level validation
•   Security




                                                                                                 An Introduction to Lift
                                                                                                          May 2, 2012      5
Why is Lift Different … Security …


Security

Lift can withstand many of the OWASP Top 10 Security Vulnerabilities
• Injection – Lift’s Mapper and Record libraries properly escape query strings before being sent to the
  backing store
• XSS – Lift holds the rendered pages as a DOM until late in the page rendering cycle, allowing it to
  automatically HTML escape Strings before sending to the browser
• Session Management – Lift uses the JEE container’s session management and keeps passwords
  hashed at all times with per-row salt
• CSRF – Lift uses session-specific bindings between HTML elements and the server-side behaviors
  associated with those elements. Bindings cannot be predicted, so cross site requests of session-
  specific bindings is impossible
• URL Access – Lift provides declarative rules for access to URLs. Access will be denied to a URL
  unless the criteria is met for accessing the specific URL




                                                                                            An Introduction to Lift
                                                                                                     May 2, 2012      6
In the Wild …


Lift is gaining traction

  OpenStudy – Collaborative learning tool used
  by MIT and many other top universities.
  FourSquare – Message queue in pure Scala.
  Website, mobile website and RESTful API
  running on Lift.
  StackMob– ‘Heroku for Mobile’.
  Novell – Pulse, a cloud-based, real-time
  collaboration platform for the enterprise.
  Utilizes Scala and Lift.




                                                 An Introduction to Lift
                                                          May 2, 2012      7
The Basics of Lift...


What you need to know to get started!

• Getting Up and Running

• Building Blocks

• Page Templates

• Snippets

• Model

• Business Logic




                                        An Introduction to Lift
                                                 May 2, 2012      8
The Basics of Lift …


Getting up and running

Required
• Java 1.5 or greater
• Scala 2.9.1 distribution
• SBT – Simple Build Tool
• Lift 2.4


Optional
• sbteclipse – create .project for Eclipse
• IDE Plugin
      –    ScalaIDE (Eclipse – must use Helios)
      –    Scala Plugin for IntelliJ IDEA
      –    Scala Plugin for NetBeans



Notes:
1) Installation of Scala and SBT involve expanding compressed file and adding to PATH
2) IDE installation varies by tool; some dependency on IDE release number
3) ScalaIDE officially supported by Typesafe




                                                                                        An Introduction to Lift
                                                                                                 May 2, 2012      9
The Basics of Lift … Building Blocks…


Building Blocks




                                        An Introduction to Lift
                                                 May 2, 2012      10
The Basics of Lift … Page Templates…


Page Templates




                                       An Introduction to Lift
                                                May 2, 2012      11
The Basics of Lift … Page Templates…


Page Templates

Templates
• A template is a well formed, designer friendly XML document
• Code cannot creep into the document
• Special tags to reference snippets




Example




                                                                An Introduction to Lift
                                                                         May 2, 2012      12
The Basics of Lift … Snippets…


Snippets




                                 An Introduction to Lift
                                          May 2, 2012      13
The Basics of Lift … Snippets…


Snippets

Snippets
• Any template element in the lift: or l: name space indicates a snippet
• Snippets are functions that transform the invocating element into a new node
• There can be multiple snippets per template
• Snippets are evaluated in the order they are encountered
• Processed serially, unless marked as parallel=true




Example




                                                                                 An Introduction to Lift
                                                                                          May 2, 2012      14
The Basics of Lift … Model…


Model and Persistence




                              An Introduction to Lift
                                       May 2, 2012      15
The Basics of Lift … Model…


Model

Model
• The model is the object representation of your persistence store
• Lift includes two options Mapper and Record
• Mapper typically used for relational databases
• Record typically used for NoSQLdatastores




Example




                                                                     An Introduction to Lift
                                                                              May 2, 2012      16
The Basics of Lift … Business Logic…


Your Business Logic




                                       An Introduction to Lift
                                                May 2, 2012      17
The Basics of Lift … Model…


Model

Model
• The model is the object representation of your persistence store
• Lift includes two options Mapper and Record
• Mapper typically used for relational databases
• Record typically used for NoSQLdatastores




Example




                                                                     An Introduction to Lift
                                                                              May 2, 2012      18
The Basics of Lift … Business Logic…


Your Business Logic

Business Logic
• Business logic resides in the lib directory




Example




                                                An Introduction to Lift
                                                         May 2, 2012      19
Appendix … Web References ...


Resources

                                                 Web Resources
             Description                                                   Link
                 Scala                http://www.scala-lang.org
       SBT – Simple Build Tool        http://github.com/harrah/xsbt
         ScalaIDE for Eclipse         http://scala-ide.org
     Scala Plugin for IntelliJ IDEA   http://confluence.jetbrains.net/display/SCA/Scala_Plugin+for+IntelliJ+IDEA
      Scala Plugin for NetBeans       http://wiki.netbeans.org/Scala
                  Lift                http://liftweb.net




                                                                                                      An Introduction to Lift
                                                                                                               May 2, 2012      20
Contact ...


Contact Me!




              blemons@credera.com

              @brentlemons

              slideshare.net/brentlemons




                                           An Introduction to Lift
                                                    May 2, 2012      21

Weitere ähnliche Inhalte

Andere mochten auch (9)

メルマガマーケティング Ato z
メルマガマーケティング Ato zメルマガマーケティング Ato z
メルマガマーケティング Ato z
 
ENGLISH LANGUAGE KSSR YEAR 1I wear...
ENGLISH LANGUAGE KSSR YEAR 1I wear...ENGLISH LANGUAGE KSSR YEAR 1I wear...
ENGLISH LANGUAGE KSSR YEAR 1I wear...
 
無題プレゼンテーション
無題プレゼンテーション無題プレゼンテーション
無題プレゼンテーション
 
Ingles diapocitivas,partes del cuerpo y de la casa
Ingles diapocitivas,partes del cuerpo y de la casaIngles diapocitivas,partes del cuerpo y de la casa
Ingles diapocitivas,partes del cuerpo y de la casa
 
002 04『【再配布権】海外高額リードメール攻略マニュアル』
002 04『【再配布権】海外高額リードメール攻略マニュアル』002 04『【再配布権】海外高額リードメール攻略マニュアル』
002 04『【再配布権】海外高額リードメール攻略マニュアル』
 
Eメール マーケティング ato z
Eメール マーケティング ato zEメール マーケティング ato z
Eメール マーケティング ato z
 
RAZONAMIENTO MATEMATICO 1ER AÑO 1ER BIMESTRE 2012-VISITAR www.gratis2.com
RAZONAMIENTO MATEMATICO 1ER AÑO 1ER BIMESTRE 2012-VISITAR  www.gratis2.comRAZONAMIENTO MATEMATICO 1ER AÑO 1ER BIMESTRE 2012-VISITAR  www.gratis2.com
RAZONAMIENTO MATEMATICO 1ER AÑO 1ER BIMESTRE 2012-VISITAR www.gratis2.com
 
Lift web framework and Scala programming language talk
Lift web framework and Scala programming language talkLift web framework and Scala programming language talk
Lift web framework and Scala programming language talk
 
Intro lift
Intro liftIntro lift
Intro lift
 

Ähnlich wie Dallas GUG Lift Presentation

Oracle to MySQL 2012
Oracle to MySQL  2012 Oracle to MySQL  2012
Oracle to MySQL 2012
Marco Tusa
 
Spring intro classes-in-mumbai
Spring intro classes-in-mumbaiSpring intro classes-in-mumbai
Spring intro classes-in-mumbai
vibrantuser
 

Ähnlich wie Dallas GUG Lift Presentation (20)

Spring
SpringSpring
Spring
 
Oracle to MySQL 2012
Oracle to MySQL  2012 Oracle to MySQL  2012
Oracle to MySQL 2012
 
Introduction to Spring Framework and Spring IoC
Introduction to Spring Framework and Spring IoCIntroduction to Spring Framework and Spring IoC
Introduction to Spring Framework and Spring IoC
 
OpenTravel Advisory Forum 2012 XML Object Suite Lab
OpenTravel Advisory Forum 2012 XML Object Suite LabOpenTravel Advisory Forum 2012 XML Object Suite Lab
OpenTravel Advisory Forum 2012 XML Object Suite Lab
 
Java Spring
Java SpringJava Spring
Java Spring
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on Rails
 
Drupal + HTML5 + CSS3 + JS = Rich Internet Application
Drupal + HTML5 + CSS3 + JS = Rich Internet ApplicationDrupal + HTML5 + CSS3 + JS = Rich Internet Application
Drupal + HTML5 + CSS3 + JS = Rich Internet Application
 
Drupal + HTML5 + CSS3 + JS = Rich Internet Application
Drupal + HTML5 + CSS3 + JS = Rich Internet ApplicationDrupal + HTML5 + CSS3 + JS = Rich Internet Application
Drupal + HTML5 + CSS3 + JS = Rich Internet Application
 
How to organize the business layer in software
How to organize the business layer in softwareHow to organize the business layer in software
How to organize the business layer in software
 
Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012
 
The Birth and Evolution of Ruby on Rails
The Birth and Evolution of Ruby on RailsThe Birth and Evolution of Ruby on Rails
The Birth and Evolution of Ruby on Rails
 
Quick Start: Rails
Quick Start: RailsQuick Start: Rails
Quick Start: Rails
 
Scaling LinkedIn - A Brief History
Scaling LinkedIn - A Brief HistoryScaling LinkedIn - A Brief History
Scaling LinkedIn - A Brief History
 
Spring intro classes-in-mumbai
Spring intro classes-in-mumbaiSpring intro classes-in-mumbai
Spring intro classes-in-mumbai
 
Knockout js
Knockout jsKnockout js
Knockout js
 
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016
 
spring
springspring
spring
 
Seng 123 8-ooad
Seng 123 8-ooadSeng 123 8-ooad
Seng 123 8-ooad
 
Developing modular Java applications
Developing modular Java applicationsDeveloping modular Java applications
Developing modular Java applications
 
Spring introduction
Spring introductionSpring introduction
Spring introduction
 

Kürzlich hochgeladen

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Kürzlich hochgeladen (20)

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Dallas GUG Lift Presentation

  • 1. An Introduction to Lift Dallas, TX May 02, 2012 Discussion document – Strictly Confidential & Proprietary
  • 2. Agenda … Where are we going? • Scala Web Frameworks • Why is Lift Different • In the Wild • The Basics of Lift – Getting Up and Running – Building Blocks – Page Templates – Snippets – Model – Business Logic An Introduction to Lift May 2, 2012 2
  • 3. Agenda … Goals • Have an understanding of what Lift is • Have an interest in learning more • Go play with Lift! An Introduction to Lift May 2, 2012 3
  • 4. Scala Web Frameworks … What web frameworks are available for Scala? Minimalist • Scalatra – Leveraged primarily for RESTful services – Used by LinkedIn for RESTful services supporting mobile platform • Unfiltered – Provides a consistent API for handling HTTP requests on various server backends – Used by Meetup for real-time APIs Full Stack • Includes ORM, view and state management • Play – MVC Model – Scala styling for the Java web framework – Supported framework of Typesafe • Lift An Introduction to Lift May 2, 2012 4
  • 5. Why is Lift Different … Seven Things Lift offers seven things that differentiate it from other frameworks • Lazy loading – Render page to browser while waiting for computation to complete – Once complete, render remaining HTML • Parallel page rendering – By labeling a snippet parallel, Lift will forward snippet to another thread in a pool of threads – When all threads are completed, results are combined and page is sent to browser • Comet and AJAX – Server push – long poll wait for AJAX response • Wiring – Interdependent page elements can be associated to one another – If a precedent element changes, dependent items are redisplayed on the next HTTP response • Designer friendly templates • Wizard – Define multi-page input screens with field and form level validation • Security An Introduction to Lift May 2, 2012 5
  • 6. Why is Lift Different … Security … Security Lift can withstand many of the OWASP Top 10 Security Vulnerabilities • Injection – Lift’s Mapper and Record libraries properly escape query strings before being sent to the backing store • XSS – Lift holds the rendered pages as a DOM until late in the page rendering cycle, allowing it to automatically HTML escape Strings before sending to the browser • Session Management – Lift uses the JEE container’s session management and keeps passwords hashed at all times with per-row salt • CSRF – Lift uses session-specific bindings between HTML elements and the server-side behaviors associated with those elements. Bindings cannot be predicted, so cross site requests of session- specific bindings is impossible • URL Access – Lift provides declarative rules for access to URLs. Access will be denied to a URL unless the criteria is met for accessing the specific URL An Introduction to Lift May 2, 2012 6
  • 7. In the Wild … Lift is gaining traction OpenStudy – Collaborative learning tool used by MIT and many other top universities. FourSquare – Message queue in pure Scala. Website, mobile website and RESTful API running on Lift. StackMob– ‘Heroku for Mobile’. Novell – Pulse, a cloud-based, real-time collaboration platform for the enterprise. Utilizes Scala and Lift. An Introduction to Lift May 2, 2012 7
  • 8. The Basics of Lift... What you need to know to get started! • Getting Up and Running • Building Blocks • Page Templates • Snippets • Model • Business Logic An Introduction to Lift May 2, 2012 8
  • 9. The Basics of Lift … Getting up and running Required • Java 1.5 or greater • Scala 2.9.1 distribution • SBT – Simple Build Tool • Lift 2.4 Optional • sbteclipse – create .project for Eclipse • IDE Plugin – ScalaIDE (Eclipse – must use Helios) – Scala Plugin for IntelliJ IDEA – Scala Plugin for NetBeans Notes: 1) Installation of Scala and SBT involve expanding compressed file and adding to PATH 2) IDE installation varies by tool; some dependency on IDE release number 3) ScalaIDE officially supported by Typesafe An Introduction to Lift May 2, 2012 9
  • 10. The Basics of Lift … Building Blocks… Building Blocks An Introduction to Lift May 2, 2012 10
  • 11. The Basics of Lift … Page Templates… Page Templates An Introduction to Lift May 2, 2012 11
  • 12. The Basics of Lift … Page Templates… Page Templates Templates • A template is a well formed, designer friendly XML document • Code cannot creep into the document • Special tags to reference snippets Example An Introduction to Lift May 2, 2012 12
  • 13. The Basics of Lift … Snippets… Snippets An Introduction to Lift May 2, 2012 13
  • 14. The Basics of Lift … Snippets… Snippets Snippets • Any template element in the lift: or l: name space indicates a snippet • Snippets are functions that transform the invocating element into a new node • There can be multiple snippets per template • Snippets are evaluated in the order they are encountered • Processed serially, unless marked as parallel=true Example An Introduction to Lift May 2, 2012 14
  • 15. The Basics of Lift … Model… Model and Persistence An Introduction to Lift May 2, 2012 15
  • 16. The Basics of Lift … Model… Model Model • The model is the object representation of your persistence store • Lift includes two options Mapper and Record • Mapper typically used for relational databases • Record typically used for NoSQLdatastores Example An Introduction to Lift May 2, 2012 16
  • 17. The Basics of Lift … Business Logic… Your Business Logic An Introduction to Lift May 2, 2012 17
  • 18. The Basics of Lift … Model… Model Model • The model is the object representation of your persistence store • Lift includes two options Mapper and Record • Mapper typically used for relational databases • Record typically used for NoSQLdatastores Example An Introduction to Lift May 2, 2012 18
  • 19. The Basics of Lift … Business Logic… Your Business Logic Business Logic • Business logic resides in the lib directory Example An Introduction to Lift May 2, 2012 19
  • 20. Appendix … Web References ... Resources Web Resources Description Link Scala http://www.scala-lang.org SBT – Simple Build Tool http://github.com/harrah/xsbt ScalaIDE for Eclipse http://scala-ide.org Scala Plugin for IntelliJ IDEA http://confluence.jetbrains.net/display/SCA/Scala_Plugin+for+IntelliJ+IDEA Scala Plugin for NetBeans http://wiki.netbeans.org/Scala Lift http://liftweb.net An Introduction to Lift May 2, 2012 20
  • 21. Contact ... Contact Me! blemons@credera.com @brentlemons slideshare.net/brentlemons An Introduction to Lift May 2, 2012 21

Hinweis der Redaktion

  1. Open web application security program (owasp)
  2. Think of sbt as being similar to maven or antShow ide and run HowdyBasic
  3. Field
  4. Field
  5. Field
  6. Field
  7. Field
  8. Field
  9. Field
  10. Field
  11. Field
  12. Field