Agenda● Google App Engine● Persistence in Google App Engine● Limits in GAE/J● Quota and Performance● Build-Tools● Getting started
The Google App Engine● A classic PaaS● No control over the OS● A runtime for Web Application● At the start, only Python was supported● Since 2009 Java, now Google Go● Fast growing*● 3B+ Request / Day● 300k+ Apps, 100k+ Developers*) Source: David Chandler, Developer Advocate @ Google, DevNexus Talk
Talking about GAE/J● GAE/J = JRE7● Supports Java 6, but will be dropped!● A Sandbox with some restrictions● Supports out of the box many but not allAPIs● Servlet API 2.4, JSF 2.1, JSP + JSTL, JDO, JPA● Limited support for JPA (no Joins)● Support for Google Services und API‘sThe Google App Engine
● “JRE Whitelist” = supported JRE classes● https://developers.google.com/appengine/docs/java/jrewhitelist● Only ~ 1650 classes● Your application should not● …start „own“ threads– must use a GAE ThreadFactory, limit to 50● …write (and read non resource ) files● …open network socketsWhitelist
● Overview frameworks and languages:● http://code.google.com/p/googleappengine/wiki/WillItPlayInJava● No support for…● JAX-RPC, JDBC, JMS (!), JMX, JNDI...● JAX-WS● Only Consumer, no Provider● Provider via javax.xml.soap & JAXB● + Scala, Groovy (look @ Gealky), JRuby● + Spring (Core)Will it play?
Quotas and Limits● GAE with limits w/o fee● Billing System to overcome limits● Quota exceeded: HTTP 403 Errors or Exceptions(bad if you not aware of quota)● Per minute quota = aprox. 500 Req./min.
Build Tools● Ant supported by Google● Enhancement of entity classes● Deployment● Maven● Maven plug-in● Archetypes● Deployment● Gradle (Community)● https://github.com/bmuschko/gradle-gae-plugin
How getting started● Google App Engine Account activated?● You need your mobile number for activation● Eclipse with the Google Plug-in● Manual installation via Eclipse Market Place●http://marketplace.eclipse.org/content/google-plugin-eclipse● SDK & resources at GAE-Homepage● http://code.google.com/appengine/
Create Application in GAE● Register your application● https://appengine.google.com/ -> “Create Application”● Choose Application Identifier & Name● Choose the Authentication Option● Default is “Open to all Google Account users”● Users can sign using their Google Account● Choose Storage Option● High Replication (default) vs. Master/Slave● High Replication is “eventually consistent” (latency inwrites)