SlideShare a Scribd company logo
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, LLC
y !!
                                                                  a s
• Secure                                                    r E
                                                      p e
• Interactive                                   S u
• Designer Friendly
• Scalable
             Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
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
The Project




Copyright © 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

• Stable master philosophy




                         Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
The Project
• Developers ≠ Plumbers

• Best concepts from other frameworks




                          Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
The Project




Copyright © 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 servlet containers

• Batteries included (user replaceable)




                          Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
The Project
• Best implementation on JVM for

 Comet          Ajax

 REST           Templating




                        Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
Secure Lift




Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
Secure Lift
• Definitive strategy tackles OWASP Top 10

• So you don’t have to bother




                        Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
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
Interactive Lift




Copyright © 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 Snippets




                         Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
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
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
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
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
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
Designer Friendly Lift




Copyright © 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!




                             Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
Scalable




Copyright © 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 serve millions of pages a day with Lift




                           Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
Summary
• Tremendously secure

• Highly Interactive Web apps simple

• Very friendly to designers

• Successful large scale deployments




                          Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
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
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

• Stories from the trenches




                            Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
Demo: TalkingPuffin Web
Questions?

More Related Content

What's hot

Modern websites in 2020 and Joomla
Modern websites in 2020 and JoomlaModern websites in 2020 and Joomla
Modern websites in 2020 and Joomla
George Wilson
 
 Active Storage - Modern File Storage? 
 Active Storage - Modern File Storage?  Active Storage - Modern File Storage? 
 Active Storage - Modern File Storage? 
Michael Yagudaev
 
From Java to Ruby...and Back
From Java to Ruby...and BackFrom Java to Ruby...and Back
From Java to Ruby...and Back
Anil Hemrajani
 
Developing, building, testing and deploying react native apps
Developing, building, testing and deploying react native appsDeveloping, building, testing and deploying react native apps
Developing, building, testing and deploying react native apps
Leena N
 
Maven part 1
Maven part 1Maven part 1
Maven part 1
princeirfancivil
 
Circular links of chains pieces weakest link process 11 stages powerpoint dia...
Circular links of chains pieces weakest link process 11 stages powerpoint dia...Circular links of chains pieces weakest link process 11 stages powerpoint dia...
Circular links of chains pieces weakest link process 11 stages powerpoint dia...
SlideTeam.net
 
jQuery Conference Boston 2011 CouchApps
jQuery Conference Boston 2011 CouchAppsjQuery Conference Boston 2011 CouchApps
jQuery Conference Boston 2011 CouchApps
Bradley Holt
 
JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...
JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...
JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and
Ryan Cuprak
 
Different ways of integrating React into Rails - Mikhail Bortnyk
Different ways of integrating React into Rails - Mikhail BortnykDifferent ways of integrating React into Rails - Mikhail Bortnyk
Different ways of integrating React into Rails - Mikhail Bortnyk
Ruby Meditation
 
Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swagger
Tony Tam
 
Getting started with rails active storage wae
Getting started with rails active storage waeGetting started with rails active storage wae
Getting started with rails active storage wae
Bishal Khanal
 
Java API for JSON Binding - Introduction and update
Java API for JSON Binding - Introduction and updateJava API for JSON Binding - Introduction and update
Java API for JSON Binding - Introduction and update
Martin Grebac
 
A Day of REST
A Day of RESTA Day of REST
A Day of REST
Scott Taylor
 
Bringing Interactivity to Your Drupal Site with Node.js Integration
Bringing Interactivity to Your Drupal Site with Node.js IntegrationBringing Interactivity to Your Drupal Site with Node.js Integration
Bringing Interactivity to Your Drupal Site with Node.js Integration
Acquia
 
Node.JS: Do you know the dependency of your dependencies dependency
Node.JS: Do you know the dependency of your dependencies dependencyNode.JS: Do you know the dependency of your dependencies dependency
Node.JS: Do you know the dependency of your dependencies dependency
Wim Selles
 
Camel oneactivemq posta-final
Camel oneactivemq posta-finalCamel oneactivemq posta-final
Camel oneactivemq posta-final
Christian Posta
 
Write Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js MunichWrite Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js Munich
Mike North
 
Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3
Wen-Tien Chang
 

What's hot (19)

Modern websites in 2020 and Joomla
Modern websites in 2020 and JoomlaModern websites in 2020 and Joomla
Modern websites in 2020 and Joomla
 
 Active Storage - Modern File Storage? 
 Active Storage - Modern File Storage?  Active Storage - Modern File Storage? 
 Active Storage - Modern File Storage? 
 
From Java to Ruby...and Back
From Java to Ruby...and BackFrom Java to Ruby...and Back
From Java to Ruby...and Back
 
Developing, building, testing and deploying react native apps
Developing, building, testing and deploying react native appsDeveloping, building, testing and deploying react native apps
Developing, building, testing and deploying react native apps
 
Maven part 1
Maven part 1Maven part 1
Maven part 1
 
Circular links of chains pieces weakest link process 11 stages powerpoint dia...
Circular links of chains pieces weakest link process 11 stages powerpoint dia...Circular links of chains pieces weakest link process 11 stages powerpoint dia...
Circular links of chains pieces weakest link process 11 stages powerpoint dia...
 
jQuery Conference Boston 2011 CouchApps
jQuery Conference Boston 2011 CouchAppsjQuery Conference Boston 2011 CouchApps
jQuery Conference Boston 2011 CouchApps
 
JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...
JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...
JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...
 
Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and Hybrid Mobile Development with Apache Cordova and
Hybrid Mobile Development with Apache Cordova and
 
Different ways of integrating React into Rails - Mikhail Bortnyk
Different ways of integrating React into Rails - Mikhail BortnykDifferent ways of integrating React into Rails - Mikhail Bortnyk
Different ways of integrating React into Rails - Mikhail Bortnyk
 
Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swagger
 
Getting started with rails active storage wae
Getting started with rails active storage waeGetting started with rails active storage wae
Getting started with rails active storage wae
 
Java API for JSON Binding - Introduction and update
Java API for JSON Binding - Introduction and updateJava API for JSON Binding - Introduction and update
Java API for JSON Binding - Introduction and update
 
A Day of REST
A Day of RESTA Day of REST
A Day of REST
 
Bringing Interactivity to Your Drupal Site with Node.js Integration
Bringing Interactivity to Your Drupal Site with Node.js IntegrationBringing Interactivity to Your Drupal Site with Node.js Integration
Bringing Interactivity to Your Drupal Site with Node.js Integration
 
Node.JS: Do you know the dependency of your dependencies dependency
Node.JS: Do you know the dependency of your dependencies dependencyNode.JS: Do you know the dependency of your dependencies dependency
Node.JS: Do you know the dependency of your dependencies dependency
 
Camel oneactivemq posta-final
Camel oneactivemq posta-finalCamel oneactivemq posta-final
Camel oneactivemq posta-final
 
Write Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js MunichWrite Once, Run Everywhere - Ember.js Munich
Write Once, Run Everywhere - Ember.js Munich
 
Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3
 

Similar to Lift Introduction

Fluxible
FluxibleFluxible
Fluxible
Taylor Lovett
 
Week01 jan19 introductionto_php
Week01 jan19 introductionto_phpWeek01 jan19 introductionto_php
Week01 jan19 introductionto_php
Jeanho Chu
 
Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09
Shaer Hassan
 
Week01 jan19 introductionto_php
Week01 jan19 introductionto_phpWeek01 jan19 introductionto_php
Week01 jan19 introductionto_php
Jeanho Chu
 
Riding the Edge with Ember.js
Riding the Edge with Ember.jsRiding the Edge with Ember.js
Riding the Edge with Ember.js
aortbals
 
Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014
Arun Gupta
 
VA Smalltalk Update
VA Smalltalk UpdateVA Smalltalk Update
VA Smalltalk Update
ESUG
 
Front End page speed performance improvements for Drupal
Front End page speed performance improvements for DrupalFront End page speed performance improvements for Drupal
Front End page speed performance improvements for Drupal
Promet Source
 
Inside Wordnik's Architecture
Inside Wordnik's ArchitectureInside Wordnik's Architecture
Inside Wordnik's Architecture
Tony Tam
 
Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1
sandeep54552
 
"Python web development combines the simplicity of the language with powerful...
"Python web development combines the simplicity of the language with powerful..."Python web development combines the simplicity of the language with powerful...
"Python web development combines the simplicity of the language with powerful...
softwaretrainer2elys
 
MOBILE QUESTIONS & ANSWER WEBSITE
MOBILE QUESTIONS & ANSWER WEBSITEMOBILE QUESTIONS & ANSWER WEBSITE
MOBILE QUESTIONS & ANSWER WEBSITE
Vishal Mittal
 
Kuby, ActiveDeployment for Rails Apps
Kuby, ActiveDeployment for Rails AppsKuby, ActiveDeployment for Rails Apps
Kuby, ActiveDeployment for Rails Apps
Cameron Dutro
 
ITT Flisol 2013
ITT Flisol 2013ITT Flisol 2013
ITT Flisol 2013
Domingo Suarez Torres
 
Silverlight 5
Silverlight 5Silverlight 5
Silverlight 5
Jeremy Likness
 
WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)
Shumpei Shiraishi
 
Orion Introduction
Orion IntroductionOrion Introduction
Orion Introduction
Tomasz Zarna
 
Ruby Conf Preso
Ruby Conf PresoRuby Conf Preso
Ruby Conf Preso
Dan Yoder
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
Avi Kedar
 
Ppt for Online music store
Ppt for Online music storePpt for Online music store
Ppt for Online music store
ADEEBANADEEM
 

Similar to Lift Introduction (20)

Fluxible
FluxibleFluxible
Fluxible
 
Week01 jan19 introductionto_php
Week01 jan19 introductionto_phpWeek01 jan19 introductionto_php
Week01 jan19 introductionto_php
 
Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09
 
Week01 jan19 introductionto_php
Week01 jan19 introductionto_phpWeek01 jan19 introductionto_php
Week01 jan19 introductionto_php
 
Riding the Edge with Ember.js
Riding the Edge with Ember.jsRiding the Edge with Ember.js
Riding the Edge with Ember.js
 
Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014
 
VA Smalltalk Update
VA Smalltalk UpdateVA Smalltalk Update
VA Smalltalk Update
 
Front End page speed performance improvements for Drupal
Front End page speed performance improvements for DrupalFront End page speed performance improvements for Drupal
Front End page speed performance improvements for Drupal
 
Inside Wordnik's Architecture
Inside Wordnik's ArchitectureInside Wordnik's Architecture
Inside Wordnik's Architecture
 
Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1Enterprise java unit-1_chapter-1
Enterprise java unit-1_chapter-1
 
"Python web development combines the simplicity of the language with powerful...
"Python web development combines the simplicity of the language with powerful..."Python web development combines the simplicity of the language with powerful...
"Python web development combines the simplicity of the language with powerful...
 
MOBILE QUESTIONS & ANSWER WEBSITE
MOBILE QUESTIONS & ANSWER WEBSITEMOBILE QUESTIONS & ANSWER WEBSITE
MOBILE QUESTIONS & ANSWER WEBSITE
 
Kuby, ActiveDeployment for Rails Apps
Kuby, ActiveDeployment for Rails AppsKuby, ActiveDeployment for Rails Apps
Kuby, ActiveDeployment for Rails Apps
 
ITT Flisol 2013
ITT Flisol 2013ITT Flisol 2013
ITT Flisol 2013
 
Silverlight 5
Silverlight 5Silverlight 5
Silverlight 5
 
WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)
 
Orion Introduction
Orion IntroductionOrion Introduction
Orion Introduction
 
Ruby Conf Preso
Ruby Conf PresoRuby Conf Preso
Ruby Conf Preso
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
 
Ppt for Online music store
Ppt for Online music storePpt for Online music store
Ppt for Online music store
 

Recently uploaded

Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
Enterprise Knowledge
 
High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024
Vadym Kazulkin
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
ScyllaDB
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
zjhamm304
 
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
Fwdays
 
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 
Essentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation ParametersEssentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation Parameters
Safe Software
 

Recently uploaded (20)

Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
 
High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
 
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
 
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 
Essentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation ParametersEssentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation Parameters
 

Lift Introduction

  • 1. Dave Briccetti Indrajit Raychaudhuri @dcbriccetti @indrajitr
  • 2. Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
  • 3. • Secure • Interactive • Designer Friendly Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
  • 4. • Secure • Interactive • Designer Friendly • Scalable Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
  • 5. y !! a s • Secure r E p e • Interactive S u • Designer Friendly • Scalable Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
  • 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. The Project Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
  • 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. The Project • Developers ≠ Plumbers • Best concepts from other frameworks Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
  • 10. The Project Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
  • 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. The Project • Best implementation on JVM for Comet Ajax REST Templating Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
  • 13. Secure Lift Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
  • 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. 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. Interactive Lift Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
  • 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. 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. 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. 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. 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. 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. Designer Friendly Lift Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
  • 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. Scalable Copyright © 2011 Lift Web Framework, Worldwide Conferencing, LLC
  • 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. 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. 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. Scala: A Quick Primer
  • 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

Editor's Notes

  1. - 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
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. 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
  9. 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
  10. 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
  11. Comet and Ajax\nAsynchronous page rendering\nDesigner friendly templates\n\n
  12. Injection\nXSS\nSession Management\nDirect Object References\nCSRF\nURL Access\n\n
  13. Injection\nXSS\nSession Management\nDirect Object References\nCSRF\nURL Access\n\n
  14. - 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
  15. - 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
  16. \n
  17. \n
  18. 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
  19. 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
  20. To Wrap Up:\nprobably the friendliest for a JVM based framework\n\n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n