- 2.72.2 (latest)
- 2.72.1
- 2.71.0
- 2.70.3
- 2.69.0
- 2.68.2
- 2.67.0
- 2.66.0
- 2.65.0
- 2.63.1
- 2.62.0
- 2.61.0
- 2.60.0
- 2.59.1
- 2.58.0
- 2.57.0
- 2.55.0
- 2.54.1
- 2.53.0
- 2.52.0
- 2.51.0
- 2.50.0
- 2.49.0
- 2.48.1
- 2.47.0
- 2.46.1
- 2.45.0
- 2.43.0
- 2.42.0
- 2.41.0
- 2.39.0
- 2.38.0
- 2.37.0
- 2.36.0
- 2.35.0
- 2.34.1
- 2.33.0
- 2.32.1
- 2.31.1
- 2.30.1
- 2.24.0
- 2.23.3
- 2.22.0
- 2.21.0
- 2.20.1
- 2.19.6
- 2.18.7
- 2.17.0
- 2.16.0
- 2.15.0
- 2.14.0
- 2.13.0
- 2.12.2
- 2.11.0
- 2.10.0
- 2.9.0
- 2.8.1
- 2.7.1
Google API Extensions for Java
Google API Extensions for Java (GAX Java) is a library which aids in thedevelopment of client libraries for server APIs, based onGRPCand Google API conventions.
Application code will rarely need to use most of the classes within thislibrary directly, but code generated automatically from the API definitionfiles can use services such as paged list iteration, request batching, andpolling of long-running operations to provide a more convenient and idiomaticAPI surface to callers.
Currently, this library shouldn't be used independently from google-cloud-java, otherwise there isa high risk of diamond dependency problems, because google-cloud-java uses beta features from thislibrary which can change in breaking ways between versions. SeeVERSIONING formore information.
Quickstart
If you are using Maven, add this to your pom.xml file
<dependency> <groupId>com.google.api</groupId> <artifactId>gax</artifactId> <version>2.8.1</version></dependency><dependency> <groupId>com.google.api</groupId> <artifactId>gax-grpc</artifactId> <version>2.8.1</version></dependency>If you are using Gradle, add this to your dependencies
compile 'com.google.api:gax:2.8.1', 'com.google.api:gax-grpc:2.8.1'If you are using SBT, add this to your dependencies
libraryDependencies += "com.google.api" % "gax" % "2.8.1"libraryDependencies += "com.google.api" % "gax-grpc" % "2.8.1"Java Versions
Java 7 or above is required for using this library.
Contributing
Contributions to this library are always welcome and highly encouraged.
See theCONTRIBUTING documentation for more information on how to get started.
Versioning
This library followsSemantic Versioning, but with someadditional qualifications:
Components marked with
@BetaApiare considered to be "0.x" features insidea "1.x" library. This means they can change between minor and patch releasesin incompatible ways. These features should not be used by any library "B"that itself has consumers, unless the components of library B that use@BetaApifeatures are also marked with@BetaApi. Features marked as@BetaApiare on a path to eventually become "1.x" features with the markerremoved.Special exception for google-cloud-java: google-cloud-java isallowed to depend on
@BetaApifeatures without declaring the consumingcode@BetaApi, because gax-java and google-cloud-java move in stepwith each other. For this reason, gax-java should not be usedindependently of google-cloud-java.Components marked with
@InternalApiare technically public, but are onlypublic for technical reasons, because of the limitations of Java's accessmodifiers. For the purposes of semver, they should be considered private.Components marked with
@InternalExtensionOnlyare stable for usage, butnot for extension. Thus, methods will not be removed from interfaces markedwith this annotation, but methods can be added, thus breaking anycode implementing the interface. See the javadocs for more details on otherconsequences of this annotation.
Submodule notes
gaxis stable (>= 1.0.0), so anything not marked@BetaApi,@InternalApi,or@InternalExtensionOnlywon't break between minor releases. Anything marked@InternalExtensionOnlycan only break extensions between minor releases.gax-grpcis stable (>= 1.0.0), so anything not marked@BetaApi,@InternalApi,or@InternalExtensionOnlywon't break between minor releases. Anything marked@InternalExtensionOnlycan only break extensions between minor releases.gax-httpjsonis beta (0.x.y), so anything may change at any time and the publicAPI should not be considered stable. There is no difference whether a class ismarked@BetaApior not; that annotation is only present as a reminder. There isalso no difference whether a class is marked@InternalExtensionOnlyor not; thatonly implies that the annotation will still be present in 1.0.0.
Feature notes
- Long Running Operations - This feature is not yet considered stable.
- Streaming - Streaming features are not yet considered stable.
- Batching - Batching features are not yet considered stable.
- Generated Code Support - Features to support generated code is not yetconsidered stable.
- Testing - There are no plans to consider any code in the testlib jar to be stable.
Repository Structure
This repository contains the following java packages.
gax
com.google.api.gax.batching- Contains general-purpose batching logic.com.google.api.gax.core- Contains core interfaces and classes that are notspecific to grpc and could be used in other contexts.com.google.api.gax.longrunning- Contains classes related to long runningoperations.com.google.api.gax.paging- Contains classes related to list calls that returnresults in pages.com.google.api.gax.retrying- Contains classes related to retrying API calls.com.google.api.gax.rpc- Contains classes related to making RPC calls.
gax-grpc
com.google.api.gax.grpc- Contains classes that provide functionality on topof gRPC calls.com.google.longrunning- Contains the mix-in client for long-running operationswhich is implemented by a number of Google APIs.
gax-httpjson
com.google.api.gax.httpjson- Contains classes that provide functionality ontop of http/json calls.
License
BSD - SeeLICENSE for more information.
Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-12-17 UTC.