2. ABOUT ME
Alexander Zamkovyi
Java Developer @ Intro Pro
Linked[in]: ua.linkedin.com/in/invaa/
e-mail: alex@zamkovyi.name
3. GOOGLE APP ENGINE
Part of Google Cloud Platform (trusted by 4 million applications)
Platform-as-a-Service (Java, Python, PHP, Go)
264k websites (258k is active), according to builtwith.com
Coca-cola, Snapchat, Ubisoft, Rovio, BestBuy, Sony Music, ...
4. REASONS TO LEARN GOOGLE APP ENGINE
Highly scalable
Integration
Cost-effective
Well documented
It’s Google
9. THE SANDBOX
Java 7 JVM in a safe "sandboxed" environment
Servlet 2.5 standard
Standard WAR directory structure
Secured "sandbox" environment isolates application for service and security
The JVM can execute any Java bytecode that operates within the sandbox
restrictions
14. REQUIREMENTS AND PREREQUISITES
JDK 1.7 (recommended)
Apache Maven 3.1+
MySQL 5+ (for local dev server)
Google account
Application ID
IDE
15. GAE JAVA PROJECT STRUCTURE
You'll add your own application Java classes
to src/main/java/...
You'll configure your application using the
file src/main/webapp/WEB-INF/appengine.web.xml
You'll configure your application deployment using
the file src/main/webapp/WEB-INF/web.xml
16. THE JAVA DEVELOPMENT SERVER
jetty-6.1.x (built-in)
The development web server simulates the App Engine Java runtime
environment and all of its services, including the datastore
26. AN APP ENGINE APPLICATION CANNOT
write to the filesystem. Applications must use the App Engine datastore for
storing persistent data. Reading from the filesystem is allowed, and all
application files uploaded with the application are available
respond slowly. A web request to an application must be handled within a few
seconds. Processes that take a very long time to respond are terminated to
avoid overloading the web server
make other kinds of system calls
27. WEB.XML FEATURES NOT SUPPORTED
App Engine supports the <load-on-startup> element for servlet declarations.
However, the load actually occurs during the first request handled by the web
server instance, not prior to it
Some deployment descriptor elements can take a human readable display
name, description and icon for use in IDEs. App Engine doesn't use these,
and ignores them
App Engine doesn't support JNDI environment variables (<env-entry>)
App Engine doesn't support EJB resources (<resource-ref>)
Notification of the destruction of servlets, servlet context, or filters is not
supported
The <distributable> element is ignored
Servlet scheduling with <run-at> is not supported
28. JPA FEATURES NOT SUPPORTED
Owned many-to-many relationships
"Join" queries. You cannot use a field of a child entity in a filter when
performing a query on the parent kind. Note that you can test the parent's
relationship field directly in a query using a key
Aggregation queries (group by, having, sum, avg, max, min)
Polymorphic queries. You cannot perform a query of a class to get instances
of a subclass. Each class is represented by a separate entity kind in the
datastore