This document provides recommendations and guidance to accelerate the development of Aure client libraries for Java. On top of this document, there is considerably more guidance available at the following three places:
The preferred IDE is IntelliJ IDEA. The free 'community' edition is more than adequate for our use cases.
Currently our libraries are built and tested against JDK 8, JDK 11, JDK 17 and JDK 21. Therefore, it is encouraged to install the latest LTS JDK version (Java 21) on your development machine so that you may do local builds to validate your code.
If you do not have JDK installed on your development machine, consider downloading it from one of the following links (select the version that is appropriate for your OS and machine architecture):
Once Java is installed, add a JAVA_HOME
environment variable to point to JDK installation location. Once this is done, you should be able to run java -version
from your terminal and see a Java version printed out. If this fails, you will need to add JAVA_HOME
to your PATH
, by appending the following: %JAVA_HOME%\bin
.
MAVEN_HOME
environment variableMAVEN_HOME
to your PATH
by appending the following %MAVEN_HOME%\bin
You can now verify installation by running mvn -version
from the terminal.
If you're using Windows Dev Drive you should also configure the environment variable MAVEN_OPTS
to direct Maven to use a path on your Dev Drive as the Maven cache location. For example, if your D:
drive is your Dev Drive you can configure MAVEN_OPTS
to use D:\maven
as your Maven cache location with MAVEN_OPTS: -Dmaven.repo.local=D:\maven
. maven.repo.local
as the MAVEN_OPTS
configuration that specifies the Maven local cache location. Using this configuration will also configure other tools that leverage Maven, such as IntelliJ, to use this cache location as well.
Because some of the filenames in our repo are long, if you are using Windows you should enable paths longer than 260 characters:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
and set LongPathsEnabled to 1 (should be 0 by default)REG ADD HKLM\SYSTEM\CurrentControlSet\Control\FileSystem /v LongPathsEnabled /t REG_DWORD /d 1
git config --global core.longpaths true
The wiki has a document that details how to add a new module into the azure-sdk-for-java repo.
There is good documentation about building the azure-sdk-for-java in the wiki, as well as in the contributing.md file.
AutoRest is the name of the tool we use to generate the communication layer that lies beneath the API we expose to our users. AutoRest saves us from having to write a lot of network communication code, and instead we can direct our focus towards building a great user experience on top of this generated code. Our goal should be to expose as little, and ideally none, of the generated code to the user.
AutoRest usage instructions for Java are documented on the wiki.
Mock test guidance is provided in the wiki.
Recorded / Playback testsTest parallelization guidance is provided in the wiki.
Performance test instructions are documented on the wiki.
User-Agent
header is correctly formed based on the design guidelines.x-ms-azsdk-telemetry
telemetry header is correctly formed for all service client calls.Context
, and all async APIs translate from the Reactor Context to the Azure SDK Context
.RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4