Your SlideShare is downloading. ×
0
Introduction into Google App EngineHalil-Cem Gürsoyadesso AGTw @hgutwitG+ http://goo.gl/hljRS21.11.11
The speaker►   More then 12 years development in Java►   Before getting a “consulting developer“ some years research    (c...
Agenda►   Google App Engine►   Persistence in Google App Engine►   Limits in GAE/J►   Quota and Performance►   Build-Tools...
Agenda►   Google App Engine►   Persistence in Google App Engine►   Limits in GAE/J►   Quota and Performance►   Build-Tools...
The Google App Engine►   A classic PaaS►   No control over the OS►   A runtime for Web Application►   At the start, only P...
Talking about GAE/J►   GAE/J = JRE6    > A Sandbox with restrictions►   Supports out of the box    > Servlet API 2.4 (*)  ...
Agenda►   Google App Engine►   Persistence in Google App Engine►   Limits in GAE/J►   Quota and Performance►   Build-Tools...
Persistence in GEA►   Default Store is a Key-Value NoSQL-DB (Google BigTable)►   JDO and JPA supported… partially    > ORM...
GAE - JPA►   Transactional behavior is configured in the persistence.xml<persistence-unit name="transactions-optional">   ...
More on JPA►   @ManyToMany is not supported►   Join-Queries are not supported►   You can not use    > InheritanceType.SING...
More to know about limits in JPA►   Resultsets are not initialized, you have to do it!    > resultSet.size();►   Id Fields...
Agenda►   Google App Engine►   Persistence in Google App Engine►   Limits in GAE/J►   Quota and Performance►   Build-Tools...
Other Limits in GAE►   The “JRE Whitelist” defines all supported JRE classes    > http://code.google.com/intl/de-DE/appeng...
Will it play?►   Overview about the support for frameworks and JVM languages:    > http://code.google.com/p/googleappengin...
Spring support►   Not all Spring Projects are supported - core is►   Running: Spring MVC with Spring beans►   Setup: JAR f...
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.g...
More Reasons…►   No one enforces you to use JPA or JDO on GAE!    > Use the native Interface    > You have a free, full di...
Agenda►   Google App Engine►   Persistence in Google App Engine►   Limits in GAE/J►   Quota and Performance►   Build-Tools...
Quota►   GAE with limits w/o fee►   New Billing System to overcome limits►   Quota exceeded: HTTP 403 Errors or Exceptions...
Measured Performance21.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...
Build-Tools►   Ant is supported    > Enhancement of entity classes    > Deployment►   Maven    > Maven2 plug-in available ...
Agenda►   Google App Engine►   Persistence in Google App Engine►   Limits in GAE/J►   Quota and Performance►   Build-Tools...
Hands on?►   Some slides to tell you that is needed►   Ask me afterwards for a live demo►   Get ready...21.11.11   25   Cl...
Getting started►   Google App Engine Account activated?    > You need your mobile number for activation►   Eclipse with th...
Create new project21.11.11   27   CloudConf 2011 - GAE/J
Hello World21.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_nam...
Create your cloud app►   Register your application in your GAE account►   https://appengine.google.com/ -> “Create Applica...
Deployment►   Choose „Google – Deploy to App Engine“ from context menu►   Provide your App Engine data21.11.11   31   Clou...
Calling now on the cloud►   Call your Application now on the cloud!►   [appid].appspot.com/[servletname] (Servletname = Pr...
Thank you for your attention!info@adesso.dewww.adesso.de
Upcoming SlideShare
Loading in...5
×

CloudConf2011 Introduction to Google App Engine

613

Published on

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

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
613
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×