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

メルマガマーケティング Ato z
メルマガマーケティング Ato zメルマガマーケティング Ato z
メルマガマーケティング Ato zHati Miura
 
ENGLISH LANGUAGE KSSR YEAR 1I wear...
ENGLISH LANGUAGE KSSR YEAR 1I wear...ENGLISH LANGUAGE KSSR YEAR 1I wear...
ENGLISH LANGUAGE KSSR YEAR 1I wear...Ministry of Education
 
無題プレゼンテーション
無題プレゼンテーション無題プレゼンテーション
無題プレゼンテーションHati Miura
 
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 casaapoyate_en_mi
 
002 04『【再配布権】海外高額リードメール攻略マニュアル』
002 04『【再配布権】海外高額リードメール攻略マニュアル』002 04『【再配布権】海外高額リードメール攻略マニュアル』
002 04『【再配布権】海外高額リードメール攻略マニュアル』Hati Miura
 
Eメール マーケティング ato z
Eメール マーケティング ato zEメール マーケティング ato z
Eメール マーケティング ato zHati Miura
 
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.comlila cordova
 
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 talkclive boulton
 

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
 
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 IoCFunnelll
 
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 LabOpenTravel Alliance
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on RailsViridians
 
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 ApplicationDrupalcampAtlanta2012
 
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 ApplicationAppnovation Technologies
 
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 softwareArnaud LEMAIRE
 
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 2012Adam Mokan
 
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 Railscompany
 
Quick Start: Rails
Quick Start: RailsQuick Start: Rails
Quick Start: RailsDavid Keener
 
Scaling LinkedIn - A Brief History
Scaling LinkedIn - A Brief HistoryScaling LinkedIn - A Brief History
Scaling LinkedIn - A Brief HistoryJosh Clemm
 
Spring intro classes-in-mumbai
Spring intro classes-in-mumbaiSpring intro classes-in-mumbai
Spring intro classes-in-mumbaivibrantuser
 
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 2016Marco Breveglieri
 
Developing modular Java applications
Developing modular Java applicationsDeveloping modular Java applications
Developing modular Java applicationsJulien Dubois
 
Spring introduction
Spring introductionSpring introduction
Spring introductionManav Prasad
 

Ä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

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 

Kürzlich hochgeladen (20)

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 

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