• Save
Google App Engine
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Google App Engine

on

  • 2,498 views

 

Statistics

Views

Total Views
2,498
Views on SlideShare
2,470
Embed Views
28

Actions

Likes
1
Downloads
0
Comments
0

3 Embeds 28

http://www.tikalk.com 15
http://www.slideshare.net 12
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Google App Engine Presentation Transcript

  • 1. Google AppEngine for Java enterprise applications Andrew Skiba Tikal
  • 2. Introduction
    • You have a typical Java web application
      • JSP and Servlets frontend
      • 3. Hibernate, JPA or JDBC backend
      • 4. Spring configuration
    • Created long before it was known about AppEngine
    • 5. What it takes to deploy to Google servers?
  • 6. Welcome to Pet Clinic
  • 7. App Engine for Java
    • Data storage
    • 8. Web application support
    • 9. Other services
    • 10. JVM programming languages
    • 11. Development tools
    • 12. Production tools
  • 13. It's not the same Java
    • Not full JRE support
      • No file system access
      • 14. No sockets
      • 15. No process or thread creation
      • 16. No graphics
      • 17. No JDBC
    • Most of JavaEE features are not supported
      • No EJB, JCA, JMS, JNDI
    • Sun's COSO Simon Ph ipps slams App Engine's Java Support
  • 18. Datastore
    • Interface to BigTable
    • 19. Motivation
      • Google web indexing, Google Earth, Google Finance
      • 20. Big data with complicated structure
      • 21. Serialize?
        • RDBMS don't like BLOBs
      • BigTable!
        • "sparse, distributed, persistent multi-dimensional sorted map"
        • 22. Very different from RDBMS – no JOINs, no aggregations
  • 23. Datastore APIs
    • Low level API
      • Exposes all features of Datastore
      • 24. Google proprietary
      • 25. Easy to use for new project
    • JPA
      • With some limitations
      • 26. Needs class "enhancement" build step
    • JDO
      • Will Google resurrect this spec?
  • 27. Web application on AppEngine
    • Servlets are supported
      • Servlet filters are supported
      • 28. Response time outs
      • 29. Streaming responses are limited
    • JSP, JSTL, tag libraries are supported
    • 30. Good old web.xml (with limitations)
    • 31. HTTPS is supported
    • 32. Security constraints supported with serious limitations
  • 33. Google Web Toolkit
    • Develop a desktop application (Swing-like API)
    • 34. Debug a desktop application
    • 35. Deploy an AJAX web application
    • 36. Fully supported on AppEngine
  • 37. More services
    • Memcache
      • JCache (javax.cache)
      • 38. Low-level API
    • Mail
      • java.mail
      • 39. Low-level API
    • URL fetch
      • java.net
      • 40. Low-level API
  • 41. ... and more services
    • Google Authentication
      • Only google accounts
      • 42. Very limited access control
        • Admin
        • 43. Registered user
        • 44. Anonymous
    • Scheduled tasks
      • cron.xml
      • 45. Handled by servlets
  • 46. ... and even more services
    • Image API
      • Resize, crop, "I feel lucky"
      • 47. Is necessary because Java 2D is not supported
    • XMPP API
    • 48. Task Queue API
      • experimental
  • 49. Other programming languages
      Supported
    • JRuby
    • 50. Scala
    • 51. Jython (finally: Python on AppEngine :-)
    • 52. Groovy
      • Grails support for Datastore
    • Rhino (JavaScript)
      Supported
    • Quercus (PHP)
    • 53. BeanShell
    • 54. CAL
  • 55. Development tools
    • Eclipse plugin
      • Create projects
      • 56. Debug locally
      • 57. Validate
      • 58. Deploy
    • Development server
      • Implements or simulates all services
    • GWT runner
  • 59. Development tools
    • SDK
      • CLI tools for Windows and *nix
      • 60. Libraries
    • Unit testing
      • Supported, with some overhead
    • Ant tasks
      • Enhancing JDO and JPA classes
      • 61. Run development server
      • 62. Deploy
  • 63. Dashboard
    • Main
      • Dashboard
      • 64. Quota Details
      • 65. Logs
      • 66. Cron Jobs
      • 67. Task Queues
    • Datastore
      • Indexes
      • 68. Data Viewer
  • 69. Dashboard
    • Administration
      • Application Settings
      • 70. Developers
      • 71. Versions
      • 72. Admin Logs
    • Billing
      • Billing Settings
      • 73. Billing History
  • 74. Porting PetClinic to AppEngine
  • 75. Porting PetClinic to AppEngine
    • Removed Hibernate, JDBC, TopLink and JPA code
    • 76. Implemented DAL using low level DataStore API
      • Reminds writing JDBC code
      • 77. Java DataStore API much less effective than Python one
      • 78. Surprisingly works from the first shot
    • Removed AspectJ code
      • Could be rewritten using AOP alliance API
    • Removed Log4j file appenders
  • 79. Considerations
    • Porting costs
    • 80. Not full Java spec support
    • 81. Response timeouts
    • 82. Authentication only by Google accounts
    • 83. Limited background jobs
    • Very different database
    • 84. Backup
    • 85. No guarantee on availability
      • On July 2, 2009 AppEngine was down for 6 hours
    • Billing
    • 86. Vendor lock in
      • Proprietary APIs
      • 87. Unusual database
  • 88. Links
    • Google AppEngine community
    • 89. http://code.google.com/appengine/community.html
    • 90. Project demos
    • 91. http://code.google.com/p/googleappengine/source/browse/#svn/trunk/java/demos
    • 92. Will it play in AppEngine?
    • 93. http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine
    • 94. JRE white list
    • 95. http://code.google.com/appengine/docs/java/jrewhitelist.html
    • 96. BigTable white paper
    • 97. http://labs.google.com/papers/bigtable-osdi06.pdf
  • 98. Questions?