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: false - 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 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: true 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