Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

CloudConf2011 Introduction to Google App Engine

894 views

Published on

Diese Präsentation gibt eine Einführung in die Google AppEngine für Java.

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

CloudConf2011 Introduction to Google App Engine

  1. 1. Introduction into Google App EngineHalil-Cem Gürsoyadesso AGTw @hgutwitG+ http://goo.gl/hljRS21.11.11
  2. 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 Scala21.11.11 2 CloudConf 2011 - GAE/J
  3. 3. Agenda► Google App Engine► Persistence in Google App Engine► Limits in GAE/J► Quota and Performance► Build-Tools► Hands-On21.11.11 3 CloudConf 2011 - GAE/J
  4. 4. Agenda► Google App Engine► Persistence in Google App Engine► Limits in GAE/J► Quota and Performance► Build-Tools► Hands-On21.11.11 4 CloudConf 2011 - GAE/J
  5. 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. 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‘s21.11.11 6 CloudConf 2011 - GAE/J
  7. 7. Agenda► Google App Engine► Persistence in Google App Engine► Limits in GAE/J► Quota and Performance► Build-Tools► Hands-On21.11.11 7 CloudConf 2011 - GAE/J
  8. 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. 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. 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 queries21.11.11 10 CloudConf 2011 - GAE/J
  11. 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. 12. Agenda► Google App Engine► Persistence in Google App Engine► Limits in GAE/J► Quota and Performance► Build-Tools► Hands-On21.11.11 12 CloudConf 2011 - GAE/J
  13. 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 sockets21.11.11 13 CloudConf 2011 - GAE/J
  14. 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 supported21.11.11 14 CloudConf 2011 - GAE/J
  15. 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. 16. Why?21.11.11 16 CloudConf 2011 - GAE/J
  17. 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. 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 infrastructure21.11.11 18 CloudConf 2011 - GAE/J
  19. 19. Agenda► Google App Engine► Persistence in Google App Engine► Limits in GAE/J► Quota and Performance► Build-Tools► Hands-On21.11.11 19 CloudConf 2011 - GAE/J
  20. 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. 21. Measured Performance21.11.11 21 CloudConf 2011 - GAE/J
  22. 22. Agenda► Google App Engine► Persistence in Google App Engine► Limits in GAE/J► Quota and Performance► Build-Tools► Hands-On21.11.11 22 CloudConf 2011 - GAE/J
  23. 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. 24. Agenda► Google App Engine► Persistence in Google App Engine► Limits in GAE/J► Quota and Performance► Build-Tools► Hands-On21.11.11 24 CloudConf 2011 - GAE/J
  25. 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. 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. 27. Create new project21.11.11 27 CloudConf 2011 - GAE/J
  28. 28. Hello World21.11.11 28 CloudConf 2011 - GAE/J
  29. 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. 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. 31. Deployment► Choose „Google – Deploy to App Engine“ from context menu► Provide your App Engine data21.11.11 31 CloudConf 2011 - GAE/J
  32. 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. 33. Thank you for your attention!info@adesso.dewww.adesso.de

×