SlideShare uma empresa Scribd logo
1 de 105
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

Mais conteúdo relacionado

Mais procurados

Wicket Introduction
Wicket IntroductionWicket Introduction
Wicket IntroductionEyal 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 ScalabilityPaul Withers
 
Linguistic Abstraction for the Web
Linguistic Abstraction for the WebLinguistic Abstraction for the Web
Linguistic Abstraction for the WebEelco 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 6Bert Ertman
 
Java EE 8 Recipes
Java EE 8 RecipesJava EE 8 Recipes
Java EE 8 RecipesJosh Juneau
 
Getting Started with jQuery
Getting Started with jQueryGetting Started with jQuery
Getting Started with jQueryAkshay Mathur
 
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 JSONSyed 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 webIvano Malavolta
 
Domain Driven Design using Laravel
Domain Driven Design using LaravelDomain Driven Design using Laravel
Domain Driven Design using Laravelwajrcs
 
Utilizing JSF Front Ends with Microservices
Utilizing JSF Front Ends with MicroservicesUtilizing JSF Front Ends with Microservices
Utilizing JSF Front Ends with MicroservicesJosh Juneau
 
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 Serverhannonhill
 
Modern development paradigms
Modern development paradigmsModern development paradigms
Modern development paradigmsIvano Malavolta
 
7 Tips For Better JDeveloper Experience
7 Tips For Better JDeveloper Experience7 Tips For Better JDeveloper Experience
7 Tips For Better JDeveloper Experienceshay.shmeltzer
 
Carlos Amador .Net Portfolio
Carlos Amador .Net PortfolioCarlos Amador .Net Portfolio
Carlos Amador .Net PortfolioCMA_SlideShare
 

Mais procurados (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
 

Destaque

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 & JavaFXPaul Bakker
 
Rich Enterprise Applications with JavaFX
Rich Enterprise Applications with JavaFXRich Enterprise Applications with JavaFX
Rich Enterprise Applications with JavaFXMax Katz
 
JavaFX - Sketch Board to Production
JavaFX - Sketch Board to ProductionJavaFX - Sketch Board to Production
JavaFX - Sketch Board to ProductionYoav Aharoni
 
JavaFX 2 Rich Desktop Platform
JavaFX 2 Rich Desktop PlatformJavaFX 2 Rich Desktop Platform
JavaFX 2 Rich Desktop PlatformRajmahendra Hegde
 
Building RIA Applications with JavaFX
Building RIA Applications with JavaFXBuilding RIA Applications with JavaFX
Building RIA Applications with JavaFXMax Katz
 

Destaque (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
 

Semelhante a Appengine Nljug

540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdf540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdfhamzadamani7
 
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 databaseSpeedment, Inc.
 
Apex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsApex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsSalesforce Developers
 
Play framework : A Walkthrough
Play framework : A WalkthroughPlay framework : A Walkthrough
Play framework : A Walkthroughmitesh_sharma
 
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
 
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.
 
SPUnite17 Timer Jobs Event Handlers
SPUnite17 Timer Jobs Event HandlersSPUnite17 Timer Jobs Event Handlers
SPUnite17 Timer Jobs Event HandlersNCCOMMS
 
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 JugoNCCOMMS
 
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 PublicDavid Solivan
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesAmazon Web Services
 
ArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudMicrosoft ArcReady
 
The "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsThe "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsErik Osterman
 
Intro To Spring Python
Intro To Spring PythonIntro To Spring Python
Intro To Spring Pythongturnquist
 
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 CultureXebiaLabs
 
Workflow Management with Espresso Workflow
Workflow Management with Espresso WorkflowWorkflow Management with Espresso Workflow
Workflow Management with Espresso WorkflowRolf Kremer
 

Semelhante a 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
 
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...
 
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...
 
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
 

Último

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
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...Drew Madelung
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 

Último (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
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...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 

Appengine Nljug

Notas do Editor

  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