SlideShare a Scribd company logo
Introduction into Google App Engine

Halil-Cem Gürsoy
adesso AG


Tw @hgutwit
G+ http://goo.gl/hljRS




21.11.11
The speaker


►   More then 12 years development in Java

►   Before getting a “consulting developer“ some years research
    (calculation of RNA folding with genetic algorithms using Pascal)

►   Senior Software Engineer at adesso AG, Dortmund

►   Speaker on some conferences: (W)-JAX, DOAG, HerbstCampus etc.

►   Mostly EAI/SOA projects... with plain good old Java / JEE

►   … and a bit Scala




21.11.11   2   CloudConf 2011 - GAE/J
Agenda


►   Google App Engine

►   Persistence in Google App Engine

►   Limits in GAE/J

►   Quota and Performance

►   Build-Tools

►   Hands-On




21.11.11   3   CloudConf 2011 - GAE/J
Agenda


►   Google App Engine

►   Persistence in Google App Engine

►   Limits in GAE/J

►   Quota and Performance

►   Build-Tools

►   Hands-On




21.11.11   4   CloudConf 2011 - GAE/J
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
    > Java-Support is limited!




21.11.11   5   CloudConf 2011 - GAE/J
Talking about GAE/J


►   GAE/J = JRE6
    > A Sandbox with restrictions

►   Supports out of the box
    > Servlet API 2.4 (*)

    > JSF 1.1, 2.0 (*)

    > JSP (*)

    > JDO 2.3 (?!)

    > JPA 1(*)

►   Support for Google Services und API‘s


21.11.11   6    CloudConf 2011 - GAE/J
Agenda


►   Google App Engine

►   Persistence in Google App Engine

►   Limits in GAE/J

►   Quota and Performance

►   Build-Tools

►   Hands-On




21.11.11   7   CloudConf 2011 - GAE/J
Persistence in GEA


►   Default Store is a Key-Value NoSQL-DB (Google BigTable)

►   JDO and JPA supported… partially
    > ORM via DataNucleus v1.1

►   JDO is still better documented than JPA in the GAE/J documentation

►   You can use the low level API for Google BigTable

►   You can use in-memory Databases

►   Enhancement of Entity Classes needed (good to know for Build)

►   MySQL-Support is upcoming (now in Beta, chosen accounts)



21.11.11   8   CloudConf 2011 - GAE/J
GAE - JPA

►   Transactional behavior is configured in the persistence.xml

<persistence-unit name="transactions-optional">
    <provider>org.datanucleus.store.appegine.jpa.DatastorePersistenceProvider
    </provider>
    <properties>
           <property name="datanucleus.NontransactionalRead” value="true" />
           <property name="datanucleus.NontransactionalWrite” value="true" />
           <property name="datanucleus.ConnectionURL” value="appengine" />
    </properties>
</persistence-unit>




21.11.11    9    CloudConf 2011 - GAE/J
More on JPA


►   @ManyToMany is not supported

►   Join-Queries are not supported

►   You can not use
    > InheritanceType.SINGLE_TABLE

    > InheritanceType.JOINED

►   No support for aggregation queries
    > group by, having, sum, avg, min, max

►   No support for polymorphic queries




21.11.11   10   CloudConf 2011 - GAE/J
More to know about limits in JPA

►   Resultsets are not initialized, you have to do it!
    > resultSet.size();
►   Id Fields: don’t use long type
    > Unsupported primary key type: long
►   GenerationType.TABLE results in an error
    > javax.persistence.PersistenceEception: Transaction is still
           active.
►   Solution
    @Id
    GeneratedValue(strategy = GenerationType.IDENTITY)
    private com.google.appengine.api.datastore.Key key;




21.11.11      11   CloudConf 2011 - GAE/J
Agenda


►   Google App Engine

►   Persistence in Google App Engine

►   Limits in GAE/J

►   Quota and Performance

►   Build-Tools

►   Hands-On




21.11.11   12   CloudConf 2011 - GAE/J
Other Limits in GAE


►   The “JRE Whitelist” defines all supported JRE classes
    > http://code.google.com/intl/de-DE/appengine/docs/java/jrewhitelist.html

    > Only ~ 1500 classes

►   Your application should not
    > …start own threads (due to that, no Akka-Support if you use Scala)

    > …write files

    > …open network sockets




21.11.11   13   CloudConf 2011 - GAE/J
Will it play?


►   Overview about the support for frameworks and JVM languages:
    > http://code.google.com/p/googleappengine/wiki/WillItPlayInJava

►   No support for…
    > JAX-RPC
    > JDBC
    > JMS (!)
    > JNDI
    > …and much more!

►   A little bit support for JAX-WS, good support for REST

►   Scala, Groovy (look @ Gealky) etc. supported

►   Spring Core is supported

21.11.11   14   CloudConf 2011 - GAE/J
Spring support

►   Not all Spring Projects are supported - core is
►   Running: Spring MVC with Spring beans
►   Setup: JAR files into /WAR/WEB-INF/lib and add to Classpath
►   Example:
 <listener>
        <listener-class>
           org.springframework.web.context.ContextLoaderListener
       </listener-class>
 </listener>
 <servlet>
    <servlet-name>dispatcher</servlet-name>
        <servlet-class>
       org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
     <servlet-name>dispatcher</servlet-name>
     <url-pattern>/springgae/*</url-pattern>
 </servlet-mapping>



21.11.11   15   CloudConf 2011 - GAE/J
Why?




21.11.11   16   CloudConf 2011 - GAE/J
GAE and Android


►   Tight integration of GAE and Android via Android Cloud to Device
    Framework (C2DM)
    > http://code.google.com/android/c2dm/

►   C2DM enables Android Apps to use all GAE as the backend

►   ...e.g. use the GAE Data Store

►   ...e.g. send Mails from GAE

►   Example: Chrome to Phone-Extension and App
    > http://code.google.com/p/chrometophone/




21.11.11   17   CloudConf 2011 - GAE/J
More Reasons…


►   No one enforces you to use JPA or JDO on GAE!
    > Use the native Interface

    > You have a free, full distributed, NoSQL Key-Value DB!

►   Transparent scaling of your app
    > You have not to care about how many instances you have to start and

           then to start

    > GAE is not Beanstalk / CloudFoundry

    > In Beanstalk / CloudFoundry you have still to take care about LB and

           your infrastructure


21.11.11      18   CloudConf 2011 - GAE/J
Agenda


►   Google App Engine

►   Persistence in Google App Engine

►   Limits in GAE/J

►   Quota and Performance

►   Build-Tools

►   Hands-On




21.11.11   19   CloudConf 2011 - GAE/J
Quota

►   GAE with limits w/o fee
►   New 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.




21.11.11   20   CloudConf 2011 - GAE/J
Measured Performance




21.11.11   21   CloudConf 2011 - GAE/J
Agenda


►   Google App Engine

►   Persistence in Google App Engine

►   Limits in GAE/J

►   Quota and Performance

►   Build-Tools

►   Hands-On




21.11.11   22   CloudConf 2011 - GAE/J
Build-Tools


►   Ant is supported
    > Enhancement of entity classes

    > Deployment

►   Maven
    > Maven2 plug-in available (http://code.google.com/p/maven-gae-plugin/ )

    > Archetypes for JSP, GWT and Wicket-Projects

    > GAE SDK not available via Maven repositories anymore (?)




21.11.11   23   CloudConf 2011 - GAE/J
Agenda


►   Google App Engine

►   Persistence in Google App Engine

►   Limits in GAE/J

►   Quota and Performance

►   Build-Tools

►   Hands-On




21.11.11   24   CloudConf 2011 - GAE/J
Hands on?


►   Some slides to tell you that is needed

►   Ask me afterwards for a live demo

►   Get ready...




21.11.11   25   CloudConf 2011 - GAE/J
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 with CLI and more resources at GAE-Homepage

       – http://code.google.com/appengine/




21.11.11   26   CloudConf 2011 - GAE/J
Create new project




21.11.11   27   CloudConf 2011 - GAE/J
Hello World




21.11.11   28   CloudConf 2011 - GAE/J
Test in the local sandbox

►   You can test your application in the local sandbox
►   http://localhost:8888/[your_project_name]




21.11.11   29   CloudConf 2011 - GAE/J
Create your cloud app


►   Register your application in your GAE account

►   https://appengine.google.com/ -> “Create Application”

►   Choose an Application Identifier and an Application Name (note them!)

►   Choose the Authentication Option
    > Default is “Open to all Google Account users”
    > User can sign in into your app using their Google Account

►   Choose Storage Option
    > High Replication (default) vs. Master/Slave
    > High Replication is “eventualy consistent” (latency in writes)




21.11.11   30   CloudConf 2011 - GAE/J
Deployment

►   Choose „Google – Deploy to App Engine“ from context menu
►   Provide your App Engine data




21.11.11   31   CloudConf 2011 - GAE/J
Calling now on the cloud


►   Call your Application now on the cloud!

►   [appid].appspot.com/[servletname] (Servletname = Projectname by
    default)

►   The servlet should greet you…

►   Check your Application-Dashboard

       – https://appengine.google.com/




21.11.11   32   CloudConf 2011 - GAE/J
Thank you for your attention!




info@adesso.de
www.adesso.de

More Related Content

What's hot (12)

GWT training session 1
GWT training session 1GWT training session 1
GWT training session 1
SNEHAL MASNE
 
Project Fuji/OpenESB Aquarium Paris
Project Fuji/OpenESB Aquarium ParisProject Fuji/OpenESB Aquarium Paris
Project Fuji/OpenESB Aquarium Paris
Alexis Moussine-Pouchkine
 
Magento 2 Development
Magento 2 DevelopmentMagento 2 Development
Magento 2 Development
Duke Dao
 
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
CodelyTV
 
Microservices: Improving the autonomy of our teams with Event-Driven Architec...
Microservices: Improving the autonomy of our teams with Event-Driven Architec...Microservices: Improving the autonomy of our teams with Event-Driven Architec...
Microservices: Improving the autonomy of our teams with Event-Driven Architec...
CodelyTV
 
Workshop: Building Vaadin add-ons
Workshop: Building Vaadin add-onsWorkshop: Building Vaadin add-ons
Workshop: Building Vaadin add-ons
Sami Ekblad
 
Hackathon - Building vaadin add on components
Hackathon - Building vaadin add on componentsHackathon - Building vaadin add on components
Hackathon - Building vaadin add on components
Joonas Lehtinen
 
The journey of mastering Magento 2 for Magento 1 developers
The journey of mastering Magento 2 for Magento 1 developersThe journey of mastering Magento 2 for Magento 1 developers
The journey of mastering Magento 2 for Magento 1 developers
Gabriel Guarino
 
Maven plugins, properties en profiles: Advanced concepts in Maven
Maven plugins, properties en profiles: Advanced concepts in MavenMaven plugins, properties en profiles: Advanced concepts in Maven
Maven plugins, properties en profiles: Advanced concepts in Maven
Geert Pante
 
Highlights from Java 10, 11 and 12 and Future of Java at Javaland 2019 By Vad...
Highlights from Java 10, 11 and 12 and Future of Java at Javaland 2019 By Vad...Highlights from Java 10, 11 and 12 and Future of Java at Javaland 2019 By Vad...
Highlights from Java 10, 11 and 12 and Future of Java at Javaland 2019 By Vad...
Vadym Kazulkin
 
JWebPane presentation at JavaOne 2009
JWebPane presentation at JavaOne 2009JWebPane presentation at JavaOne 2009
JWebPane presentation at JavaOne 2009
Alexey Ushakov
 
Maven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension toolMaven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension tool
elliando dias
 
GWT training session 1
GWT training session 1GWT training session 1
GWT training session 1
SNEHAL MASNE
 
Magento 2 Development
Magento 2 DevelopmentMagento 2 Development
Magento 2 Development
Duke Dao
 
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
Avoiding the domino effect in our [micro]services (SOLID at macro-design level)
CodelyTV
 
Microservices: Improving the autonomy of our teams with Event-Driven Architec...
Microservices: Improving the autonomy of our teams with Event-Driven Architec...Microservices: Improving the autonomy of our teams with Event-Driven Architec...
Microservices: Improving the autonomy of our teams with Event-Driven Architec...
CodelyTV
 
Workshop: Building Vaadin add-ons
Workshop: Building Vaadin add-onsWorkshop: Building Vaadin add-ons
Workshop: Building Vaadin add-ons
Sami Ekblad
 
Hackathon - Building vaadin add on components
Hackathon - Building vaadin add on componentsHackathon - Building vaadin add on components
Hackathon - Building vaadin add on components
Joonas Lehtinen
 
The journey of mastering Magento 2 for Magento 1 developers
The journey of mastering Magento 2 for Magento 1 developersThe journey of mastering Magento 2 for Magento 1 developers
The journey of mastering Magento 2 for Magento 1 developers
Gabriel Guarino
 
Maven plugins, properties en profiles: Advanced concepts in Maven
Maven plugins, properties en profiles: Advanced concepts in MavenMaven plugins, properties en profiles: Advanced concepts in Maven
Maven plugins, properties en profiles: Advanced concepts in Maven
Geert Pante
 
Highlights from Java 10, 11 and 12 and Future of Java at Javaland 2019 By Vad...
Highlights from Java 10, 11 and 12 and Future of Java at Javaland 2019 By Vad...Highlights from Java 10, 11 and 12 and Future of Java at Javaland 2019 By Vad...
Highlights from Java 10, 11 and 12 and Future of Java at Javaland 2019 By Vad...
Vadym Kazulkin
 
JWebPane presentation at JavaOne 2009
JWebPane presentation at JavaOne 2009JWebPane presentation at JavaOne 2009
JWebPane presentation at JavaOne 2009
Alexey Ushakov
 
Maven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension toolMaven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension tool
elliando dias
 

Viewers also liked (7)

Innovation matters and so does how you measure it
Innovation matters and so does how you measure itInnovation matters and so does how you measure it
Innovation matters and so does how you measure it
West Midlands Regional Observatory
 
A Business-Critical SharePoint Solution From adesso AG
A Business-CriticalSharePoint SolutionFrom adesso AGA Business-CriticalSharePoint SolutionFrom adesso AG
A Business-Critical SharePoint Solution From adesso AG
adesso AG
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
adesso AG
 
Diabetes mellitus
Diabetes mellitusDiabetes mellitus
Diabetes mellitus
Add-x Abdullahi
 
Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5
adesso AG
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
adesso AG
 
Scala 4 Enterprise
Scala 4 EnterpriseScala 4 Enterprise
Scala 4 Enterprise
adesso AG
 
A Business-Critical SharePoint Solution From adesso AG
A Business-CriticalSharePoint SolutionFrom adesso AGA Business-CriticalSharePoint SolutionFrom adesso AG
A Business-Critical SharePoint Solution From adesso AG
adesso AG
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
adesso AG
 
Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5
adesso AG
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
adesso AG
 
Scala 4 Enterprise
Scala 4 EnterpriseScala 4 Enterprise
Scala 4 Enterprise
adesso AG
 

Similar to CloudConf2011 Introduction to Google App Engine (20)

Spring Native and Spring AOT
Spring Native and Spring AOTSpring Native and Spring AOT
Spring Native and Spring AOT
VMware Tanzu
 
Flutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textFlutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - text
Toma Velev
 
Getting Started: Google Glass Apps with GDK
Getting Started: Google Glass Apps with GDKGetting Started: Google Glass Apps with GDK
Getting Started: Google Glass Apps with GDK
Zi Yong Chua
 
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
Igalia
 
Ilog Ria2
Ilog Ria2Ilog Ria2
Ilog Ria2
rajivmordani
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
vstorm83
 
How to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environmentHow to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environment
Michelantonio Trizio
 
Slim3 quick start
Slim3 quick startSlim3 quick start
Slim3 quick start
Guangyao Cao
 
Andy Bosch - JavaServer Faces in the cloud
Andy Bosch -  JavaServer Faces in the cloudAndy Bosch -  JavaServer Faces in the cloud
Andy Bosch - JavaServer Faces in the cloud
Andy Bosch
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
Software Park Thailand
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
Fred Sauer
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
Jesse Gallagher
 
Grails beginners workshop
Grails beginners workshopGrails beginners workshop
Grails beginners workshop
JacobAae
 
GWT Training - Session 1/3
GWT Training - Session 1/3GWT Training - Session 1/3
GWT Training - Session 1/3
Faiz Bashir
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
IMC Institute
 
Gain more freedom when migrating from Camunda 7 to 8.pdf
Gain more freedom when migrating from Camunda 7 to 8.pdfGain more freedom when migrating from Camunda 7 to 8.pdf
Gain more freedom when migrating from Camunda 7 to 8.pdf
Phactum Softwareentwicklung GmbH
 
Continuous Web Performance Monitoring with Jenkins
Continuous Web Performance Monitoring with JenkinsContinuous Web Performance Monitoring with Jenkins
Continuous Web Performance Monitoring with Jenkins
Michael Kröll
 
Gradle como alternativa a maven
Gradle como alternativa a mavenGradle como alternativa a maven
Gradle como alternativa a maven
David Gómez García
 
Google Cloud Platform
Google Cloud Platform Google Cloud Platform
Google Cloud Platform
Francesco Marchitelli
 
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlantaPlugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Alexandre Gouaillard
 
Spring Native and Spring AOT
Spring Native and Spring AOTSpring Native and Spring AOT
Spring Native and Spring AOT
VMware Tanzu
 
Flutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textFlutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - text
Toma Velev
 
Getting Started: Google Glass Apps with GDK
Getting Started: Google Glass Apps with GDKGetting Started: Google Glass Apps with GDK
Getting Started: Google Glass Apps with GDK
Zi Yong Chua
 
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
Igalia
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
vstorm83
 
How to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environmentHow to deploy a Java application on Google App engine Flexible environment
How to deploy a Java application on Google App engine Flexible environment
Michelantonio Trizio
 
Andy Bosch - JavaServer Faces in the cloud
Andy Bosch -  JavaServer Faces in the cloudAndy Bosch -  JavaServer Faces in the cloud
Andy Bosch - JavaServer Faces in the cloud
Andy Bosch
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
Fred Sauer
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
Jesse Gallagher
 
Grails beginners workshop
Grails beginners workshopGrails beginners workshop
Grails beginners workshop
JacobAae
 
GWT Training - Session 1/3
GWT Training - Session 1/3GWT Training - Session 1/3
GWT Training - Session 1/3
Faiz Bashir
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
IMC Institute
 
Continuous Web Performance Monitoring with Jenkins
Continuous Web Performance Monitoring with JenkinsContinuous Web Performance Monitoring with Jenkins
Continuous Web Performance Monitoring with Jenkins
Michael Kröll
 
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlantaPlugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Alexandre Gouaillard
 

More from adesso AG (20)

SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
adesso AG
 
Mythos High Performance Teams
Mythos High Performance TeamsMythos High Performance Teams
Mythos High Performance Teams
adesso AG
 
Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!
adesso AG
 
Continuous Delivery praktisch
Continuous Delivery praktischContinuous Delivery praktisch
Continuous Delivery praktisch
adesso AG
 
Agilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous DeliveryAgilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous Delivery
adesso AG
 
Getriebene Anwendungslandschaften
Getriebene AnwendungslandschaftenGetriebene Anwendungslandschaften
Getriebene Anwendungslandschaften
adesso AG
 
Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013
adesso AG
 
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
adesso AG
 
OOP 2013 NoSQL Suche
OOP 2013 NoSQL SucheOOP 2013 NoSQL Suche
OOP 2013 NoSQL Suche
adesso AG
 
NoSQL in der Cloud - Why?
NoSQL in der Cloud -  Why?NoSQL in der Cloud -  Why?
NoSQL in der Cloud - Why?
adesso AG
 
Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.
adesso AG
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
adesso AG
 
Zehn Hinweise für Architekten
Zehn Hinweise für ArchitektenZehn Hinweise für Architekten
Zehn Hinweise für Architekten
adesso AG
 
Agile Praktiken
Agile PraktikenAgile Praktiken
Agile Praktiken
adesso AG
 
Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS
adesso AG
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
adesso AG
 
HTML5 Storage
HTML5 StorageHTML5 Storage
HTML5 Storage
adesso AG
 
Google Dart
Google DartGoogle Dart
Google Dart
adesso AG
 
Java in the Cloud : PaaS Platforms in Comparison
Java in the Cloud : PaaS Platforms in ComparisonJava in the Cloud : PaaS Platforms in Comparison
Java in the Cloud : PaaS Platforms in Comparison
adesso AG
 
Bedarfsorientiertes Qualitätsmanagement im Projektalltag
Bedarfsorientiertes Qualitätsmanagement im ProjektalltagBedarfsorientiertes Qualitätsmanagement im Projektalltag
Bedarfsorientiertes Qualitätsmanagement im Projektalltag
adesso AG
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
adesso AG
 
Mythos High Performance Teams
Mythos High Performance TeamsMythos High Performance Teams
Mythos High Performance Teams
adesso AG
 
Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!
adesso AG
 
Continuous Delivery praktisch
Continuous Delivery praktischContinuous Delivery praktisch
Continuous Delivery praktisch
adesso AG
 
Agilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous DeliveryAgilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous Delivery
adesso AG
 
Getriebene Anwendungslandschaften
Getriebene AnwendungslandschaftenGetriebene Anwendungslandschaften
Getriebene Anwendungslandschaften
adesso AG
 
Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013
adesso AG
 
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
adesso AG
 
OOP 2013 NoSQL Suche
OOP 2013 NoSQL SucheOOP 2013 NoSQL Suche
OOP 2013 NoSQL Suche
adesso AG
 
NoSQL in der Cloud - Why?
NoSQL in der Cloud -  Why?NoSQL in der Cloud -  Why?
NoSQL in der Cloud - Why?
adesso AG
 
Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.
adesso AG
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
adesso AG
 
Zehn Hinweise für Architekten
Zehn Hinweise für ArchitektenZehn Hinweise für Architekten
Zehn Hinweise für Architekten
adesso AG
 
Agile Praktiken
Agile PraktikenAgile Praktiken
Agile Praktiken
adesso AG
 
Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS
adesso AG
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
adesso AG
 
HTML5 Storage
HTML5 StorageHTML5 Storage
HTML5 Storage
adesso AG
 
Java in the Cloud : PaaS Platforms in Comparison
Java in the Cloud : PaaS Platforms in ComparisonJava in the Cloud : PaaS Platforms in Comparison
Java in the Cloud : PaaS Platforms in Comparison
adesso AG
 
Bedarfsorientiertes Qualitätsmanagement im Projektalltag
Bedarfsorientiertes Qualitätsmanagement im ProjektalltagBedarfsorientiertes Qualitätsmanagement im Projektalltag
Bedarfsorientiertes Qualitätsmanagement im Projektalltag
adesso AG
 

Recently uploaded (20)

What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 

CloudConf2011 Introduction to Google App Engine

  • 1. Introduction into Google App Engine Halil-Cem Gürsoy adesso AG Tw @hgutwit G+ http://goo.gl/hljRS 21.11.11
  • 2. The speaker ► More then 12 years development in Java ► Before getting a “consulting developer“ some years research (calculation of RNA folding with genetic algorithms using Pascal) ► Senior Software Engineer at adesso AG, Dortmund ► Speaker on some conferences: (W)-JAX, DOAG, HerbstCampus etc. ► Mostly EAI/SOA projects... with plain good old Java / JEE ► … and a bit Scala 21.11.11 2 CloudConf 2011 - GAE/J
  • 3. Agenda ► Google App Engine ► Persistence in Google App Engine ► Limits in GAE/J ► Quota and Performance ► Build-Tools ► Hands-On 21.11.11 3 CloudConf 2011 - GAE/J
  • 4. Agenda ► Google App Engine ► Persistence in Google App Engine ► Limits in GAE/J ► Quota and Performance ► Build-Tools ► Hands-On 21.11.11 4 CloudConf 2011 - GAE/J
  • 5. 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 > Java-Support is limited! 21.11.11 5 CloudConf 2011 - GAE/J
  • 6. Talking about GAE/J ► GAE/J = JRE6 > A Sandbox with restrictions ► Supports out of the box > Servlet API 2.4 (*) > JSF 1.1, 2.0 (*) > JSP (*) > JDO 2.3 (?!) > JPA 1(*) ► Support for Google Services und API‘s 21.11.11 6 CloudConf 2011 - GAE/J
  • 7. Agenda ► Google App Engine ► Persistence in Google App Engine ► Limits in GAE/J ► Quota and Performance ► Build-Tools ► Hands-On 21.11.11 7 CloudConf 2011 - GAE/J
  • 8. Persistence in GEA ► Default Store is a Key-Value NoSQL-DB (Google BigTable) ► JDO and JPA supported… partially > ORM via DataNucleus v1.1 ► JDO is still better documented than JPA in the GAE/J documentation ► You can use the low level API for Google BigTable ► You can use in-memory Databases ► Enhancement of Entity Classes needed (good to know for Build) ► MySQL-Support is upcoming (now in Beta, chosen accounts) 21.11.11 8 CloudConf 2011 - GAE/J
  • 9. GAE - JPA ► Transactional behavior is configured in the persistence.xml <persistence-unit name="transactions-optional"> <provider>org.datanucleus.store.appegine.jpa.DatastorePersistenceProvider </provider> <properties> <property name="datanucleus.NontransactionalRead” value="true" /> <property name="datanucleus.NontransactionalWrite” value="true" /> <property name="datanucleus.ConnectionURL” value="appengine" /> </properties> </persistence-unit> 21.11.11 9 CloudConf 2011 - GAE/J
  • 10. More on JPA ► @ManyToMany is not supported ► Join-Queries are not supported ► You can not use > InheritanceType.SINGLE_TABLE > InheritanceType.JOINED ► No support for aggregation queries > group by, having, sum, avg, min, max ► No support for polymorphic queries 21.11.11 10 CloudConf 2011 - GAE/J
  • 11. More to know about limits in JPA ► Resultsets are not initialized, you have to do it! > resultSet.size(); ► Id Fields: don’t use long type > Unsupported primary key type: long ► GenerationType.TABLE results in an error > javax.persistence.PersistenceEception: Transaction is still active. ► Solution @Id GeneratedValue(strategy = GenerationType.IDENTITY) private com.google.appengine.api.datastore.Key key; 21.11.11 11 CloudConf 2011 - GAE/J
  • 12. Agenda ► Google App Engine ► Persistence in Google App Engine ► Limits in GAE/J ► Quota and Performance ► Build-Tools ► Hands-On 21.11.11 12 CloudConf 2011 - GAE/J
  • 13. Other Limits in GAE ► The “JRE Whitelist” defines all supported JRE classes > http://code.google.com/intl/de-DE/appengine/docs/java/jrewhitelist.html > Only ~ 1500 classes ► Your application should not > …start own threads (due to that, no Akka-Support if you use Scala) > …write files > …open network sockets 21.11.11 13 CloudConf 2011 - GAE/J
  • 14. Will it play? ► Overview about the support for frameworks and JVM languages: > http://code.google.com/p/googleappengine/wiki/WillItPlayInJava ► No support for… > JAX-RPC > JDBC > JMS (!) > JNDI > …and much more! ► A little bit support for JAX-WS, good support for REST ► Scala, Groovy (look @ Gealky) etc. supported ► Spring Core is supported 21.11.11 14 CloudConf 2011 - GAE/J
  • 15. Spring support ► Not all Spring Projects are supported - core is ► Running: Spring MVC with Spring beans ► Setup: JAR files into /WAR/WEB-INF/lib and add to Classpath ► Example: <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/springgae/*</url-pattern> </servlet-mapping> 21.11.11 15 CloudConf 2011 - GAE/J
  • 16. Why? 21.11.11 16 CloudConf 2011 - GAE/J
  • 17. GAE and Android ► Tight integration of GAE and Android via Android Cloud to Device Framework (C2DM) > http://code.google.com/android/c2dm/ ► C2DM enables Android Apps to use all GAE as the backend ► ...e.g. use the GAE Data Store ► ...e.g. send Mails from GAE ► Example: Chrome to Phone-Extension and App > http://code.google.com/p/chrometophone/ 21.11.11 17 CloudConf 2011 - GAE/J
  • 18. More Reasons… ► No one enforces you to use JPA or JDO on GAE! > Use the native Interface > You have a free, full distributed, NoSQL Key-Value DB! ► Transparent scaling of your app > You have not to care about how many instances you have to start and then to start > GAE is not Beanstalk / CloudFoundry > In Beanstalk / CloudFoundry you have still to take care about LB and your infrastructure 21.11.11 18 CloudConf 2011 - GAE/J
  • 19. Agenda ► Google App Engine ► Persistence in Google App Engine ► Limits in GAE/J ► Quota and Performance ► Build-Tools ► Hands-On 21.11.11 19 CloudConf 2011 - GAE/J
  • 20. Quota ► GAE with limits w/o fee ► New 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. 21.11.11 20 CloudConf 2011 - GAE/J
  • 21. Measured Performance 21.11.11 21 CloudConf 2011 - GAE/J
  • 22. Agenda ► Google App Engine ► Persistence in Google App Engine ► Limits in GAE/J ► Quota and Performance ► Build-Tools ► Hands-On 21.11.11 22 CloudConf 2011 - GAE/J
  • 23. Build-Tools ► Ant is supported > Enhancement of entity classes > Deployment ► Maven > Maven2 plug-in available (http://code.google.com/p/maven-gae-plugin/ ) > Archetypes for JSP, GWT and Wicket-Projects > GAE SDK not available via Maven repositories anymore (?) 21.11.11 23 CloudConf 2011 - GAE/J
  • 24. Agenda ► Google App Engine ► Persistence in Google App Engine ► Limits in GAE/J ► Quota and Performance ► Build-Tools ► Hands-On 21.11.11 24 CloudConf 2011 - GAE/J
  • 25. Hands on? ► Some slides to tell you that is needed ► Ask me afterwards for a live demo ► Get ready... 21.11.11 25 CloudConf 2011 - GAE/J
  • 26. 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 with CLI and more resources at GAE-Homepage – http://code.google.com/appengine/ 21.11.11 26 CloudConf 2011 - GAE/J
  • 27. Create new project 21.11.11 27 CloudConf 2011 - GAE/J
  • 28. Hello World 21.11.11 28 CloudConf 2011 - GAE/J
  • 29. Test in the local sandbox ► You can test your application in the local sandbox ► http://localhost:8888/[your_project_name] 21.11.11 29 CloudConf 2011 - GAE/J
  • 30. Create your cloud app ► Register your application in your GAE account ► https://appengine.google.com/ -> “Create Application” ► Choose an Application Identifier and an Application Name (note them!) ► Choose the Authentication Option > Default is “Open to all Google Account users” > User can sign in into your app using their Google Account ► Choose Storage Option > High Replication (default) vs. Master/Slave > High Replication is “eventualy consistent” (latency in writes) 21.11.11 30 CloudConf 2011 - GAE/J
  • 31. Deployment ► Choose „Google – Deploy to App Engine“ from context menu ► Provide your App Engine data 21.11.11 31 CloudConf 2011 - GAE/J
  • 32. Calling now on the cloud ► Call your Application now on the cloud! ► [appid].appspot.com/[servletname] (Servletname = Projectname by default) ► The servlet should greet you… ► Check your Application-Dashboard – https://appengine.google.com/ 21.11.11 32 CloudConf 2011 - GAE/J
  • 33. Thank you for your attention! [email protected] www.adesso.de