freshidea - Fotolia
Tutorial: Wie Sie mit Java in Microsoft Azure entwickeln
Entwickler können die von ihnen bevorzugte Java-Distribution und -Version verwenden, um auf Azure-Dienste zuzugreifen. Eine Bereitstellung der Java-Instanz ist ebenfalls möglich.
Java-Entwickler, die Anwendungen in Azure bereitstellen oder zugehörige Dienste nutzen möchten, können auf ein breites Portfolio zugreifen. Es ist unter anderem möglich, aus einer Java-App heraus, die über Azure zur Verfügung gestellt wird, auf Azure SQL-Datenbanken zuzugreifen.
Wie die Entwicklung mit Java in Azure im Detail funktioniert, wird im Microsoft-Artikel Erste Schritte bei der Cloudentwicklung mit Java in Azure erläutert. Hier werden unter anderem Beispiele genannt, wie sich Java-Apps mit Azure SQL-Datenbanken verknüpfen lassen. Azure unterstützt verschiedene Java-Distributionen, darunter Microsoft Build of OpenJDK und Eclipse Temurin für JDK 8, und alle Java-Versionen.
Java in Microsoft Azure einsetzen
Viele Cloud-Dienste, aber auch Azure Arc als Schnittstelle zum lokalen Rechenzentrum, sowie Azure Stack HCI, unterstützen Java. Microsoft stellt für verschiedene Azure-Dienste die Java-Runtime bereit. Dazu gehören:
- Azure App Service unter Windows
- Azure App Service unter Linux
- Azure Functions
- Azure Spring Apps
- Azure Service Fabric
- Azure HDInsight
- Azure Cognitive Search
- Azure Cloud Shell
- Azure DevOps
In der Dokumentation der einzelnen Dienste findet man mehr Informationen darüber, auf was man bei der Java-Entwicklung achten muss. Um etwa Azure Cognitive Services in die eigene Anwendung zu integrieren, kann man folgenden Beispielcode verwenden:
import com.microsoft.azure.cognitiveservices.search.imagesearch.*;
import com.microsoft.azure.cognitiveservices.search.imagesearch.models.*;
public class AzureCognitiveServicesExample {
public static void main(String[] args) {
try {
// Verbindung zum Azure Cognitive Services-Endpunkt herstellen
String endpoint = "https://<service-name>.cognitiveservices.azure.com/";
String key = "<subscription-key>";
ImagesearchClient client = new ImagesearchClientBuilder()
.endpoint(endpoint)
.credential(new CognitiveServicesCredentials(key))
.buildClient();
// Eine Bildsuche durchführen
Images imageResults = client.images().search("<query>");
// Ergebnisse verarbeiten
for(ImageObject imageObject : imageResults.value()) {
System.out.println("Name: " + imageObject.name());
System.out.println("URL: " + imageObject.contentUrl());
System.out.println("Thumbnail-URL: " + imageObject.thumbnailUrl());
}
} catch (Exception e) {
// Fehlerbehandlung
System.err.println("Fehler: ");
}
Java-Programme können – wenn nötig – auf Azure Cloud Storage zugreifen und eigene Blobs erstellen. Der Code dazu lautet beispielsweise:
import com.microsoft.azure.storage.CloudStorageAccount;
import com.microsoft.azure.storage.blob.CloudBlobClient;
import com.microsoft.azure.storage.blob.CloudBlobContainer;
public class AzureBlobExample {
public static void main(String[] args) {
try {
// Verbindung zum Azure-Blobspeicher herstellen
String storageConnectionString = "DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>";
CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);
CloudBlobClient blobClient = storageAccount.createCloudBlobClient();
// Einen neuen Container erstellen
CloudBlobContainer container = blobClient.getContainerReference("<container-name>");
container.createIfNotExists();
System.out.println("Container " + container.getName() + " wurde erfolgreich erstellt.");
} catch (Exception e) {
// Fehlerbehandlung
System.err.println("Fehler: " + e.getMessage());
}
}
}
Generell unterstützt Microsoft Lösungen von Drittherstellern. Es ist aber empfehlenswert, bei der Entwicklung mit Java in Azure entweder auf Eclipse Adoptium Temurin oder Microsoft Build of OpenJDK zu setzen. Hier sind Kompatibilität und maximale Unterstützung garantiert.
Einstieg in die Java-Entwicklung in Azure
Um mit Java zu entwickeln, sollte der lokale Rechner und das jeweilige Azure-Abonnement vorbereitet werden. Zunächst ist die Einrichtung der Azure Cloud Shell oder der Einsatz Azure CLI notwendig. Kommt Azure CLI zum Einsatz, ist außerdem die Einrichtung von Apache Maven erforderlich. In der Azure Cloud Shell sind Java und Maven bereits integriert.
Wenn Java-Anwendungen Rechte zum Lesen und Schreiben benötigen, macht es Sinn, einen Dienstprinzipal einzurichten, den die Java-Anwendung für die Kommunikation mit dem Azure-Abonnement nutzt. Mit einem Dienstprinzipal lassen sich Konten für Apps erstellen. Der Beispielcode in Azure CLI lautet:
az ad sp create-for-rbac --name AzureJavaTesT --role Contributor --scopes /subscriptions/86733e9ec8-c6309-4535-8a17-0b599341158d
Die ID für das Azure-Abonnement lässt sich durch das Suchen des Begriffs Abonnement im Suchfeld des Azure-Portals am schnellsten finden. Diese Daten sind für die Authentifizierung der Java-Apps notwendig. Wie sich diese nutzen lassen, wird bei GitHub genauer erklärt.
Java kann außerdem mit Azure DevOps verwendet werden. Dazu wird beim Erstellen eines neuen Azure DevOps-Projektes Java als Sprache ausgewählt. Java-Anwendungen können in Azure DevOps in neue oder bestehende Build-Pipelines integriert werden. Continuous Integration und Continuous Deployment (CI/CD) wird über die Verknüpfung der Build- und Release-Pipelines ermöglicht. Das stellt sicher, dass Anwendungen automatisch getestet und bereitgestellt werden, sobald Updates enthalten sind.
Java-Beispielanwendung bereitstellen
Microsoft bietet ein Beispielprojekt, das sich direkt aus GitHub über die Azure Cloud Shell bereitgestellen lässt. Dazu wird das Projekt aus GitHub zu Azure geklont und das notwendige Maven-Plug-In konfiguriert:
git clone https://github.com/spring-guides/gs-spring-boot
cd gs-spring-boot/complete
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
Danach startet die Einrichtung über einen textbasierten Assistenten in der Azure CLI oder Azure Cloud Shell. Der Assistent erstellt die Datei pom.xml, die zum Beispiel für Azure App Service verwendet werden kann. Um die Anwendung in Azure bereitzustellen, kommt Maven zum Einsatz:
mvn package azure-webapp:deploy
Neben dieser Beispielanwendung lässt sich mit Java eine Verbindung zu einer Azure SQL-Datenbank herstellen. Der Beispielcode lautet:
import java.sql.*;
public class AzureSQLExample {
// Verbindungsinformationen zur Azure SQL-Datenbank
static final String DATABASE_URL = "jdbc:sqlserver://<server-name>.database.windows.net:1433;database=<database-name>";
static final String DATABASE_USER = "<username>@<server-name>";
static final String DATABASE_PASSWORD = "<password>";
public static void main(String[] args) {
try {
// Treiber registrieren
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// Verbindung zur Datenbank herstellen
Connection conn = DriverManager.getConnection(DATABASE_URL, DATABASE_USER, DATABASE_PASSWORD);
System.out.println("Datenbankverbindung erfolgreich hergestellt.");
// Eine SQL-Abfrage ausführen
Statement statement = conn.createStatement();
String sql = "SELECT * FROM <table-name>";
ResultSet result = statement.executeQuery(sql);
// Ergebnisse verarbeiten
while(result.next()) {
// Ergebnisdaten auslesen
int id = result.getInt("id");
String name = result.getString("name");
double balance = result.getDouble("balance");
// Ergebnisdaten ausgeben
System.out.println("ID: " + id + ", Name: " + name + ", Balance: " + balance);
}
// Ressourcen freigeben
result.close();
statement.close();
conn.close();
} catch (Exception e) {
// Fehlerbehandlung
System.err.println("Fehler: " + e.getMessage());
}
}
}