CosmosClientBuilder Klasse
- java.
lang. Object - com.
azure. cosmos. CosmosClientBuilder
- com.
Implementiert
public class CosmosClientBuilder
implements TokenCredentialTrait<CosmosClientBuilder>, AzureKeyCredentialTrait<CosmosClientBuilder>, EndpointTrait<CosmosClientBuilder>
Hilfsklasse zum Erstellen CosmosAsyncClient von Instanzen und CosmosClient als logische Darstellung des Azure Cosmos-Datenbankdiensts.
CosmosAsyncClient und CosmosClient sind threadsicher. Es wird empfohlen, eine einzelne instance cosmosClient oder CosmosAsyncClient pro Lebensdauer der Anwendung zu verwalten, was eine effiziente Verbindungsverwaltung und -leistung ermöglicht. CosmosAsyncClient- und CosmosClient-Initialisierungen sind schwere Vorgänge. Verwenden Sie keine CosmosAsyncClient- oder CosmosClient-Initialisierungen als Anmeldeinformationen oder Überprüfungen der Netzwerkkonnektivität.
Beim Erstellen von Client sind endpoint() und key() obligatorische APIs, ohne diese schlägt die Initialisierung fehl.
ConsistencyLevel ist zwar nicht obligatorisch, aber wir empfehlen dringend, beim Erstellen des Clients auf diese API zu achten. Standardmäßig wird die Kontokonsistenzebene verwendet, wenn keine angegeben wird.
Standardmäßig wird der direkte Verbindungsmodus verwendet, wenn keiner angegeben ist.
Building Cosmos Async Client minimal APIs (without any customized configurations)
CosmosAsyncClient client = new CosmosClientBuilder()
.endpoint(serviceEndpoint)
.key(key)
.buildAsyncClient();
Building Cosmos Async Client with customizations
CosmosAsyncClient client = new CosmosClientBuilder()
.endpoint(serviceEndpoint)
.key(key)
.directMode(directConnectionConfig, gatewayConnectionConfig)
.consistencyLevel(ConsistencyLevel.SESSION)
.connectionSharingAcrossClientsEnabled(true)
.contentResponseOnWriteEnabled(true)
.userAgentSuffix("my-application1-client")
.preferredRegions(Collections.singletonList("West US", "East US"))
.buildAsyncClient();
Building Cosmos Sync Client minimal APIs (without any customized configurations)
CosmosClient client = new CosmosClientBuilder()
.endpoint(serviceEndpoint)
.key(key)
.buildClient();
Building Cosmos Sync Client with customizations
CosmosClient client = new CosmosClientBuilder()
.endpoint(serviceEndpoint)
.key(key)
.directMode(directConnectionConfig, gatewayConnectionConfig)
.consistencyLevel(ConsistencyLevel.SESSION)
.connectionSharingAcrossClientsEnabled(true)
.contentResponseOnWriteEnabled(true)
.userAgentSuffix("my-application1-client")
.preferredRegions(Collections.singletonList("West US", "East US"))
.buildClient();
Zusammenfassung zum Konstruktor
Konstruktor | Beschreibung |
---|---|
CosmosClientBuilder() |
Instanziiert einen neuen Cosmos-Client-Generator. |
Methodenzusammenfassung
Modifizierer und Typ | Methode und Beschreibung |
---|---|
Cosmos |
authorizationTokenResolver(CosmosAuthorizationTokenResolver cosmosAuthorizationTokenResolver)
Legt den Tokenlöser fest. |
Cosmos |
buildAsyncClient()
Erstellt einen asynchronen Cosmos-Client mit den bereitgestellten Eigenschaften. |
Cosmos |
buildClient()
Erstellt einen Cosmos-Synchronisierungsclient mit den bereitgestellten Eigenschaften |
Cosmos |
clientTelemetryConfig(CosmosClientTelemetryConfig telemetryConfig)
Gibt die Clienttelemetriekonfiguration instance für diesen Generator zurück. |
Cosmos |
clientTelemetryEnabled(boolean clientTelemetryEnabled)
Legt das Flag fest, um Clienttelemetriedaten zu aktivieren, die regelmäßig Aggregationsstatistiken für Datenbankvorgänge sowie Systeminformationen wie CPU/Arbeitsspeicher sammeln und an den Cosmos-Überwachungsdienst senden, was beim Debuggen hilfreich ist. |
Cosmos |
connectionSharingAcrossClientsEnabled(boolean connectionSharingAcrossClientsEnabled)
Ermöglicht die gemeinsame Nutzung von Verbindungen über mehrere Cosmos-Clients hinweg. |
Cosmos |
consistencyLevel(ConsistencyLevel desiredConsistencyLevel)
Legt fest, SESSION dass ConsistencyLevel verwendet werden soll. Standardmäßig wird Konsistenz verwendet. |
Cosmos |
contentResponseOnWriteEnabled(boolean contentResponseOnWriteEnabled)
Legt den booleschen Wert so fest, dass nur die Header und status Code in der Cosmos DB-Antwort zurückgegeben werden, wenn Vorgänge zum Erstellen, Aktualisieren und Löschen für Cosmos |
Cosmos |
credential(AzureKeyCredential credential)
Legt die AzureKeyCredential zu verwendende fest. |
Cosmos |
credential(TokenCredential credential)
Legt den fest, der TokenCredential zum Autorisieren von Anforderungen verwendet wird, die an den Dienst gesendet werden. |
Cosmos |
directMode()
Legt die standardmäßige DIRECT-Verbindungskonfiguration fest, die verwendet werden soll. |
Cosmos |
directMode(DirectConnectionConfig directConnectionConfig)
Legt die zu verwendende DIRECT-Verbindungskonfiguration fest. |
Cosmos |
directMode(DirectConnectionConfig directConnectionConfig, GatewayConnectionConfig gatewayConnectionConfig)
Legt die zu verwendende DIRECT-Verbindungskonfiguration fest. |
Cosmos |
endToEndOperationLatencyPolicyConfig(CosmosEndToEndOperationLatencyPolicyConfig cosmosEndToEndOperationLatencyPolicyConfig)
Legt die CosmosEndToEndOperationLatencyPolicyConfig auf dem Client fest. |
Cosmos |
endpoint(String endpoint)
Legt den Azure Cosmos DB-Endpunkt fest, mit dem das SDK eine Verbindung herstellt. |
Cosmos |
endpointDiscoveryEnabled(boolean endpointDiscoveryEnabled)
Legt das Flag fest, um die Endpunktermittlung für georeplizierte Datenbankkonten zu aktivieren. |
Cosmos |
excludedRegionsSupplier(Supplier<CosmosExcludedRegions> excludedRegionsSupplier)
Legt einen Supplier |
Cosmos |
gatewayMode()
Legt die gateway-Standardverbindungskonfiguration fest, die verwendet werden soll. |
Cosmos |
gatewayMode(GatewayConnectionConfig gatewayConnectionConfig)
Legt die gateway-Verbindungskonfiguration fest, die verwendet werden soll. |
Cosmos |
key(String key)
Legt entweder einen master- oder schreibgeschützten Schlüssel fest, der zum Durchführen der Authentifizierung für den Zugriff auf die Ressource verwendet wird. |
Cosmos |
multipleWriteRegionsEnabled(boolean multipleWriteRegionsEnabled)
Legt das Flag fest, um Schreibvorgänge für beliebige Regionen für georeplizierte Datenbankkonten im Azure Cosmos DB-Dienst zu aktivieren. |
Cosmos |
openConnectionsAndInitCaches(CosmosContainerProactiveInitConfig proactiveContainerInitConfig)
Legt die CosmosContainerProactiveInitConfig fest, die das Aufwärmen von Caches und Verbindungen ermöglicht, die mit Containern verknüpft sind, die aus getCosmosContainerIdentities() den ersten bevorzugten k-Regionen abgerufen werden, in denen k mit getProactiveConnectionRegionsCount()ausgewertet wird. |
Cosmos |
permissions(List<CosmosPermissionProperties> permissions)
Legt die Berechtigungsliste fest, die die Ressourcentoken enthält, die für den Zugriff auf Ressourcen erforderlich sind. |
Cosmos |
preferredRegions(List<String> preferredRegions)
Legt die bevorzugten Regionen für georeplizierte Datenbankkonten fest. |
Cosmos |
readRequestsFallbackEnabled(boolean readRequestsFallbackEnabled)
Legt fest, ob Lesevorgänge in mehrere Regionen gelangen sollen, die für ein Konto des Azure Cosmos DB-Diensts konfiguriert sind. |
Cosmos |
resourceToken(String resourceToken)
Legt ein Ressourcentoken fest, das zum Durchführen der Authentifizierung für den Zugriff auf die Ressource verwendet wird. |
Cosmos |
sessionCapturingOverrideEnabled(boolean sessionCapturingOverrideEnabled)
Die Sitzungserfassung ist standardmäßig für SESSIONaktiviert. |
Cosmos |
sessionRetryOptions(SessionRetryOptions sessionRetryOptions)
Legt die SessionRetryOptions instance auf dem Client fest. |
Cosmos |
throttlingRetryOptions(ThrottlingRetryOptions throttlingRetryOptions)
Legt die Wiederholungsrichtlinienoptionen fest, die dem Dokumentclient-instance |
Cosmos |
userAgentSuffix(String userAgentSuffix)
legt den Wert des Suffixs user-agent fest. |
Geerbte Methoden von java.lang.Object
Details zum Konstruktor
CosmosClientBuilder
public CosmosClientBuilder()
Instanziiert einen neuen Cosmos-Client-Generator.
Details zur Methode
authorizationTokenResolver
public CosmosClientBuilder authorizationTokenResolver(CosmosAuthorizationTokenResolver cosmosAuthorizationTokenResolver)
Legt den Tokenlöser fest.
Parameters:
Returns:
buildAsyncClient
public CosmosAsyncClient buildAsyncClient()
Erstellt einen asynchronen Cosmos-Client mit den bereitgestellten Eigenschaften.
Returns:
buildClient
public CosmosClient buildClient()
Erstellt einen Cosmos-Synchronisierungsclient mit den bereitgestellten Eigenschaften
Returns:
clientTelemetryConfig
public CosmosClientBuilder clientTelemetryConfig(CosmosClientTelemetryConfig telemetryConfig)
Gibt die Clienttelemetriekonfiguration instance für diesen Generator zurück.
Parameters:
Returns:
clientTelemetryEnabled
public CosmosClientBuilder clientTelemetryEnabled(boolean clientTelemetryEnabled)
Legt das Flag fest, um Clienttelemetriedaten zu aktivieren, die regelmäßig Aggregationsstatistiken für Datenbankvorgänge sowie Systeminformationen wie CPU/Arbeitsspeicher sammeln und an den Cosmos-Überwachungsdienst senden, was beim Debuggen hilfreich ist.
DER DEFAULT-Wert ist false, was angibt, dass es sich um ein Opt-in-Feature handelt, standardmäßig keine Telemetriesammlung.
Parameters:
Returns:
connectionSharingAcrossClientsEnabled
public CosmosClientBuilder connectionSharingAcrossClientsEnabled(boolean connectionSharingAcrossClientsEnabled)
Ermöglicht die gemeinsame Nutzung von Verbindungen über mehrere Cosmos-Clients hinweg. Die Standardeinstellung ist „false“.
CosmosAsyncClient client1 = new CosmosClientBuilder()
.endpoint(serviceEndpoint1)
.key(key1)
.consistencyLevel(ConsistencyLevel.SESSION)
.connectionSharingAcrossClientsEnabled(true)
.buildAsyncClient();
CosmosAsyncClient client2 = new CosmosClientBuilder()
.endpoint(serviceEndpoint2)
.key(key2)
.consistencyLevel(ConsistencyLevel.SESSION)
.connectionSharingAcrossClientsEnabled(true)
.buildAsyncClient();
// when configured this way client1 and client2 will share connections when possible.
Wenn Sie über mehrere CosmosClient-Instanzen in derselben JVM verfügen, die mit mehreren Cosmos-Konten interagieren, ermöglicht dies eine gemeinsam genutzte Verbindung im Direktmodus, sofern dies zwischen Instanzen von CosmosClient möglich ist. Beachten Sie, dass bei Festlegen dieser Option die Verbindungskonfiguration (z. B. Sockettimeout-Konfiguration, Leerlauftimeout-Konfiguration) des ersten instanziierten Clients für alle anderen Clientinstanzen verwendet wird.
Parameters:
Returns:
consistencyLevel
public CosmosClientBuilder consistencyLevel(ConsistencyLevel desiredConsistencyLevel)
Legt fest, SESSION dass ConsistencyLevel verwendet werden soll. Standardmäßig wird Konsistenz verwendet.
Parameters:
Returns:
contentResponseOnWriteEnabled
public CosmosClientBuilder contentResponseOnWriteEnabled(boolean contentResponseOnWriteEnabled)
Legt den booleschen Wert so fest, dass nur die Header und status Code in der Cosmos DB-Antwort zurückgegeben werden, wenn die Vorgänge Erstellen, Aktualisieren und Löschen für CosmosItem ausgeführt werden. Wenn dieser Wert auf false festgelegt ist (standardmäßig), gibt der Dienst keine Nutzlast in der Antwort zurück. Es reduziert die Netzwerk- und CPU-Last, da die Nutzlast nicht über das Netzwerk zurückgesendet und auf dem Client serialisiert wird. Dieses Feature wirkt sich nicht auf die RU-Nutzung für Lese- oder Schreibvorgänge aus. Standardmäßig ist dies false.
Parameters:
Returns:
credential
public CosmosClientBuilder credential(AzureKeyCredential credential)
Legt die AzureKeyCredential zu verwendende fest.
Parameters:
Returns:
credential
public CosmosClientBuilder credential(TokenCredential credential)
Legt den fest, der TokenCredential zum Autorisieren von Anforderungen verwendet wird, die an den Dienst gesendet werden. Weitere Informationen zur ordnungsgemäßen Verwendung des Typs finden Sie in der Dokumentation zur Identität und Authentifizierung des TokenCredential Azure SDK für Java.
Parameters:
Returns:
directMode
public CosmosClientBuilder directMode()
Legt die standardmäßige DIRECT-Verbindungskonfiguration fest, die verwendet werden soll. Standardmäßig wird der Generator mit directMode() initialisiert.
Returns:
directMode
public CosmosClientBuilder directMode(DirectConnectionConfig directConnectionConfig)
Legt die zu verwendende DIRECT-Verbindungskonfiguration fest. Standardmäßig wird der Generator mit directMode() initialisiert.
Parameters:
Returns:
directMode
public CosmosClientBuilder directMode(DirectConnectionConfig directConnectionConfig, GatewayConnectionConfig gatewayConnectionConfig)
Legt die zu verwendende DIRECT-Verbindungskonfiguration fest. gatewayConnectionConfig: Stellt eine grundlegende Konfiguration dar, die für den Gatewayclient verwendet werden soll. Auch im Direktverbindungsmodus durchlaufen einige Der Metadatenvorgänge den Gatewayclient. Das Festlegen der Gatewayverbindungskonfiguration in dieser API wirkt sich nicht auf den Verbindungsmodus aus, der in diesem Fall Direkt ist.
Parameters:
Returns:
endToEndOperationLatencyPolicyConfig
public CosmosClientBuilder endToEndOperationLatencyPolicyConfig(CosmosEndToEndOperationLatencyPolicyConfig cosmosEndToEndOperationLatencyPolicyConfig)
Legt die CosmosEndToEndOperationLatencyPolicyConfig auf dem Client fest.
Parameters:
Returns:
endpoint
public CosmosClientBuilder endpoint(String endpoint)
Legt den Azure Cosmos DB-Endpunkt fest, mit dem das SDK eine Verbindung herstellt.
Parameters:
Returns:
endpointDiscoveryEnabled
public CosmosClientBuilder endpointDiscoveryEnabled(boolean endpointDiscoveryEnabled)
Legt das Flag fest, um die Endpunktermittlung für georeplizierte Datenbankkonten zu aktivieren.
Wenn EnableEndpointDiscovery true ist, ermittelt das SDK automatisch die aktuellen Schreib- und Leseregionen, um sicherzustellen, dass Anforderungen basierend auf der Funktion der Region und den Vorlieben des Benutzers an die richtige Region gesendet werden.
Der Standardwert für diese Eigenschaft ist true, was angibt, dass die Endpunktermittlung aktiviert ist.
Parameters:
Returns:
excludedRegionsSupplier
public CosmosClientBuilder excludedRegionsSupplier(Supplier
Legt einen Supplier
Parameters:
CosmosExcludedRegions
instance zurückgibt.
Returns:
gatewayMode
public CosmosClientBuilder gatewayMode()
Legt die gateway-Standardverbindungskonfiguration fest, die verwendet werden soll.
Returns:
gatewayMode
public CosmosClientBuilder gatewayMode(GatewayConnectionConfig gatewayConnectionConfig)
Legt die gateway-Verbindungskonfiguration fest, die verwendet werden soll.
Parameters:
Returns:
key
public CosmosClientBuilder key(String key)
Legt entweder einen master- oder schreibgeschützten Schlüssel fest, der zum Durchführen der Authentifizierung für den Zugriff auf die Ressource verwendet wird.
Parameters:
Returns:
multipleWriteRegionsEnabled
public CosmosClientBuilder multipleWriteRegionsEnabled(boolean multipleWriteRegionsEnabled)
Legt das Flag fest, um Schreibvorgänge für beliebige Regionen für georeplizierte Datenbankkonten im Azure Cosmos DB-Dienst zu aktivieren.
Wenn der Wert dieser Eigenschaft true ist, leitet das SDK Schreibvorgänge an verfügbare beschreibbare Regionen des georeplizierten Datenbankkontos weiter. Beschreibbare Regionen werden nach der PreferredRegions-Eigenschaft sortiert. Das Festlegen des Eigenschaftswerts auf true hat keine Auswirkungen, bis EnableMultipleWriteRegions in DatabaseAccount ebenfalls auf true festgelegt ist.
DER DEFAULT-Wert ist true, der angibt, dass Schreibvorgänge an die verfügbaren beschreibbaren Regionen des georeplizierten Datenbankkontos weitergeleitet werden.
Parameters:
Returns:
openConnectionsAndInitCaches
public CosmosClientBuilder openConnectionsAndInitCaches(CosmosContainerProactiveInitConfig proactiveContainerInitConfig)
Legt die CosmosContainerProactiveInitConfig fest, die das Aufwärmen von Caches und Verbindungen ermöglicht, die mit Containern verknüpft sind, die aus getCosmosContainerIdentities() den ersten bevorzugten k-Regionen abgerufen werden, in denen k mit getProactiveConnectionRegionsCount()ausgewertet wird.
Verwenden der -Klasse zum Instanziieren CosmosContainerProactiveInitConfig der CosmosContainerProactiveInitConfigBuilder Klasse
Parameters:
Returns:
permissions
public CosmosClientBuilder permissions(List
Legt die Berechtigungsliste fest, die die Ressourcentoken enthält, die für den Zugriff auf Ressourcen erforderlich sind.
Parameters:
Returns:
preferredRegions
public CosmosClientBuilder preferredRegions(List
Legt die bevorzugten Regionen für georeplizierte Datenbankkonten fest. Beispiel: "USA, Osten" als bevorzugte Region.
Wenn EnableEndpointDiscovery true ist und PreferredRegions nicht leer ist, verwendet das SDK die Regionen im Container lieber in der Reihenfolge, in der sie zum Ausführen von Vorgängen angegeben werden.
Wenn EnableEndpointDiscovery auf false festgelegt ist, wird diese Eigenschaft ignoriert.
Parameters:
Returns:
readRequestsFallbackEnabled
public CosmosClientBuilder readRequestsFallbackEnabled(boolean readRequestsFallbackEnabled)
Legt fest, ob Lesevorgänge in mehrere Regionen gelangen sollen, die für ein Konto des Azure Cosmos DB-Diensts konfiguriert sind.
DER DEFAULT-Wert ist true.
Wenn diese Eigenschaft nicht festgelegt ist, ist der Standardwert true für alle anderen Konsistenzebenen als bounded Staleness. Der Standardwert ist false für Bounded Staleness. 1. #endpointDiscoveryEnabled ist wahr 2. Das Azure Cosmos DB-Konto verfügt über mehrere Regionen
Parameters:
Returns:
resourceToken
public CosmosClientBuilder resourceToken(String resourceToken)
Legt ein Ressourcentoken fest, das zum Durchführen der Authentifizierung für den Zugriff auf die Ressource verwendet wird.
Parameters:
Returns:
sessionCapturingOverrideEnabled
public CosmosClientBuilder sessionCapturingOverrideEnabled(boolean sessionCapturingOverrideEnabled)
Die Sitzungserfassung ist standardmäßig für SESSIONaktiviert. Für andere Konsistenzebenen ist es nicht erforderlich, es sei denn, Sie müssen gelegentlich Anforderungen mit Sitzungskonsistenz senden, während der Client nicht in der Sitzung konfiguriert ist.
Das Aktivieren der Sitzungserfassung für den Sitzungsmodus hat keine Auswirkungen.
Parameters:
Returns:
sessionRetryOptions
public CosmosClientBuilder sessionRetryOptions(SessionRetryOptions sessionRetryOptions)
Legt die SessionRetryOptions instance auf dem Client fest.
Diese Einstellung hilft bei der Optimierung des Wiederholungsverhaltens, das mit NOT_FOUND / READ_SESSION_NOT_AVAILABLE
oder 404 / 1002
Szenarien verknüpft ist, die auftreten, wenn die von der Anforderung verwendete zielorientierte Konsistenz Sitzungskonsistenz ist und eine Anforderung an eine Region gesendet wird, die nicht über genügend aktuelle Daten verfügt, nach denen die Anforderung sucht.
HAFTUNGSAUSSCHLUSS: Die Einstellung SessionRetryOptions ändert das Wiederholungsverhalten für alle Vorgänge oder Workloads, die über diese instance des Clients ausgeführt werden.
Für Konten mit mehreren Schreibvorgängen:
- Für eine Leseanforderung, die an eine lokale Leseregion wechselt, ist es möglich, die Verfügbarkeit zu optimieren, indem die Anforderung für eine andere Schreibregion wiederholt wird, da die andere Schreibregion möglicherweise aktuellere Daten enthält.
- Bei einer Leseanforderung, die an eine lokale Schreibregion wechselt, kann es hilfreich sein, sofort in eine andere Schreibregion zu wechseln, sofern die lokale Schreibregion nicht über die aktuellsten Daten verfügt.
- Wenn eine Schreibanforderung an eine lokale Schreibregion wechselt, kann es hilfreich sein, sofort in eine andere Schreibregion zu wechseln, sofern die lokale Schreibregion nicht über die aktuellsten Daten verfügt.
Für Konten mit einmaligem Schreibvorgang:
- Wenn eine Leseanforderung an eine lokale Leseregion wechselt, hilft es, schneller zur Schreibregion zu wechseln.
- Wenn eine Leseanforderung an einen Schreibbereich wechselt, spielt die SessionRetryOptions Einstellung keine Rolle, da der Schreibbereich in einem Konto mit einmaligem Schreibvorgang die aktuellsten Daten enthält.
- Beim Schreiben in einen Schreibbereich in einem Konto mit einmaligem Schreibzugriff gelten keine Fehler,
READ_SESSION_NOT_AVAILABLE
da der Schreibbereich immer über die neueste Version der Daten verfügt und alle Schreibvorgänge an das primäre Replikat in dieser Region gehen. Daher sind Replikationsverzögerungen, die Fehler verursachen, hier nicht anwendbar.
Informationen zu Regionswechselhinweisen:
- Verwenden Sie den Hinweis, um die lokale Region für Wiederholungen zu priorisieren. LOCAL_REGION_PREFERRED
- Verwenden Sie den Hinweis, um Wiederholungsversuche schneller in eine andere/Remoteregion zu verschieben. REMOTE_REGION_PREFERRED
Unterstützte Vorgänge:
- Lesen
- Abfrage
- Erstellen
- Replace
- Upsert
- Löschen
- Patch
- Batch
- Massenvorgang
Parameters:
Returns:
throttlingRetryOptions
public CosmosClientBuilder throttlingRetryOptions(ThrottlingRetryOptions throttlingRetryOptions)
Legt die Wiederholungsrichtlinienoptionen fest, die dem DocumentClient-instance zugeordnet sind.
Eigenschaften in der RetryOptions-Klasse ermöglichen es der Anwendung, die integrierten Wiederholungsrichtlinien anzupassen. Diese Eigenschaft ist optional. Wenn es nicht festgelegt ist, verwendet das SDK die Standardwerte zum Konfigurieren der Wiederholungsrichtlinien. Weitere Informationen finden Sie unter RetryOptions-Klasse.
Parameters:
Returns:
userAgentSuffix
public CosmosClientBuilder userAgentSuffix(String userAgentSuffix)
legt den Wert des Suffixs user-agent fest.
Parameters:
Returns:
Gilt für:
Azure SDK for Java