Glossary of App Engine Terms

This page defines App Engine-specific terms and concepts.

A

Ancestor

A Datastore entity that is a parent of another entity.

Ancestor Query

A query over a single entity group using the key of a parent entity. By default, the results of such a query are strongly consistent.

Apache Ant

A third-party Java library used to build and test your App Engine applications. While Apache Ant is not a Google tool, App Engine's Java SDK includes a set of Ant macros to perform common App Engine development tasks, including starting your development server and uploading your apps to App Engine.

AppCfg command-line tool

The preferred tool is now the gcloud tool, see Google Cloud SDK for information. The appcfg.py command uploads new versions of your code, configuration, and static files for your application to App Engine. You can also use this command to manage Datastore indexes and download log data.

appengine-web.xml

appengine- web.xml is a required configuration file for Java applications. At a minimum, this file specifies the application ID and version.

Application ID

Your application ID is a unique name that you choose when you create your application. More details can be found in the Java, Python and Go Getting Started Guides.

Appspot

Your application serves from http://_your_app_id_.appspot.com by default.

Appstats

The Java and Python SDKs each include a suite of tools called appstats for measuring the performance of your application. Appstats integrates with your application to record events, and it provides a web-based administrative interface for browsing statistics.

app.yaml

Python, Go, and PHP applications must use the app.yaml file as the main configuration file for applications. Java applications use appengine- web.xml instead.

App Engine

App Engine is Google's highly scalable platform for hosting web services. It consists of runtimes and SDKs for Java, Python, and Go programming languages.

App Engine SDK

The App Engine Software Development Kits (SDKs) for Java, Python, and Go each include a web server application that emulates all of the App Engine services on your local computer. Each SDK includes all of the APIs and libraries available on App Engine. The web server also simulates the secure sandbox environment, including checks for attempts to access system resources disallowed in the App Engine runtime environment. Each SDK also includes a tool to upload your application to App Engine.

Asynchronous Datastore

The asynchronous Datastore API allows you to make parallel, non-blocking calls to the Datastore and to retrieve the results of these calls at a later point in the handling of the request. This API is available in both Java and Python.

Authentication

App Engine applications can authenticate users using any one of three methods: Google Accounts, accounts on your own Google Apps domains, or OpenID identifiers. (Note that the support for OpenID is deprecated and scheduled for removal.) An application can detect whether the current user has signed in, and can redirect the user to the appropriate sign-in page. With a signed-in user, the application can access the user's email address (or OpenID identifier if your application is using OpenID). The application can also detect whether the current user is an administrator, making it easy to implement admin-only areas of the app.

Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

B

Backend Instance

An instance that is exempt from request deadlines and has access to more memory and CPU than normal instances. Its duration is determined by your configuration with limited scaling based on your settings. App Engine provides backends for applications that need faster performance, large amounts of addressable memory, and continuous or long- running background processes.Backends are supported by Java, Python and Go.

backends.xml

backends.xml is a file that Java applications can use to configure backends. Java applications can also use backends.yaml.

backends.yaml

Python applications must use backends.yaml to configure backends. Java applications may use either backends.yaml or backends.xml.

Billable Quota

A total measurement of resource use that combines usage covered by the free quotas and additional usage that is billed.

Blob

An acronym for "Binary Large Object". A blob may refer to a large data object in the blobstore API, or it may refer to a property type in the Datastore API.

Blobstore API

Supported in Java, Python, and Go, the blobstore API allows your application to serve data objects called blobs, which are much larger than the size allowed for objects in the Datastore service.

Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

C

Capabilities API

Supported in Java, Python, and Go, with the capabilities API, your application can detect outages and scheduled downtime for specific API capabilities. With this information, you can disable the unavailable capability in your application before it impacts your users.

CGI

See common gateway interface.

Channel API

Supported in Java, Python, and Go, the channel API creates a persistent connection between your application and Google servers, allowing your application to send messages to JavaScript clients in real time without the use of polling. This is useful for applications designed to update users about new information immediately. Some example scenarios are collaborative applications, multi-player games, or chat rooms.

Common Gateway Interface (CGI)

The common gateway interface (CGI) is a standard that defines how web server software can delegate the generation of web pages to a stand-alone application. App Engine uses the CGI standard with the Python runtime to communicate the request data to the handler, and receive the response.

Concurrency

Concurrency occurs when systems execute computations simultaneously, and these computations interact with each other.

Concurrency Control

Concurrency control ensures that systems generate correct results for concurrent operations while getting those results as quickly as possible.

Concurrent Request

App Engine can send multiple requests in parallel to a web server. Concurrent Requests are supported by Java, Python 2.7 and Go.

Configuration File

All App Engine applications require a configuration file to set important details like the application ID and version number. Python, PHP, and Go applications must use app.yaml as their main configuration file. Java applications use the appengine- web.xml configuration file.

CPU Time

CPU time is the amount of time for which a central processing unit (CPU) in a Google data center processes requests from your application.

Cron Job

The App Engine cron service allows users to create tasks to run at regular intervals. Cron jobs are supported by Java, Python and Go.

cron.xml

For your Java application, a configuration file called cron.xml or cron.yaml file controls scheduled tasks. It consists of a number of job definition pairs, each containing a <url> tag and a <schedule> tag.

cron.yaml

For Java, Python and Go applications, a configuration file called cron.yaml controls scheduled tasks. It consists of a number of job definition pairs, each containing a url field and a schedule field.

Custom Domain

To serve your application on another domain besides appspot.com, you need to register your domain with Google apps.

Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

D

Datastore

Google App Engine uses a Datastore to distribute, replicate, and load balance your data through a simple API. It also includes a powerful query engine and processes transactions. Java, Python and Go can all make use of the Datastore.

Datastore Blob Property

For Datastore storage, you must use the blob property value type to store unencoded byte strings longer than 1500 bytes. Blobs stored in this way are not indexed. For more information see the Java, Python or Go documentation

Datastore Call Deadline

The Datastore call deadline is the maximum amount of time your API call to the Datastore can take. If your API call does not complete by the deadline, the Datastore aborts with an error and returns control to your application. For more information see the Java, Python or Go documentation.

Datastore Index

Every Datastore query uses an index, a table containing the results for the query in the desired order. For more information see the Java, Python, or Go documentation.

Datastore Index Configuration

The App Engine Datastore uses indexes for every query your application makes. The Datastore updates these indexes whenever an entity changes, so the Datastore quickly returns results to you when your application makes a query. To do this, the Datastore needs to know in advance which queries the application will make. You specify which indexes your application needs in a configuration file. Java applications can use either datastore- indexes.xml or [index.yaml](/appengine/docs/java/configyaml/indexref). Python and Go applications must use the index.yaml file.

Denial of Service Protection Service

The App Engine denial of service (DoS) protection service allows you to protect your application from running out of quota when subjected to denial of service attacks or similar forms of abuse. You can blacklist IP addresses or subnets, and the service drops requests routed from those addresses or subnets before App Engine calls your code. DoS Protection can be configured for Java applications using either dos.xml or dos.yaml. Python, PHP, and Go applications must use the dos.yaml file.

Deployment Descriptor

Java web applications use a deployment descriptor file called web.xml to determine how URLs map to servlets, which URLs require authentication, and other information.

dev_appserver

See development web server.

Development Console

The development web server includes a console web application. The local development consoles in Go, Java, PHP, and Python, all let you browse the local Datastore, but each console also has unique features of its own.

Development Web Server

The App Engine SDK includes a development web server for testing your application on your computer. In Java, the development web server simulates the App Engine Java runtime environment and all of its services, including the Datastore. In Python, the development web server simulates your application running in the App Engine Python runtime environment; this simulated environment enforces some sandbox restrictions such as restricted system functions and Python module imports. For Go, the development web server simulates the App Engine Go runtime environment and all Go's supported services.

dev_appserver.py

A command-line tool for interacting with the Python development server.

dev_appserver.sh

A command-line tool for interacting with the Java development server.

Django

Django is a high-level Python web framework that encourages rapid development.

DoS

See denial of service protection service.

dos.xml

The dos.xml file specifies blacklists of IP addresses and subnets to configure denial of service protection. Java applications can also use the dos.yaml configuration file.

dos.yaml

The dos.yaml file for Python, Java PHP, and Go applications specifies blacklist of IP addresses and subnets to configure denial of service protection.

Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

E

Eclipse

Eclipse is an open-source integrated development environment (IDE) for Java developers. Java developers primarily use Eclipse, but it also supports other languages (including Python) because of its robust set of plugins.

Entity

The Datastore writes data in objects known as entities, and each entity has a key that identifies the entity. For more information see the entity documentation for Java, Python or Go.

Entity Group

An entity group is a set of entities whose keys all specify the same root entity.

Experimental

Features marked "Experimental"; are innovative new features that we are developing rapidly. The App Engine SLA does not support these features, and Google may make backwards-incompatible changes to them at any time.

Exploding Index

Custom indexes that refer to multiple properties with multiple values can get very large with only a few values. To completely record such properties, the index table must include a row for every combination of values of the indexed properties. Because exploding indexes contain so many values, they increase the amount of Datastore CPU time that your application uses. The SDK attempts to detect exploding indexes and suggests an alternative, but in some cases you may require custom configuration. See the Datastore Indexes page for Java or Python for more information.

Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

F

Filter Class

A filter is a class that acts on a request like a servlet, but may allow the handling of the request to continue with other filters or servlets.

Frontend Instance

An instance running your code and scaling dynamically based on the incoming requests but limited in how long a request can run

Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

G

gcloud app commands

The gcloud tool provides tooling for managing your application. See the gcloud app commands reference.

Google App Engine Launcher

The Python SDK for Windows and Mac includes Google App Engine launcher, an application that runs on your computer and provides a graphical interface that simplifies many common App Engine development tasks.

Google App Engine SDK

With App Engine, you can build web applications using either Java, Python, or Go programming languages. Your application runs in a secured “sandbox” environment to isolate your application from security threats.

Google Cloud Platform Console

A web-based user interface for managing your application. You can use the Cloud Platform Console to create new apps, change which version of your application is serving, and perform tasks such as viewing error logs and analyzing client requests. You can also use the console to administer your Datastore, manage task queues, and test new versions of your app.

Google Cloud SDK

A set of tools that you can use to manage resources and applications hosted on Google Cloud Platform Console. These include the gcloud, gsutil, and bq command line tools. The gcloud command-line tool is now the preferred tool for deploying and managing your applications in App Engine. For more information, see the Google Cloud SDK.

Google Plugin for Eclipse

With the Google Plugin for Eclipse, you create, test, and upload your Java App Engine applications from within Eclipse. The Google Plugin for Eclipse also makes it easy to develop applications using Google Web Toolkit (GWT) to run on App Engine or in any other environment.

Google Protocol RPC Library

The Google Protocol RPC library is a simple way to create well-defined, easy-to-use, web-based remote procedure call (RPC) services. An RPC service is a collection of message types and remote methods that provide a structured way for external applications to interact with web applications. Because it is possible to define messages and services using only the Python programming language, it's easy to get started developing your own services.

Google Web Toolkit (GWT)

Google Web Toolkit (GWT) is a free, open source development toolkit for building and optimizing complex browser-based applications. Its goal is to enable productive development of high-performance web applications without the developer having to be an expert in browser quirks, XMLHttpRequest, and JavaScript.

Go Programming Language

By being expressive, concise, clean, and efficient, the Go programming language is an open source project to make programmers more productive. Its concurrency mechanisms make it easy to write programs optimized for multicore and networked machines while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code, but it has the convenience of garbage collection and the power of run-time reflection.

GWT

See Google Web Toolkit.

Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

H

High Replication Datastore (HRD)

The default data repository of the App Engine Datastore, providing high availability for reads and writes by storing data synchronously in multiple data centers. The result is a highly reliable storage solution, remaining available for reads and writes during planned downtime and extremely resilient in the face of catastrophic failure. Java, Python and Go can all make use of the High Replication Datastore.

Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

I

Idle Instances

Idle instances, or resident instances are instances primed to receive additional load for your application. App Engine keeps these instances in reserve at all times. You can see these instances marked as "Resident" in the Instances page of the Cloud Platform Console.

Index

Every Datastore query uses an index, a table containing the results for the query in the desired order. The Datastore maintains an index for every query an application intends to make. As the entities change, the Datastore updates the indexes with the correct results. When the application executes a query, the Datastore fetches the results directly from the corresponding index.

index.yaml

A configuration file for Datastore indexes available for Python, Java, and Go applications.

Instance

A small virtual environment to run your code with a reserved amount of CPU and Memory.

Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

J

Java Archive (JAR)

A Java ARchive combines multiple files into one usually to distribute Java applications or Java libraries over the Internet.

Java Data Object (JDO)

Java Data Objects (JDO) is a standard interface for storing objects containing data into a database. The standard defines interfaces for annotating Java objects, retrieving objects with queries, and interacting with a database using transactions. An application that uses the JDO interface can work with different kinds of databases without using any database-specific code, including relational databases, hierarchical databases, and object databases.

Java Development Server

The App Engine Java SDK includes a development web server for testing your application on your computer. The development web server simulates the App Engine Java runtime environment and all of its services, including the Datastore. The Google Plugin for Eclipse can run the server in the Eclipse debugger. You can also run the development server from the command line.

Java Persistence API (JPA)

Java persistence API (JPA) is a standard interface for storing objects containing data into a relational database. The standard defines interfaces for annotating Java objects, retrieving objects using queries, and interacting with a database using transactions.

Java Runtime Environment (JRE)

App Engine applications can be implemented using the Java programming language, and other languages that use the java virtual machine. The App Engine Java runtime environment includes the Java 7 JVM and interfaces to the App Engine services that conform to industry standards, such as servlets and JDO/JPA. You can also use raw APIs to the services for implementing other interfaces.

Java Servlet

A servlet is a Java programming language class used to extend the capabilities of servers that host applications accessed via a request-response programming model. Although servlets can respond to any type of request, you commonly use them to extend the applications hosted by web servers. When App Engine receives a web request from your application, it invokes the servlet that corresponds to the URL as described in your application's deployment descriptor. It uses the Java servlet API to provide the request data to the servlet, and accept the response data.

JRE Class White List

The list of available Java classes in the Java standard library to develop App Engine applications.

Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

K

Key

A key is a unique identifier for each entity in the Datastore. Keys consist of a kind, a unique name assigned either by the app or the Datastore, and an optional ancestor path that specifies a parent entity. If an ancestor path is present, the entity belongs to an entity group defined by that parent.

Kind

Each Datastore entity is of a particular kind, which is simply a name specified by the application. A kind categorizes the entity for the purpose of queries. For example, a human resources application might represent each employee at a company with an entity of the kind “Employee”. Unlike rows in a table, two entities of the same kind need not have the same properties. If required, an application can establish such a restriction in its data model. For more details on Kinds see the Java, Python and Go documentation.

Kindless Query

In a kindless query, App Engine Datastore returns all entites matching query constraints regardless of kind. See the query documentation for Java, Python and Go for more details.

Kindless Ancestor Query

In a kindless ancestor query, App Engine Datastore returns all ancestors to a given entity in a query regardless of kind. See the query documentation for Java, Python and Go for more details.

Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

L

Top | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

M

Mail

An App Engine API to send email from the application. Sending email is supported by Java, Python and Go.

MapReduce

A computing model developed by Google to do efficient distributed computing over large data sets. Mapreduce is supported on the Java and Python runtimes. Input data values in the MapReduce model are mapped (a