Version 1.3.8
=============
- You can run task queue tasks immediately from the admin console.
- Added an OutputSettings class to the Images API to specify the JPEG encoding
  quality when running in production.
- Support for login of multiple Google accounts within an app, and longer login
  sessions. For more information see:
    http://www.google.com/support/accounts/bin/answer.py?answer=181599
- In queue.xml, the maximum allowed bucket size is now 100.
- Removed limits on zigzag merge-join queries. Therefore the error "The built-in
  indices are not efficient enough for this query and your data. Please add a
  composite index for this query." will no longer be thrown in most cases,
  enabling more types of queries without indexes.
- The whitelist has been updated to include java.net.InetAddress and some
  interfaces and abstract classes in javax.xml.soap, including
  javax.xml.soap.SOAPMessage.
- Fixed an issue reserving App Ids by owners of emails containing periods,
  multiple cases, and googlemail.com address.
    http://code.google.com/p/googleappengine/issues/detail?id=1196
- Fixed an issue where TaskOptions had no public getters, making testing
  impossible.
    http://code.google.com/p/googleappengine/issues/detail?id=3243
- Fixed an issue on the development server where PNGs were being returned as
  JPEGs.
    http://code.google.com/p/googleappengine/issues/detail?id=3661

Version 1.3.7
=============
- Fixed an SDK issue where calling getServingUrl raised an exception.
    http://code.google.com/p/googleappengine/issues/detail?id=3598

Version 1.3.6
=============
- Multitenancy is now supported in the datastore, allowing better
  compartmentalization of user data.
- Automatic image thumbnailing is now available in the Images API using
  getServingUrl.
- Users can now serve custom static error pages for over_quota, dos_api_denial
  and default cases.
- Results of datastore count() queries and offsets for all datastore queries
  are no longer capped at 1000.
- Added a pause queue button to the task queue details page in the Admin
  Console.
- Historical graphs have been added to all of the dashboard graphs in the Admin
  Console.
- Content-range headers are supported on Blobstore downloads.
- New method to allocate datastore ids in a given range: allocateIdRange()
- The app.yaml format is supported with Java applications.
- Increased several rate limited quotas for free applications.
- Fixed an issue that did not allow forms of over 200,000 bytes to be submitted.
   http://code.google.com/p/googleappengine/issues/detail?id=1608

Version 1.3.5
=============
- Ability to configure the Task Queue storage limit with the
  total-storage-limit field in the queue.xml file.
- Task Queues now support up to 50 qps per queue, up from 50 qps per app.
- Developers can programmatically access Blobs with BlobstoreInputStream, which
  provides an InputStream view of a blob in Blobstore
- Bulkloader transform helpers for lists and hierarchical keys were added.
- remote_api_shell commands can be sent over HTTPS or HTTP.
- Admin Console logs now include information on request time latency.
- The datastore now supports end cursors.
- Fixed an issue where requesting /appstats would not properly direct to
  /appstats/.
- Fixed an issue with inconsistent URL mappings between the SDK and production.
    http://code.google.com/p/googleappengine/issues/detail?id=2598

Version 1.3.4
=============
- Client side bulkloader available with the Python SDK that has a new
  configuration syntax and wizard for easier import/export with the datastore.
  Can be used by enabling remote_api in your Java application
- Applications can now be configured to authenticate with OpenID by selecting
  the OpenID option when creating your application in the admin console
    http://code.google.com/p/googleappengine/issues/detail?id=248
    http://code.google.com/p/googleappengine/issues/detail?id=56
- New API to allow App Engine apps to act as OAuth service providers
    http://code.google.com/p/googleappengine/issues/detail?id=919
- The version update check in the Java SDK now uses https
- Allow full access to javax.el.*
    http://code.google.com/p/googleappengine/issues/detail?id=3157
- Increased the timeout during deployment to 15 minutes
- Fixed an issue with JPA where an illegal cast exception was thrown during the
  fetch of integer fields
- MemcacheService.setNamespace() is deprecated in favor of
  MemcacheServiceFactory.getMemcacheManager(namespace)
- Support in the SDK for Java 1.5 is being deprecated. These warnings now appear
  when starting the SDK

Version 1.3.3.1
===============
- Fixed an issue where servlet filters could cause 404s
    http://code.google.com/p/googleappengine/issues/detail?id=3138

Version 1.3.3
=============
- Added two new system properties com.google.appengine.application.id and
  com.google.appengine.application.version
- DeadlineExceededException is now always thrown before
  HardDeadlineExceededError
- Decreased likelihood of "Too many URLMap" deployment errors for complex
  web apps
- Fixed an error where QuotaService.getCpuTimeInMegaCycles() was returning
  cycles instead of megacycles
- Fixed an issue between differing behavior of jsp in the production and
  development environments
    http://code.google.com/p/googleappengine/issues/detail?id=3022
- Fixed an issue uploading webapps with .tag files
    http://code.google.com/p/googleappengine/issues/detail?id=2902

Version 1.3.2
=============
- New API to read the contents of uploaded Blobs (fetch_data)
    http://code.google.com/p/googleappengine/issues/detail?id=2536
- URLFetch now supports accessing ports 80-90, 440-450, and 1024-65535
- Mail API now allows common document formats as attachments
    http://code.google.com/p/googleappengine/issues/detail?id=494
- The Task Queue API now supports adding multiple tasks in a single call to
  Queue.add()
- Fixed charset handling for inbound emails
    http://code.google.com/p/googleappengine/issues/detail?id=2326
- Fixed issue with compositing background colors in dev_appserver
- New feature in the datastore to specify whether to use strong or eventually
  consistent reads (the default is strong)
- New datastore feature allows setting deadlines for operations
- Increased the maximum Task Queue refill rate from 20/s to 50/s
- Support for IP blacklisting to prevent denial of service (DoS) attacks
- App Stats is now available for the Java SDK in addition to Python
- Fix issue with expiration times not being reset on Put on the Memchache API
    http://code.google.com/p/googleappengine/issues/detail?id=1284
- Fix issue preventing static files from being served when a servlet is mapped to root
    http://code.google.com/p/googleappengine/issues/detail?id=1379

Version 1.3.1
=============
  - Datastore Query Cursors
      http://code.google.com/appengine/docs/java/datastore/queriesandindexes.html#Query_Cursors
  - Transactional Tasks
  - Support for Custom Admin Console pages
  - Java Precompilation is now on by default
      Developers can opt-out of precompilation by setting the flag in
      appengine-web.xml:
      <precompilation-enabled>false</precompilation-enabled>
  - New built-in support for unit testing (see appengine-testing.jar)
      http://code.google.com/appengine/docs/java/tools/localunittesting.html
      http://code.google.com/p/googleappengine/issues/detail?id=326
  - net.sf.jsr107 package included as an alternative to the low-level
    Memcache API
  - javax.annotation.Resource/Resources added to the package whitelist
  - New "month" and "synchronized" syntax for Cron configuration
      http://code.google.com/appengine/docs/java/config/cron.html
  - URLFetch supports asynchronous requests
      http://code.google.com/p/googleappengine/issues/detail?id=1899
  - appcfg.sh uses HTTPS for application deployment
  - appcfg.sh adds request_logs --append
  - Changes to the order queries without a specified sort order are returned
    Only queries that use IN will see different results.
  - Added support for multiple != filters on the same property
  - Improved support for keys-only queries when using IN and != filters
  - Support for ETags, If-matches, If-not-matches HTTP Headers, as well as 304
    status codes now available on static files (not yet available on the
    dev_appserver or Blobstore blobs)
      http://code.google.com/p/googleappengine/issues/detail?id=575
  - Fixed issue where the maximum transform count was enforced for composite
    operations
      http://code.google.com/p/googleappengine/issues/detail?id=1656
  - Fixed issue with whitespace on the end of strings in web.xml
      http://code.google.com/p/googleappengine/issues/detail?id=2242
  - Fixed web.xml <error-page> entries for 404 error codes
      http://code.google.com/p/googleappengine/issues/detail?id=1477
  - Added validation prevent welcome-files with absolute paths
      http://code.google.com/p/googleappengine/issues/detail?id=1249
  - Fixed issue where cancelling a deployment in progress could unintentionally
    corrupt the SDK
      http://code.google.com/p/googleappengine/issues/detail?id=2255
  - Fixed issue with QuotaService.getCpuTimeInMegaCycles() returning 0
      http://code.google.com/p/googleappengine/issues/detail?id=2639
  - Fixed issue where JSP exceptions will be incorrectly cast causing a 
    ClassCastException
      http://code.google.com/p/googleappengine/issues/detail?id=1438

Version 1.3.0
=============
  - Support for the new Blobstore API
  - New com.google.appengine.runtime.{version,environment} system properties
    (and a SystemProperty accessor class)
  - New sample applications for GWT 2.0
  - Optimizations for many reflection operations

Version 1.2.8
=============
  - Support for JAXB. JAXB is included in JDK 1.6 (and App Engine's production
    servers). If you're using JDK 1.5 with your local dev_appserver, you will
    need to include the JAXB libraries with your application to use it.
      http://code.google.com/p/googleappengine/issues/detail?id=1267
  - New support for application pre-compilation to reduce the length of
    loading requests. To enable pre-compilation on your application, add this
    flag to your appengine-web.xml:
      <precompilation-enabled>true</precompilation-enabled>
    If you have trouble deploying your application, you should remove this
    flag or set it to false.
  - Added Quota API (com.google.appengine.api.quota) to match Python API.
  - Low-level Memcache API now supports batchIncrement().
  - HTTPResponse object now has getFinalUrl() method for 302 redirects.
    - http://code.google.com/p/googleappengine/issues/detail?id=1464
  - Java Dev Appserver now automatically executes tasks.  If you prefer the
    old behavior where tasks do not automatically execute you can use the
    following flag when starting the server:
      -Dtask_queue.disable_auto_task_execution 
  - Additional file extensions permitted when sending mail.
    - http://code.google.com/p/googleappengine/issues/detail?id=494
  - Fixed issue with Java mail handler not processing multipart messages
    correctly.
  - Fixed agent code included in appengine-local-runtime.jar results in
    RuntimeException.
    - http://code.google.com/p/googleappengine/issues/detail?id=2280
  - Fixed issue with sort orders defined on properties that allow multiple
    values.
    - http://code.google.com/p/googleappengine/issues/detail?id=2349
  - Fixed problem with dropped query strings after requiring log-in.
    - http://code.google.com/p/googleappengine/issues/detail?id=2225
  - Removed limitation preventing multiple parameters with the same name.
    - http://code.google.com/p/googleappengine/issues/detail?id=2090
  - Fixed issue with local datastore incorrectly sorting results of ancestor
    queries.
    - http://code.google.com/p/googleappengine/issues/detail?id=2177
  - New Index building status page in the Admin Console
  - Task Queue now supports purging queues, and deleting tasks and queues via
    the Admin Console.
    - http://code.google.com/p/googleappengine/issues/detail?id=2159
    - http://code.google.com/p/googleappengine/issues/detail?id=1740
  - Over Quota HTTP status code changed from 403 to 503, other to 500.
    - http://code.google.com/p/googleappengine/issues/detail?id=961
  - Task Queue now considers all HTTP 2xx status codes to represent success.

For past release notes, visit:
http://code.google.com/p/googleappengine/wiki/SdkForJavaReleaseNotes
