SlideShare a Scribd company logo
Google AppEngine
     Paul Bakker
About me
  Paul Bakker
• Trainer Info Support            Hibernat
                         EJB 3
                                  e
• NLJUG speaker          JSF
                                  Flex
• Java Magazine author   Seam
                                  Groovy
                         JavaFX
                                  Grails
                         Spring
About Info Support
•   Financieel gezond sinds oprichting 1986
•   Focus op IT vakmanschap
•   Brede en integrale dienstverlening
•   Partnerships met o.a. Microsoft, IBM, NLJUG
•   Vestigingen in Nederland en België
    - 250+ medewerkers in Nederland
    - 25 medewerkers in België
Presentation Goal

Introduction to
  Developing
    applications for

 AppEngine
Outline         AppEngine
 Cloud          Services
 offerings      Using
 Introducing    frameworks
 AppEngine      Pricing
 Developing
 and
 deploying
 Storing data
Clouds N’ stuff
Infrastructure
 as a Service
                 Platform as a
                    Service
 Software as a
    Service
Infrastructure
              as a Service
 A virtual hardware platform
  Full control of the operating system

Custom configuration of application servers
Infrastructure
                as a Service
Pros
It’s just works like your old hardware
     No development limitations
 No lock-in


                   Cons
                     You still have to manage servers
                         No automatic scaling
Platform as a
                Service
A virtual application server
   No control of the operating system
Running in a sandbox
Platform as a
                 Service
 Pros
No more server management
    Easy deployment
Automatic scaling
                   Cons
                        Limited by the sandbox
                      Can’t run existing apps
Software as a
                  Service
Run an application from the cloud
  Might extend the application using a
             proprietary API
AppEngine
  Intro
AppEngine architecture
Handling requests
Each application gets a free domain name
  http://yourappname.appspot.com
You can add your own domain name
Each request has a 30 second timeout
Streaming responses are not supported
Scaling
JVMs are started on demand
  on app startup
  after inactivity
  when upscaling
Starting a JVM causes a “loading request”
  the app is loaded during that request
Loading request
     optimization
Application startup time is now important
  the app might be started after a request
Reduce the use of libraries
Prevent heavy initialization code
  share data with multiple JVMs using
  MemCache
The sandbox
You can’t
   Write to the file system
   Open sockets
   Start threads
   Invoke most System calls
   Reflect on classes not belonging to the app
   Use JRE classes not on the white list
Supported
Java Data Objects (JDO)
Java Persistence API (JPA)
Java Server Faces (JSF)
Java Server Pages (JSP) and JSTL
Java Servlet API 2.4
JavaBeans Activation Framework (JAF)
Java Architecture for XML Binding (JAXB)
JavaMail
XML processing APIs including DOM, SAX and XSLT
Not Supported
Enterprise Java Beans (EJB)
JAX-WS and JAX-RPC
JDBC
Java EE Connector Architecture (JCA)
Java Management Extensions (JMX)
Java Message Service (JMS)
Java Naming and Directory Interface (JNDI)
Remote Method Invocation (RMI)
Creating and
uploading an application
Storing Data
DataStore
Distributed architecture
Highly scalable
Not relational
Schemaless
Properties have one or more values
Sharded architecture
          Row name   Values
             A        [...]
             B        [...]
             C        [...]


          Row name   Values
             D        [...]
             E        [...]
             F        [...]


          Row name   Values
             G        [...]
             H        [...]
             I        [...]
Entity storage
   Kind => table
   Key => primary key
   Entity Group => partition
   Typed properties => columns

Kind                       Person
Entity Group               /Person:Paul
Key                        /Person:Paul
name                       string: Paul Bakker
colleagues                 Key:/Speaker(68)   Key:/Speaker(15)
Entity Groups

Entities are hierarchical
Useful for “owned” relations
  a chapter can’t exist without a book
  /Book(24)/Chapter(2)/Paragraph(3)
Queries
Supported filters
 < less than

 <= less than or equal to

 = equal to

 > greater than

 >= greater than or equal to

 != not equal to
Indexes
Each query uses an index
One index for each combination of:
  kind
 filter property
 operator
 sort order
Index example
              JPQL queries
                 select s from Speaker s order by s.firstname, s.lastname

select s from Speaker s WHERE s.firstname LIKE :firstname order by s.firstname, s.lastname

select s from Speaker s WHERE lastname LIKE :lastname order by s.lastname, s.firstname




       Index configuration
Transactions
The DataStore is transactional
All DataStore write operations are atomic
Only a single Entity Group can be used
within a transaction
  entities in the same group live physically
  together
Transactions
Transactions
Begin transaction
Transactions
Begin transaction
Create new Speaker (/Speaker(1))
Transactions
Begin transaction
Create new Speaker (/Speaker(1))
Add Talk (/Speaker(1)/Talk(1))
Transactions
Begin transaction
Create new Speaker (/Speaker(1))
Add Talk (/Speaker(1)/Talk(1))
Add new Speaker (/Speaker(2))
Transactions
Begin transaction
Create new Speaker (/Speaker(1))
Add Talk (/Speaker(1)/Talk(1))
Add new Speaker (/Speaker(2))
Commit transaction
Transactions
Begin transaction
Create new Speaker (/Speaker(1))
Add Talk (/Speaker(1)/Talk(1))
Commit transaction
Begin transaction
Add new Speaker (/Speaker(2))
Commit transaction
Transaction Isolation
Within a transaction: Serializable
  transactions are completely isolated
Outside a transaction: Read Committed
  get() will only consist of committed data
  queries are more subtle
Understand commits
      A commit() consists of two milestones
        1 changes to entities visible
        2 changes to indexes visible




the entity is updated, but might not be
    returned by a predicate query
Understand commits
       bob.age == 18

Transaction 1
       bob.age += 1




                      select ... where age = 18
Transaction 2
Understand commits
       bob.age == 18

Transaction 1
       bob.age += 1




                      select ... where age = 18
Transaction 2
                         bob is returned
Understand commits
       bob.age == 18

Transaction 1
       bob.age += 1




                      select ... where age = 18
Transaction 2
                         bob is returned
                           bob.age == 19
The low level API

JDBC like API
Work directly with untyped entities and
properties
Query using GQL
Creating entities
Queries
GQL
SELECT [* | __key__] FROM <kind>
   [WHERE <condition> [AND <condition> ...]]
   [ORDER BY <property> [ASC | DESC] [, <property> [ASC | DESC] ...]]
   [LIMIT [<offset>,]<count>]
   [OFFSET <offset>]

<condition> := <property> {< | <= | > | >= | = | != } <value>
<condition> := <property> IN <list>
<condition> := ANCESTOR IS <entity or key>
GQL
Setting up JPA

Add JPA and DataNucleus jars
Create persistence.xml
Configure post-compilation class
enhancement
Persistence Unit
EntityManagerFactory
Creating an Entity
JPA limitations
No “Joined” inheritance
No “Single Table” inheritance
  would be technically possible
No many-to-many relationships
No join-queries
No aggregation queries
No polymorphic queries
Owned relationships

The “owned” entity only has meaning when
it’s parent exists
 Key includes parent key
/Department(24)/Employee(2)
Owned relations
Owned relations
Polymorphic relations




Throws exception!
Using JPA
Unowned relations




No referential checks!
Unowned relations

Both entities can exist without the other
  an employee and it’s colleagues
  Cannot be used within the same
  transaction
Loading collections
Many-to-many


GAE doesn’t support JPA many-to-many
Work around by mapping key collections
Unowned collections
Constraining pages

Uses Google Accounts
Require users to log-in
Require the admin role
  admin == developer on GAE
Require to
  login




 Require
admin role
Login and logout
Login




Logout
Using Google Accounts
Services                Mail
           Users
  Queus
      MemCache

                    Blob Store

                   Cron Jobs
Mail service
Receiving mail
!   Mail can be send to
  somename@appid.appspotmail.com!


                      POST!
        AppEngine!            MyServlet!
                          /_ah/mail/address!
Cron Jobs

Tasks that run automatically on specific
times or intervals
  sending a week report
  nightly cleanup
Executing a job is invoking a URL
Configuring jobs
Configure job in WEB-INF/cron.xml
Cron syntax
              every N (hours|mins|minutes)


("every"|ordinal) (days) ["of" (monthspec)] (time)


          Examples
            every 5 minutes
            every 12 hours
            2nd,third mon,wed,thu of march 17:00
            every monday 09:00
            1st monday of sep,oct,nov 17:00
            every day 00:00
Cron jobs
Task Queues
Process asynchronous, parallel background
tasks
Modeled as web hooks
 a request to a web hook is scheduled
 the request handler is just like any other
 user request
 a web hook has data and code
Task queue use cases
Send multiple confirmation emails
 each email is sent by a request to the
 same task with different data
Place order
 send confirmation email (task 1)
 send notification to admin (task 2)
Adding tasks


/notification
Configuring queues
     WEB-INF/queue.xml




rate: throttling task execution
bucket-size: “token-bucket” algorithm
Task Queues
Saving files
Store files up to 50 mb in the BlobStore
Upload by form POST
  file is uploaded to the BlogStore
  get a blob key in code
Serve file using blob key
Upload file
Serving files
Listing blobs
BlobStore
MemCache

Distributed in-memory cache
 e.g. cache frequent queries
JCache API (JSR 107)
Low level API
Using a cache
 Cache expires after 3600 miliseconds
Memcache
Frameworks
on AppEngine
Frameworks
   A lot of frameworks work “mostly”
         but you never know if/when it breaks...
JSF 1.2                  e.g. RichFaces is not!
 JSF 2                      disable threads
Grails                      using a plugin
 Weld                       multiple issues
JAX-WS
 EJB
Spring                  some modules are not
 JMS
Testing
Unit Testing

Easy out of container unit testing
In-memory DataService, MailService,
MemcacheService, TaskQueue,
AuthenticationService etc.
Setup
  local
datastore
Create
datastore
 instance
Use
datastore
   API
 directly
Using JPA
TaskQueue testing
     (setup)
TaskQueue testing
     (test)
Unit Testing
Costs
Quotas
                       Free Default Quota                     Billing Enabled Default Quota

Resource

                       Daily Limit          Maximum Rate      Daily Limit           Maximum Rate


                                            7,400 requests/   43,000,000            30,000 requests/
Requests               1,300,000 requests
                                            minute            requests              minute

Outgoing                                    56 megabytes/     1 gigabyte free;      10 gigabytes/
Bandwidth (billable,   1 gigabyte                             1,046 gigabytes
                                            minute                                  minute
includes HTTPS)                                               maximum

Incoming                                    56 megabytes/     1 gigabyte free;      10 gigabytes/
Bandwidth (billable,   1 gigabyte                             1,046 gigabytes
                                            minute                                  minute
includes HTTPS)                                               maximum

                                            15 CPU-minutes/   6.5 CPU-hours free;   72 CPU-minutes/
CPU Time (billable)    6.5 CPU-hours                          1,729 CPU-hours
                                            minute                                  minute
                                                              maximum
Pricing
Resource       Unit            Unit cost


Outgoing
               gigabytes       $0.12
Bandwidth


Incoming
               gigabytes       $0.10
Bandwidth


CPU Time       CPU hours       $0.10


               gigabytes per
Stored Data                    $0.15
               month


Recipients
               recipients      $0.0001
Emailed
Setting a budget
The verdict
Deployment can’t get any
easier
Sandbox can be a show
stopper
Apps should be
developed specifically for
AppEngine
Google AppEngine
     Paul Bakker

More Related Content

What's hot

Wicket Introduction
Wicket IntroductionWicket Introduction
Wicket Introduction
Eyal Golan
 
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityIBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
Paul Withers
 
Linguistic Abstraction for the Web
Linguistic Abstraction for the WebLinguistic Abstraction for the Web
Linguistic Abstraction for the Web
Eelco Visser
 
JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6
Bert Ertman
 
Java EE 8 Recipes
Java EE 8 RecipesJava EE 8 Recipes
Java EE 8 Recipes
Josh Juneau
 
Getting Started with jQuery
Getting Started with jQueryGetting Started with jQuery
Getting Started with jQuery
Akshay Mathur
 
JavaScript
JavaScriptJavaScript
JavaScript
Ivano Malavolta
 
HTML5 Refresher
HTML5 RefresherHTML5 Refresher
HTML5 Refresher
Ivano Malavolta
 
An introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSON
An introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSONAn introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSON
An introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSON
Syed Moosa Kaleem
 
Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)Hamed Hatami
 
HTML5: the new frontier of the web
HTML5: the new frontier of the webHTML5: the new frontier of the web
HTML5: the new frontier of the web
Ivano Malavolta
 
Domain Driven Design using Laravel
Domain Driven Design using LaravelDomain Driven Design using Laravel
Domain Driven Design using Laravel
wajrcs
 
Amis conference soa deployment. the dirty tricks using bamboo, nexus and xl ...
Amis conference soa deployment. the dirty tricks using  bamboo, nexus and xl ...Amis conference soa deployment. the dirty tricks using  bamboo, nexus and xl ...
Amis conference soa deployment. the dirty tricks using bamboo, nexus and xl ...
Getting value from IoT, Integration and Data Analytics
 
FREE Sql Server syllabus
FREE Sql Server syllabusFREE Sql Server syllabus
FREE Sql Server syllabus
Encryption Technology
 
Utilizing JSF Front Ends with Microservices
Utilizing JSF Front Ends with MicroservicesUtilizing JSF Front Ends with Microservices
Utilizing JSF Front Ends with Microservices
Josh Juneau
 
Hybernat and structs, spring classes in mumbai
Hybernat and structs, spring classes in mumbaiHybernat and structs, spring classes in mumbai
Hybernat and structs, spring classes in mumbai
Vibrant Technologies & Computers
 
A Groovy Way to Interface With Cascade Server
A Groovy Way to Interface With Cascade ServerA Groovy Way to Interface With Cascade Server
A Groovy Way to Interface With Cascade Server
hannonhill
 
Modern development paradigms
Modern development paradigmsModern development paradigms
Modern development paradigms
Ivano Malavolta
 
7 Tips For Better JDeveloper Experience
7 Tips For Better JDeveloper Experience7 Tips For Better JDeveloper Experience
7 Tips For Better JDeveloper Experience
shay.shmeltzer
 
Carlos Amador .Net Portfolio
Carlos Amador .Net PortfolioCarlos Amador .Net Portfolio
Carlos Amador .Net PortfolioCMA_SlideShare
 

What's hot (20)

Wicket Introduction
Wicket IntroductionWicket Introduction
Wicket Introduction
 
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityIBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
 
Linguistic Abstraction for the Web
Linguistic Abstraction for the WebLinguistic Abstraction for the Web
Linguistic Abstraction for the Web
 
JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6
 
Java EE 8 Recipes
Java EE 8 RecipesJava EE 8 Recipes
Java EE 8 Recipes
 
Getting Started with jQuery
Getting Started with jQueryGetting Started with jQuery
Getting Started with jQuery
 
JavaScript
JavaScriptJavaScript
JavaScript
 
HTML5 Refresher
HTML5 RefresherHTML5 Refresher
HTML5 Refresher
 
An introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSON
An introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSONAn introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSON
An introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSON
 
Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)
 
HTML5: the new frontier of the web
HTML5: the new frontier of the webHTML5: the new frontier of the web
HTML5: the new frontier of the web
 
Domain Driven Design using Laravel
Domain Driven Design using LaravelDomain Driven Design using Laravel
Domain Driven Design using Laravel
 
Amis conference soa deployment. the dirty tricks using bamboo, nexus and xl ...
Amis conference soa deployment. the dirty tricks using  bamboo, nexus and xl ...Amis conference soa deployment. the dirty tricks using  bamboo, nexus and xl ...
Amis conference soa deployment. the dirty tricks using bamboo, nexus and xl ...
 
FREE Sql Server syllabus
FREE Sql Server syllabusFREE Sql Server syllabus
FREE Sql Server syllabus
 
Utilizing JSF Front Ends with Microservices
Utilizing JSF Front Ends with MicroservicesUtilizing JSF Front Ends with Microservices
Utilizing JSF Front Ends with Microservices
 
Hybernat and structs, spring classes in mumbai
Hybernat and structs, spring classes in mumbaiHybernat and structs, spring classes in mumbai
Hybernat and structs, spring classes in mumbai
 
A Groovy Way to Interface With Cascade Server
A Groovy Way to Interface With Cascade ServerA Groovy Way to Interface With Cascade Server
A Groovy Way to Interface With Cascade Server
 
Modern development paradigms
Modern development paradigmsModern development paradigms
Modern development paradigms
 
7 Tips For Better JDeveloper Experience
7 Tips For Better JDeveloper Experience7 Tips For Better JDeveloper Experience
7 Tips For Better JDeveloper Experience
 
Carlos Amador .Net Portfolio
Carlos Amador .Net PortfolioCarlos Amador .Net Portfolio
Carlos Amador .Net Portfolio
 

Viewers also liked

Spring 2.5
Spring 2.5Spring 2.5
Spring 2.5
Paul Bakker
 
Els DéUs óLíMpics En L’Art.
Els DéUs óLíMpics En L’Art.Els DéUs óLíMpics En L’Art.
Els DéUs óLíMpics En L’Art.Reixel
 
Web Applications of the future: Combining JEE6 & JavaFX
Web Applications of the future: Combining JEE6 & JavaFXWeb Applications of the future: Combining JEE6 & JavaFX
Web Applications of the future: Combining JEE6 & JavaFX
Paul Bakker
 
Rich Enterprise Applications with JavaFX
Rich Enterprise Applications with JavaFXRich Enterprise Applications with JavaFX
Rich Enterprise Applications with JavaFX
Max Katz
 
JavaFX - Sketch Board to Production
JavaFX - Sketch Board to ProductionJavaFX - Sketch Board to Production
JavaFX - Sketch Board to Production
Yoav Aharoni
 
JavaFX 2 Rich Desktop Platform
JavaFX 2 Rich Desktop PlatformJavaFX 2 Rich Desktop Platform
JavaFX 2 Rich Desktop Platform
Rajmahendra Hegde
 
Building RIA Applications with JavaFX
Building RIA Applications with JavaFXBuilding RIA Applications with JavaFX
Building RIA Applications with JavaFX
Max Katz
 

Viewers also liked (7)

Spring 2.5
Spring 2.5Spring 2.5
Spring 2.5
 
Els DéUs óLíMpics En L’Art.
Els DéUs óLíMpics En L’Art.Els DéUs óLíMpics En L’Art.
Els DéUs óLíMpics En L’Art.
 
Web Applications of the future: Combining JEE6 & JavaFX
Web Applications of the future: Combining JEE6 & JavaFXWeb Applications of the future: Combining JEE6 & JavaFX
Web Applications of the future: Combining JEE6 & JavaFX
 
Rich Enterprise Applications with JavaFX
Rich Enterprise Applications with JavaFXRich Enterprise Applications with JavaFX
Rich Enterprise Applications with JavaFX
 
JavaFX - Sketch Board to Production
JavaFX - Sketch Board to ProductionJavaFX - Sketch Board to Production
JavaFX - Sketch Board to Production
 
JavaFX 2 Rich Desktop Platform
JavaFX 2 Rich Desktop PlatformJavaFX 2 Rich Desktop Platform
JavaFX 2 Rich Desktop Platform
 
Building RIA Applications with JavaFX
Building RIA Applications with JavaFXBuilding RIA Applications with JavaFX
Building RIA Applications with JavaFX
 

Similar to Appengine Nljug

540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdf540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdf
hamzadamani7
 
How to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseHow to generate customized java 8 code from your database
How to generate customized java 8 code from your database
Speedment, Inc.
 
Apex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsApex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong Foundations
Salesforce Developers
 
Play framework : A Walkthrough
Play framework : A WalkthroughPlay framework : A Walkthrough
Play framework : A Walkthrough
mitesh_sharma
 
Intro to Application Express
Intro to Application ExpressIntro to Application Express
Intro to Application Express
José Angel Ibarra Espinosa
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
Speedment, Inc.
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
Malin Weiss
 
SPUnite17 Timer Jobs Event Handlers
SPUnite17 Timer Jobs Event HandlersSPUnite17 Timer Jobs Event Handlers
SPUnite17 Timer Jobs Event Handlers
NCCOMMS
 
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan
 
O365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis Jugo
O365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis JugoO365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis Jugo
O365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis Jugo
NCCOMMS
 
The Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicThe Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs Public
David Solivan
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless Architectures
Amazon Web Services
 
ArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudArcReady - Architecting For The Cloud
ArcReady - Architecting For The Cloud
Microsoft ArcReady
 
The "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsThe "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/Ops
Erik Osterman
 
Intro To Spring Python
Intro To Spring PythonIntro To Spring Python
Intro To Spring Python
gturnquist
 
Five Ways Automation Has Increased Application Deployment and Changed Culture
Five Ways Automation Has Increased Application Deployment and Changed CultureFive Ways Automation Has Increased Application Deployment and Changed Culture
Five Ways Automation Has Increased Application Deployment and Changed Culture
XebiaLabs
 
Workflow Management with Espresso Workflow
Workflow Management with Espresso WorkflowWorkflow Management with Espresso Workflow
Workflow Management with Espresso Workflow
Rolf Kremer
 

Similar to Appengine Nljug (20)

540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdf540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdf
 
How to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseHow to generate customized java 8 code from your database
How to generate customized java 8 code from your database
 
Apex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsApex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong Foundations
 
RavenDB overview
RavenDB overviewRavenDB overview
RavenDB overview
 
Play framework : A Walkthrough
Play framework : A WalkthroughPlay framework : A Walkthrough
Play framework : A Walkthrough
 
Intro to Application Express
Intro to Application ExpressIntro to Application Express
Intro to Application Express
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
 
SPUnite17 Timer Jobs Event Handlers
SPUnite17 Timer Jobs Event HandlersSPUnite17 Timer Jobs Event Handlers
SPUnite17 Timer Jobs Event Handlers
 
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2
 
O365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis Jugo
O365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis JugoO365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis Jugo
O365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis Jugo
 
The Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicThe Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs Public
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless Architectures
 
ArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudArcReady - Architecting For The Cloud
ArcReady - Architecting For The Cloud
 
The "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsThe "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/Ops
 
Intro To Spring Python
Intro To Spring PythonIntro To Spring Python
Intro To Spring Python
 
Five Ways Automation Has Increased Application Deployment and Changed Culture
Five Ways Automation Has Increased Application Deployment and Changed CultureFive Ways Automation Has Increased Application Deployment and Changed Culture
Five Ways Automation Has Increased Application Deployment and Changed Culture
 
North east user group tour
North east user group tourNorth east user group tour
North east user group tour
 
Workflow Management with Espresso Workflow
Workflow Management with Espresso WorkflowWorkflow Management with Espresso Workflow
Workflow Management with Espresso Workflow
 
FLossEd-BK Tequila Framework3.2.1
FLossEd-BK Tequila Framework3.2.1FLossEd-BK Tequila Framework3.2.1
FLossEd-BK Tequila Framework3.2.1
 

Recently uploaded

Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
UiPathCommunity
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.
ViralQR
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 

Recently uploaded (20)

Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.Welocme to ViralQR, your best QR code generator.
Welocme to ViralQR, your best QR code generator.
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 

Appengine Nljug

Editor's Notes

  1. -Maak een nieuwe appengine applicatie -Run de applicatie lokaal -Pas het application id aan in de settings -Upload de applicatie -Bekijk in de browser -Doe een aanpassing -Bekijk opnieuw in de browser
  2. Demo 1: DataStoreServlet /datastoredemo Een speaker heeft talks /Speaker(1)/Talk(1) Een speaker en talk kan in dezelfde transactie worden opgeslagen Twee verschillende speakers kunnen niet in dezelfde transactie worden opgeslagen.
  3. Demo 1: DataStoreServlet /datastoredemo Een speaker heeft talks /Speaker(1)/Talk(1) Een speaker en talk kan in dezelfde transactie worden opgeslagen Twee verschillende speakers kunnen niet in dezelfde transactie worden opgeslagen.
  4. Demo 1: DataStoreServlet /datastoredemo Een speaker heeft talks /Speaker(1)/Talk(1) Een speaker en talk kan in dezelfde transactie worden opgeslagen Twee verschillende speakers kunnen niet in dezelfde transactie worden opgeslagen. Een speaker heeft ook collega&amp;#x2019;s. Collega&amp;#x2019;s zijn niet &amp;#x201C;owned&amp;#x201D; en daarom kan alleen de key worden opgeslagen ipv de entity zelf. Kijk naar speaker.addColleague en speaker.getCollegues
  5. web.xml /secure
  6. cron.xml demo.cron.ReportServlet
  7. http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine
  8. Creating and uploading an application