Azure SDK for Java: client libraries and azure-resourcemanager packages
This repository is for active development of the Azure SDK for Java. For consumers of the SDK we recommend visiting our public developer docs at https://docs.microsoft.com/java/azure/ or our versioned developer docs at https://azure.github.io/azure-sdk-for-java.
At a glance
- What is it?
- The Azure SDK for Java is a single repository that publishes Java libraries under the com.azure group. It separates client libraries, which consume a service, from management libraries, which configure and manage one.
- Who is it for?
- Adopt the Azure SDK for Java if you are a Java developer consuming or provisioning Azure services and you want one consistent authentication, retry and logging model across services. Do not adopt it for Android work, since the README states the SDKs are not tested or supported there, and do not pull a beta management library into a production path when a stable one exists.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Java, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What the Azure SDK for Java actually is, and who it is for
This is not one library. It is the development repository for a set of Java libraries that talk to Azure services, and the README points consumers elsewhere for usage documentation: the public developer docs and the versioned developer docs site. The repository itself is where the code is built and released.
The audience is Java developers who need to call an Azure service from application code, and separately, developers who need to create or configure Azure resources programmatically. The README separates those two jobs explicitly. Client libraries consume a service. Management libraries configure and manage a service. A team doing both will end up with two dependencies in the same project, and they are named differently enough that this is easy to see: client libraries live in folders, packages and namespaces starting with azure-, while management libraries start with azure-resourcemanager.
If you are looking for a single download, there is not one. The README directs you to the list of all existing libraries, and each service library carries its own README.md inside its project folder under /sdk. That is the document you actually read before writing code, not the repository root.
Client libraries versus azure-resourcemanager libraries
The distinction is worth dwelling on because it changes what you import and what you can do.
Client libraries follow the Azure SDK Design Guidelines for Java and share core features: HTTP retries, logging, transport protocols and authentication protocols. The practical consequence is stated in the README: once you learn how these features work in one client library, you know how they work in the others. That consistency is the main reason to use the SDK rather than hand-rolled HTTP calls against the Azure REST API.
Management libraries follow the same guidelines but expose what the README calls a high-level, object-oriented API for managing Azure resources, optimized for ease of use, succinctness and consistency. The naming pattern azure-resourcemanager-compute and azure-resourcemanager-platformvalidation shows how granular this gets: management is split per resource provider, not bundled into one artifact.
The README also draws a line between stable and beta. It warns that if you need code ready for production, you should use a stable, non-beta library. The release list bears this out. In late September 2026 the repository published azure-resourcemanager-compute 2.61.0 and azure-messaging-servicebus 7.18.0, both stable-looking version numbers, alongside azure-resourcemanager-platformvalidation 1.0.0-beta.1. Same repository, same day, very different risk profiles.
Installing Azure SDK for Java from Maven and running a first call
There is no SDK-wide install step. You add the specific service library you need as a Maven dependency from the com.azure group ID, then read that library's README for the API. The repository root README does not list artifact coordinates for individual services, so the right move is to open the library folder under /sdk and copy the dependency from the README.md inside it.
What the root README does give you is the shape of the dependency: a com.azure group ID, an artifact named after the service, and a version. It also states that the main branch holds the most recent code with new features and bug fixes and does not represent the latest released stable SDK. Building from main is not the same as depending on a release.
Prerequisites are narrow. All libraries baseline on Java 8, with testing and forward support up to the latest Java long-term support release. If your build targets Java 8, you are inside the supported baseline.
For a first real use, follow the README.md in the library's folder under /sdk. The repository root does not substitute for that. For management work specifically, the README points to a SAMPLE.md file under sdk/resourcemanager/docs and a MIGRATION_GUIDE.md for upgrades from previous versions, which is where the working code examples live.
The com.microsoft.azure migration trap
The most expensive mistake with this repository is depending on the wrong generation of packages. The README states that the latest libraries from Microsoft are in the com.azure Maven group ID and use package names beginning with com.azure. Older libraries sit in the com.microsoft.azure group ID or use that as their package structure.
Those older artifacts are still resolvable, which is exactly why the problem persists. A project can compile and run against com.microsoft.azure packages for a long time without anyone noticing that it is on a historical release line. The README asks users of those packages to consider migrating and links a mapping table from historical releases to their equivalents.
This is not a subtle naming preference. It determines which documentation applies to you, which design guidelines your library follows, and whether the shared retry, logging and authentication behaviour described for client libraries is present at all. If you inherit a Java codebase with Azure calls and the imports say com.microsoft.azure, migration is the first task, not a later cleanup.
Android is explicitly out of scope
The README is unusually direct here: the Azure SDKs for Java do not provide support for Android, and while the team attempts to allow the SDKs to be used on Android, that scenario is not tested or supported.
That wording matters. It is not a claim that the libraries fail on Android. It is a statement that no one is verifying they work, and that a bug report from an Android build is outside the support contract. For a team shipping an Android app that needs Azure services, this repository is the wrong tool, and the decision should be made before the first dependency is added rather than after an incident.
The same logic applies to any environment outside the stated baseline. The baseline is Java 8 through the latest long-term support release. Running on something else is your risk to carry.
How the repository is structured and released
The top level mixes build infrastructure with the actual code. Service libraries live under sdk/. Build and engineering tooling live under eng/ and common/. Contributor documentation is consolidated under docs/, and pom.xml at the root ties the build together. There is also an AGENTS.md file, which the README describes as guidance for AI agents such as GitHub Copilot, MCP servers or LLM assistants working with the repository, covering structure, workflows and interaction practices.
Releases are tagged per package, not per repository. The README gives the format: <package-name>_<package-version>. Each tag marks the commit that produced that package, and the tags exist so that hotfix branches can service a specific released version and so a particular beta or stable release can be debugged. The release identifiers in the release feed follow this pattern, for example azure-resourcemanager-compute_2.61.0.
For a consumer this means version pinning is straightforward: pick the package version, and the tag tells you the exact source state behind it. It also means the repository has no single version number. Asking which version of the Azure SDK for Java you are on is the wrong question. You are on a set of independent package versions, and each one moves on its own schedule.
Contributions require agreeing to a Contributor License Agreement, and the CLA bot checks pull requests automatically. The project also carries a code of conduct and a security policy at the repository root.
Licence and maintenance cost
The repository is MIT licensed. That is permissive: it allows use, modification and redistribution with the licence and copyright notice retained. It says nothing about the Azure services you call through these libraries, which are governed by your own agreement with Microsoft, and it says nothing about support commitments for individual packages. This is not legal advice, and the LICENSE.txt and NOTICE.txt files at the repository root are the authoritative text.
The upgrade cost is real and uneven. Because packages release independently, there is no single upgrade event. A project using a client library and two management libraries has three version numbers to track, three sets of release notes, and three chances to be on a beta artifact without meaning to be. The README's guidance to use stable, non-beta libraries for production is the control here, and it only works if someone checks.
Last push to the repository was on 2026-09-28, and releases landed the same day, so the codebase is being worked on now. That does not tell you anything about the support status of the specific package you depend on. Read that package's README and release history instead.
Editorial conclusion
Adopt the Azure SDK for Java if you are a Java developer consuming or provisioning Azure services and you want one consistent authentication, retry and logging model across services. Do not adopt it for Android work, since the README states the SDKs are not tested or supported there, and do not pull a beta management library into a production path when a stable one exists. Before you commit, open the README.md inside the specific library folder under /sdk, confirm whether you want the client or the management library for your service, and check the release tag format <package-name>_<package-version> to pin the exact version your code was built against.
Frequently asked questions
What is the Azure SDK for Java?
It is the development repository for Microsoft's Java libraries that call Azure services. It contains both client libraries, which consume a service, and management libraries named azure-resourcemanager-*, which configure and manage resources. The README notes that the repository is for active development and points consumers to the published developer docs for usage.
What is a Java SDK?
In this repository the term covers the Java libraries that applications import to talk to Azure services. The README describes them as following shared design guidelines, so HTTP retries, logging, transport and authentication work the same way across client libraries.
What is the Azure SDK?
The README describes it as a set of libraries published per service, split into client libraries for consuming a service and management libraries for managing it. This repository is the Java implementation of that set, with each service library carrying its own README.md under the /sdk directory.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/azure-azure-sdk-for-java)