SlideShare a Scribd company logo
1 of 10
Ikenna Okpala
Twitter:@kengimel
3rd
November 2010
Lightening Talk on Scala's Lift Web Framework
Lift Web: Introduction
 Lift is a web application framework written in
Scala and Created by David Pollak (@dpp on
twitter).
 To me it is expressive and elegant also caters
for maintainability, scalability and performance.
 Design goals are security, conciseness and
performance.
 It is an abtraction of the HTTP request cycle.
 Continually bringing the best of other web
frameworks and conceptsunder on umbrella.
Lift Web: ”View First” Approach
 Lift's approach is coined the “View First” design
”You can think of Lift as having a modified 
Model View Presenter (MVP) that for the 
purpose of this discussion we shall refer to as 
View­ViewModel­Model (V­VM­M)” (Perrett, 
2011, Lift in Action)
Lift Web : ”View First” Approach
Allows Invalid States.
VIEW TEMPLATES
<<STATEFUL>>
VIEW/MODEL
SNIPPET
MODEL
Change
Notification Error
Notices
Execute Commands Apply / Commit
ADAPTED FROM LIFT IN ACTION MEAP EDITION
FOUND AT: http://bit.ly/c5B919
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>ljcexample</head>
<body>
<h1>Hello World</h1>
The Time is:
<lift:HelloWorldSnippet>
date is rendered here
</lift:HelloWorldSnippet>
</body>
</html>
Lift Web: Hello World
VIEW
package ljcexample.snippet
import _root_.scala.xml.NodeSeq
import _root_.java.util.{Date}
case class myModel(mydate: Date)
class HelloWorldSnippet {
val today = myModel(new Date)
def render(in: NodeSeq): NodeSeq =
<span> {today.mydate.toString} </span>
}
Lift Web: Hello World
VIEW/MODEL
Why Lift ?
 More powerful HTTP request / response control
 Functional conciseness
 Pattern macthing
 Hign order functions
 case classes (for modelling and data tranfer or VO)
 Better OO modeling with Scala (using traits
etc..)
 Easier and friendly use of XML.
 Leveraging Scala Actors library
 Great community, fast responses.
Lift Web: Getting Started
 Lift's Home @ www.liftweb.net and
demo.liftweb.net
 SBT and Lifty.. www.lifty.org
 Getting started chat example from
www.liftweb.net
 Scala Lift Off Videos On Skills Matter Website
at this address: http://bit.ly/bhIAaw
 Join the London Scala User Group and Lift's
mailing list
 Lift in Action by Tim Perrett due Feb. 2011,
MEAP version found here: http://bit.ly/c5B919
THANKS
THANKS

More Related Content

What's hot

Onion Architecture
Onion ArchitectureOnion Architecture
Onion Architecture
matthidinger
 
iOS Architecture
iOS ArchitectureiOS Architecture
iOS Architecture
Jacky Lian
 

What's hot (7)

API design principles for accelerated development
API design principles for accelerated developmentAPI design principles for accelerated development
API design principles for accelerated development
 
Onion Architecture
Onion ArchitectureOnion Architecture
Onion Architecture
 
Developing WordPress Plugins : For Begineers
Developing WordPress Plugins :  For BegineersDeveloping WordPress Plugins :  For Begineers
Developing WordPress Plugins : For Begineers
 
Inside mind of a successful platform architect / Gartner APPS 2016
Inside mind of a successful platform architect / Gartner APPS 2016 Inside mind of a successful platform architect / Gartner APPS 2016
Inside mind of a successful platform architect / Gartner APPS 2016
 
iOS Architecture
iOS ArchitectureiOS Architecture
iOS Architecture
 
Drupal
DrupalDrupal
Drupal
 
Deploy mule application
Deploy mule applicationDeploy mule application
Deploy mule application
 

Viewers also liked (9)

Droidcon: Al Sutton: Android beyond the phone; Tablets, eReaders, and more- 2...
Droidcon: Al Sutton: Android beyond the phone; Tablets, eReaders, and more- 2...Droidcon: Al Sutton: Android beyond the phone; Tablets, eReaders, and more- 2...
Droidcon: Al Sutton: Android beyond the phone; Tablets, eReaders, and more- 2...
 
Acceptance Test Driven Development
Acceptance Test Driven DevelopmentAcceptance Test Driven Development
Acceptance Test Driven Development
 
Production Operations An Architect And Developers Perspective (Without Notes)
Production Operations   An Architect And Developers Perspective (Without Notes)Production Operations   An Architect And Developers Perspective (Without Notes)
Production Operations An Architect And Developers Perspective (Without Notes)
 
Krestan Krab Thorup Erjang Erlang
Krestan Krab Thorup Erjang ErlangKrestan Krab Thorup Erjang Erlang
Krestan Krab Thorup Erjang Erlang
 
Coreyhaines
CoreyhainesCoreyhaines
Coreyhaines
 
Livefoldersasfeeds
LivefoldersasfeedsLivefoldersasfeeds
Livefoldersasfeeds
 
Eyes Free Android Julian Harty
Eyes Free Android Julian HartyEyes Free Android Julian Harty
Eyes Free Android Julian Harty
 
Rewriting Java In Scala
Rewriting Java In ScalaRewriting Java In Scala
Rewriting Java In Scala
 
Acceptance startup fini
Acceptance startup finiAcceptance startup fini
Acceptance startup fini
 

Similar to Ikenna Okpala: Scala's Lift Web Framework - 03/11/2010

Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
tutorialsruby
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
tutorialsruby
 
Part 1 implementing a simple_web_service
Part 1 implementing a simple_web_servicePart 1 implementing a simple_web_service
Part 1 implementing a simple_web_service
krishmdkk
 
"Up-Down Development & DSL-first approach", Владимир Мельник, DataArt
 "Up-Down Development & DSL-first approach", Владимир Мельник, DataArt "Up-Down Development & DSL-first approach", Владимир Мельник, DataArt
"Up-Down Development & DSL-first approach", Владимир Мельник, DataArt
DataArt
 

Similar to Ikenna Okpala: Scala's Lift Web Framework - 03/11/2010 (20)

Intro lift
Intro liftIntro lift
Intro lift
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
Building a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekBuilding a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one week
 
Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arp
 
Architecting Applications Using Apache Wicket Java2 Days 2009
Architecting Applications Using Apache Wicket   Java2 Days 2009Architecting Applications Using Apache Wicket   Java2 Days 2009
Architecting Applications Using Apache Wicket Java2 Days 2009
 
Features and Context Overview
Features and Context OverviewFeatures and Context Overview
Features and Context Overview
 
Mike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and PatternsMike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and Patterns
 
Connecting Capella to IBM ELM platform (IBM Jazz)
Connecting Capella to IBM ELM platform (IBM Jazz)Connecting Capella to IBM ELM platform (IBM Jazz)
Connecting Capella to IBM ELM platform (IBM Jazz)
 
Part 1 implementing a simple_web_service
Part 1 implementing a simple_web_servicePart 1 implementing a simple_web_service
Part 1 implementing a simple_web_service
 
"Up-Down Development & DSL-first approach", Владимир Мельник, DataArt
 "Up-Down Development & DSL-first approach", Владимир Мельник, DataArt "Up-Down Development & DSL-first approach", Владимир Мельник, DataArt
"Up-Down Development & DSL-first approach", Владимир Мельник, DataArt
 
Component Based UI Architecture - Alex Moldovan
Component Based UI Architecture - Alex MoldovanComponent Based UI Architecture - Alex Moldovan
Component Based UI Architecture - Alex Moldovan
 
Laravel overview
Laravel overviewLaravel overview
Laravel overview
 
ASP.NEt MVC and Angular What a couple
ASP.NEt MVC and Angular What a coupleASP.NEt MVC and Angular What a couple
ASP.NEt MVC and Angular What a couple
 
Spring boot microservice metrics monitoring
Spring boot   microservice metrics monitoringSpring boot   microservice metrics monitoring
Spring boot microservice metrics monitoring
 
Spring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics MonitoringSpring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics Monitoring
 
Sprint Portlet MVC Seminar
Sprint Portlet MVC SeminarSprint Portlet MVC Seminar
Sprint Portlet MVC Seminar
 
Enterprise Level Application Architecture with Web APIs using Entity Framewor...
Enterprise Level Application Architecture with Web APIs using Entity Framewor...Enterprise Level Application Architecture with Web APIs using Entity Framewor...
Enterprise Level Application Architecture with Web APIs using Entity Framewor...
 
Unlocking the power of the APEX Plugin Architecture
Unlocking the power of the APEX Plugin ArchitectureUnlocking the power of the APEX Plugin Architecture
Unlocking the power of the APEX Plugin Architecture
 

More from Skills Matter

Oscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheimOscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheim
Skills Matter
 
Russ miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-diveRuss miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-dive
Skills Matter
 
I went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_tI went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_t
Skills Matter
 

More from Skills Matter (20)

5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard Lawrence5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard Lawrence
 
Patterns for slick database applications
Patterns for slick database applicationsPatterns for slick database applications
Patterns for slick database applications
 
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvmScala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
 
Oscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheimOscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheim
 
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
 
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberlCukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberl
 
Cukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.jsCukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.js
 
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
 
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
 
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source worldProgressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source world
 
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
 
Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#
 
A poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testingA poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testing
 
Russ miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-diveRuss miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-dive
 
Serendipity-neo4j
Serendipity-neo4jSerendipity-neo4j
Serendipity-neo4j
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelism
 
Plug 20110217
Plug   20110217Plug   20110217
Plug 20110217
 
Lug presentation
Lug presentationLug presentation
Lug presentation
 
I went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_tI went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_t
 
Plug saiku
Plug   saikuPlug   saiku
Plug saiku
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
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...
 
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
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
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
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
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?
 

Ikenna Okpala: Scala's Lift Web Framework - 03/11/2010

  • 2. Lift Web: Introduction  Lift is a web application framework written in Scala and Created by David Pollak (@dpp on twitter).  To me it is expressive and elegant also caters for maintainability, scalability and performance.  Design goals are security, conciseness and performance.  It is an abtraction of the HTTP request cycle.  Continually bringing the best of other web frameworks and conceptsunder on umbrella.
  • 3. Lift Web: ”View First” Approach  Lift's approach is coined the “View First” design ”You can think of Lift as having a modified  Model View Presenter (MVP) that for the  purpose of this discussion we shall refer to as  View­ViewModel­Model (V­VM­M)” (Perrett,  2011, Lift in Action)
  • 4. Lift Web : ”View First” Approach Allows Invalid States. VIEW TEMPLATES <<STATEFUL>> VIEW/MODEL SNIPPET MODEL Change Notification Error Notices Execute Commands Apply / Commit ADAPTED FROM LIFT IN ACTION MEAP EDITION FOUND AT: http://bit.ly/c5B919
  • 5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>ljcexample</head> <body> <h1>Hello World</h1> The Time is: <lift:HelloWorldSnippet> date is rendered here </lift:HelloWorldSnippet> </body> </html> Lift Web: Hello World VIEW
  • 6. package ljcexample.snippet import _root_.scala.xml.NodeSeq import _root_.java.util.{Date} case class myModel(mydate: Date) class HelloWorldSnippet { val today = myModel(new Date) def render(in: NodeSeq): NodeSeq = <span> {today.mydate.toString} </span> } Lift Web: Hello World VIEW/MODEL
  • 7. Why Lift ?  More powerful HTTP request / response control  Functional conciseness  Pattern macthing  Hign order functions  case classes (for modelling and data tranfer or VO)  Better OO modeling with Scala (using traits etc..)  Easier and friendly use of XML.  Leveraging Scala Actors library  Great community, fast responses.
  • 8. Lift Web: Getting Started  Lift's Home @ www.liftweb.net and demo.liftweb.net  SBT and Lifty.. www.lifty.org  Getting started chat example from www.liftweb.net  Scala Lift Off Videos On Skills Matter Website at this address: http://bit.ly/bhIAaw  Join the London Scala User Group and Lift's mailing list  Lift in Action by Tim Perrett due Feb. 2011, MEAP version found here: http://bit.ly/c5B919