SKIP THE SHIPPING
Use code NOSHIP during checkout to save 40% on eligible eBooks, now through January 5. Shop now.
Register your product to gain access to bonus material or receive a coupon.
In Essential App Engine, Adriaan de Jonge shows Java developers how to rapidly build complex, productionquality, performance-driven cloud applications with Google App Engine. Using a start-to-finish case study and extensive Java example code, De Jonge covers the entire lifecycle, from application design and data modeling through security, testing, and deployment.
De Jonge introduces breakthrough techniques for creating applications that respond within two seconds, even on cold startup, and allow server responses in hundreds of milliseconds or less throughout the rest of the session. He also demonstrates how to avoid common mistakes that can dramatically reduce cloud application performance and scalability. He thoroughly covers state-of-the-art user interface development and shows how to make the most of Google App Engine’s extensive set of APIs. Coverage includes
Improving Google App Engine Performance
Download the sample pages (includes Chapter 2 and Index)
Introduction xix
Acknowledgments xxvii
About the Author xxix
Part I: An App Engine Overview 1
Chapter 1: Setting Up a Development Environment 3
Working with Eclipse Tools 3
Deploying from the Command Line 14
Summary 16
Chapter 2: Improving App Engine Performance 17
Performing in the Cloud 17
Measuring the Cost of Class Loading 18
Avoiding Cold Startups 24
Improving Performance in General 25
Summary 27
Part II: Application Design Essentials 29
Chapter 3: Understanding the Anatomy of a Google App Engine Application 31
Uploading Files for Dynamic Deployment 31
Setting Up the Directory Structure 33
Configuring the Administration Panel 41
Summary 44
Chapter 4: Data Modeling for the Google App Engine Datastore 45
Moving Away from Relational Storage 45
Modeling Data 47
Working with Data 52
Summary 55
Chapter 5: Designing Your Application 57
Gathering Requirements 57
Choosing a Toolkit 58
Making Design Choices 61
Summary 65
Part III: User Interface Design Essentials 67
Chapter 6: Presenting the User Interface with HTML5 69
Introducing HTML5 69
Using Basic HTML5 Elements 70
Drawing Images Using the Canvas 72
Dragging and Dropping Items into Pages 74
Improving Form Elements 76
Detecting a User’s Geolocation 77
Storing Data on the Client Side 78
Summary 83
Chapter 7: Fine-Tuning the Layout Using CSS3 85
Selecting Elements Using CSS3 85
Using New Graphical Effects in CSS3 92
Summary 98
Chapter 8: Adding Static Interactions Using JavaScript 99
Setting Up a Simplistic Example 99
Cleaning Up HTML Using Unobtrusive JavaScript 102
Reducing JavaScript Dependence by Progressively Enhancing the HTML 106
Optimizing Performance Using Event Delegation 109
Avoiding Global Variables 110
Summary 112
Chapter 9: Adding Dynamic Interactions Using AJAX 113
Using Classic AJAX without Frameworks 113
Using Google App Engine’s Channel API 120
Summary 125
Part IV: Using Common App Engine APIs 127
Chapter 10: Storing Data in the Datastore and Blobstore 129
Processing Data Synchronously 129
Processing Data Asynchronously 136
Setting Up Transactions 141
Using Multitenancy to Introduce Namespaces 144
Storing and Retrieving Large Files 146
Uploading Bulk Data Using the Remote API 151
Summary 153
Chapter 11: Sending and Receiving E-Mail 155
Sending Confirmation E-Mails with HTML and Attachments 155
Receiving E-Mail 161
Considering Performance and Quota 167
Summary 169
Chapter 12: Running Background Work with the Task Queue API and Cron 171
Task Queuing 171
Scheduling Tasks Using Cron 180
Reading HTTP Headers 182
Summary 185
Chapter 13: Manipulating Images with the App Engine Image Service 187
Minimizing the Use of the Image API 187
Reading and Writing Images 187
Performing Simple Manipulations 195
Performing Advanced Manipulations 198
Summary 201
Chapter 14: Optimizing Performance Using the Memory Cache 203
Using the Cache API for Basic Purposes 203
Implementing a Caching Strategy 206
Working with Fine-Grained Cache 209
Maintaining a Cache 210
Using Other Cache Utility Methods 213
Using JSR 107 as an Alternative API 214
Summary 214
Chapter 15: Retrieving External Data Using URL Fetch 215
Reading URLs Using GET Requests 215
Reading Results 218
Adding Options to URL Fetch 219
Posting Form Data 223
Fetching URLs Asynchronously 224
Consuming Web Services 226
Considering Security 226
Summary 227
Chapter 16: Securing a Web Application Using Google Accounts, OpenID, and OAuth 229
Authenticating Users with Google Accounts 229
Authenticating Users with OpenID 232
Providing Access to Third Parties Using OAuth 235
Securing URLs in web.xml 237
Security Considerations 239
Summary 240
Chapter 17: Sending and Receiving Messages Using XMPP 241
Sending Messages Using XMPP 241
Receiving Messages Using XMPP 244
Receiving Subscriptions 246
Receiving Presence 249
Summary 251
Part V: Application Deployment 253
Chapter 18: Improving the Development Process 255
Optimizing the Development Process for the Internet 255
Thinking Like a Project Manager 256
Reducing Overhead 256
Improving Functionality 258
Measuring Quality 260
Optimizing Developer Productivity 261
Summary 262
Chapter 19: Assuring Quality Using Measuring Tools 263
Testing on a Production Environment 263
Thinking Differently about Usability 265
Checking Availability with the Capabilities API 265
Logging Unexpected Behavior 269
Profiling Continuously on Production 271
Measuring User Response to Your Interface 273
Summary 275
Chapter 20: Selling Your Application 277
Determining How to Approach Sales 277
Knowing Your Audience 277
Reaching Your Audience 278
Converting Prospects into Paying Customers 286
Handling the Payment Process 286
Summary 287
Index 289