Este tutorial muestra cómo configurar un entorno de desarrollo Java en Windows. Se utiliza IntelliJ IDEA como ejemplo.
¿Qué es un entorno de desarrollo Java?
Un entorno de desarrollo Java es un conjunto de herramientas y configuraciones para desarrollar aplicaciones Java. Incluye un Java Development Kit (JDK), un entorno de desarrollo integrado (IDE) como IntelliJ IDEA, Eclipse o VSCode, y herramientas de compilación como Maven.
Instalar el JDK
Para conocer los pasos detallados, consulte Install the JDK on Windows.
Instalar un IDE
Esta guía utiliza IntelliJ IDEA Community como ejemplo. Vaya a la página de descarga de IntelliJ IDEA Community, haga clic en Download y siga el asistente de instalación.
Importante
Durante la instalación, en el paso Installation Options, seleccione la casilla Add "bin" folder to the PATH. En todos los demás pasos, haga clic en Next para aceptar la configuración predeterminada.
Crear un proyecto de Maven
-
Abra IntelliJ IDEA y haga clic en New Project.
Un proyecto proporciona un entorno integral para todo el ciclo de vida del desarrollo de software. Abarca desde la codificación y las pruebas hasta la compilación, la ejecución y el despliegue. Esto le permite gestionar su aplicación de manera eficiente.
-
En la ventana New Project, seleccione Java en el panel izquierdo y configure los siguientes parámetros:
Name: introduzca un nombre para su proyecto. Este ejemplo utiliza helloaliyun.
Location: especifique el directorio donde desea guardar su proyecto.
Build system: seleccione Maven para crear un proyecto de Maven.
JDK: seleccione la versión de JDK que prefiera. Este ejemplo utiliza JDK 8.
Nota
Para seleccionar un JDK, haga clic en Add JDK... y vaya al directorio de instalación del JDK que instaló.
Add sample code: seleccione esta casilla para crear automáticamente una clase Main.
-
Haga clic en Create.
Se crea un proyecto llamado helloaliyun. Contiene un archivo pom.xml básico, un directorio de origen src/main/java y una clase llamada Main.
-
Compruebe la configuración.
En el directorio src/main/java, vaya al paquete org.example y busque la clase Main. Haga doble clic en el nombre de la clase para abrir el archivo y luego haga clic en el icono Run en la esquina superior derecha.
Revise la consola para verificar que aparezca el resultado Hello world!. Si se muestra este mensaje, su entorno de desarrollo Java está configurado correctamente.
Ejemplo de salida:
"D:\Program Files\Java\jdk-1.8\bin\java.exe" ...
Hello world!
Process finished with exit code 0
Siguientes pasos
Ahora que su entorno de desarrollo Java está configurado, puede explorar sus aplicaciones prácticas. A continuación se presentan casos de uso y guías para diversas tareas de desarrollo en Java.
1. Llamar a Alibaba Cloud OpenAPI mediante el SDK de Java
-
Para realizar una llamada a la API, primero debe obtener un par de AccessKey que utilizará como credencial de acceso. Se recomienda usar el par de AccessKey de un usuario de RAM. Para más información, consulte Create an AccessKey pair for a RAM user.
Inicie sesión en el SDK Center y seleccione el producto que desea utilizar. Este ejemplo utiliza la API DescribeInstanceTypeFamilies de ECS.
En la pestaña Parameters, configure los parámetros. Consulte la pestaña Document ubicada a la derecha para ver la descripción de la API, las notas de uso (especialmente la información de facturación) y los detalles sobre el significado y uso de cada parámetro. Por ejemplo, al utilizar la API DescribeInstanceTypeFamilies, establezca el parámetro obligatorio RegionId en cn-qingdao para China (Qingdao) y el parámetro opcional Generation en ecs-5 para la familia de instancias de la serie V. La pestaña Document proporciona más detalles sobre cada parámetro de solicitud, como su tipo, si es obligatorio y ejemplos de valores.
En la pestaña SDK Sample, seleccione Java y haga clic en Download Project para descargar el proyecto del SDK y descomprímalo.
-
Código de ejemplo:
import com.aliyun.ecs20140526.Client;
import com.aliyun.ecs20140526.models.DescribeInstanceTypeFamiliesRequest;
import com.aliyun.ecs20140526.models.DescribeInstanceTypeFamiliesResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.teaopenapi.models.Config;
import com.google.gson.Gson;
public class Sample {
public static void main(String[] args) {
try {
Config config = new Config()
// System.getenv retrieves the key from an environment variable.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
config.endpoint = "ecs-cn-hangzhou.aliyuncs.com";
Client client = new Client(config);
DescribeInstanceTypeFamiliesRequest describeInstanceTypeFamiliesRequest = new DescribeInstanceTypeFamiliesRequest();
describeInstanceTypeFamiliesRequest.setRegionId("cn-qingdao");
describeInstanceTypeFamiliesRequest.setGeneration("ecs-5");
DescribeInstanceTypeFamiliesResponse describeInstanceTypeFamiliesResponse = client.describeInstanceTypeFamilies(describeInstanceTypeFamiliesRequest);
System.out.println(new Gson().toJson(describeInstanceTypeFamiliesResponse));
} catch (TeaException teaException) {
// Print the error code.
System.out.println(teaException.getCode());
// Print the error message, which includes the RequestId.
System.out.println(teaException.getMessage());
// Print the specific error content returned by the server.
System.out.println(teaException.getData());
} catch (Exception e) {
TeaException error = new TeaException(e.getMessage(), e);
// Error message.
System.out.println(error.getMessage());
// Diagnostic address.
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}
-
Resultado: después de ejecutar el código, la API devuelve un statusCode de 200, lo que indica que la llamada fue exitosa. El cuerpo de la respuesta contiene una lista de familias de instancias en el campo InstanceTypeFamilies. El siguiente fragmento muestra parte de la respuesta:
...'statusCode': 200, 'body': {'InstanceTypeFamilies': {'InstanceTypeFamily': [{'Generation': 'ecs-5', 'InstanceTypeFamilyId': 'ecs.g6'}, {'Generation': 'ecs-5', 'InstanceTypeFamilyId': 'ecs.ebmg6'}]}}
Para más información sobre cómo usar el SDK de Java para llamar a Alibaba Cloud OpenAPI, consulte Use the Alibaba Cloud SDK for Java in an IDE.
2. Llamar a la API de Qwen para implementar una función conversacional
-
Alibaba Cloud Model Studio le permite llamar a un modelo grande mediante una API. Proporciona varios métodos de acceso, incluida una API compatible con OpenAI y el SDK de DashScope. Para llamar al servicio, primero active Alibaba Cloud Model Studio y obtenga una clave de API. Para más información, consulte Account Settings.
Importante
Después de obtener una clave de API, configúrela como variable de entorno. Esto evita codificar la clave directamente en su aplicación y reduce el riesgo de filtraciones. Para consultar las instrucciones, vea Configure an API key as an environment variable.
-
Agregue la siguiente dependencia a su archivo pom.xml para instalar el SDK de DashScope para Java:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dashscope-sdk-java</artifactId>
<!-- Replace 'the-latest-version' with the latest version from https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java -->
<version>the-latest-version</version>
</dependency>
-
Una vez instalados los SDK de Java y de DashScope, ejecute el siguiente código de ejemplo para llamar a la API de Qwen:
package org.example.nlp.ai;
import java.util.Arrays;
import java.lang.System;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
public class Sample {
public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
Generation gen = new Generation();
Message systemMsg = Message.builder()
.role(Role.SYSTEM.getValue())
.content("You are a helpful assistant.")
.build();
Message userMsg = Message.builder()
.role(Role.USER.getValue())
.content("Who are you?")
.build();
GenerationParam param = GenerationParam.builder()
// System.getenv retrieves the API key from an environment variable. If you have not configured the environment variable, replace the following line with .apiKey("sk-xxx") and use your API key from Alibaba Cloud Model Studio.
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen-plus")
.messages(Arrays.asList(systemMsg, userMsg))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
return gen.call(param);
}
public static void main(String[] args) {
try {
GenerationResult result = callWithMessage();
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.err.println("Error message: " + e.getMessage());
}
System.exit(0);
}
}
-
Resultado: después de ejecutar el código, debería ver una salida similar a la siguiente:
15:44:00.413 [main] DEBUG com.alibaba.dashscope.protocol.okhttp.OkHttpClientFactory - [connectionPool Config] connectionPoolSize: 32
15:44:00.468 [main] DEBUG com.alibaba.dashscope.protocol.okhttp.OkHttpClientFactory - [connectionPool Config] maxRequests: 32
15:44:00.468 [main] DEBUG com.alibaba.dashscope.protocol.okhttp.OkHttpClientFactory - [connectionPool Config] maxRequestsPerHost: 32
I am Qwen, a large language model developed by the Tongyi Lab at Alibaba Group. I can answer questions, create content such as stories, official documents, emails, scripts, and poems, and perform logical reasoning, programming, and even play games. I am proficient in multiple languages and can provide you with a wide range of assistance. If you have any questions or need to create content
Para más información sobre cómo llamar a la API de Qwen, consulte Use the DashScope SDK for Java.
3. Llamar a la API de DeepSeek
Esta sección describe cómo llamar a los modelos de DeepSeek mediante las API en la plataforma de Alibaba Cloud Model Studio. Los modelos deepseek-r1 y deepseek-v3 ofrecen 1 millón de tokens gratuitos cada uno, y algunos modelos destilados están disponibles en una prueba gratuita por tiempo limitado.
-
Para llamar al servicio, primero active Alibaba Cloud Model Studio y obtenga una clave de API. Para más información, consulte Account Settings.
Importante
Después de obtener una clave de API, configúrela como variable de entorno. Esto evita codificar la clave directamente en su aplicación y reduce el riesgo de filtraciones. Para consultar las instrucciones, vea Configure an API key as an environment variable.
-
Agregue la siguiente dependencia a su archivo pom.xml para instalar el SDK de DashScope para Java:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dashscope-sdk-java</artifactId>
<!-- Replace 'the-latest-version' with the latest version from https://mvnrepository.com/artifact/com.alibaba/dashscope-sdk-java -->
<version>the-latest-version</version>
</dependency>
Importante
La versión del SDK de DashScope debe ser la 2.18.2 o posterior.
-
Una vez instalados los SDK de Java y de DashScope, ejecute el siguiente código de ejemplo para llamar al servicio del modelo de DeepSeek:
import java.util.Arrays;
import java.lang.System;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
public class Sample {
public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
Generation gen = new Generation();
Message userMsg = Message.builder()
.role(Role.USER.getValue())
.content("Which is larger: 9.9 or 9.11?")
.build();
GenerationParam param = GenerationParam.builder()
// If you have not configured an environment variable, replace the following line with .apiKey("sk-xxx") and use your API key from Alibaba Cloud Model Studio.
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("deepseek-r1")
.messages(Arrays.asList(userMsg))
// Do not set this to "text".
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
return gen.call(param);
}
public static void main(String[] args) {
try {
GenerationResult result = callWithMessage();
System.out.println("Reasoning:");
System.out.println(result.getOutput().getChoices().get(0).getMessage().getReasoningContent());
System.out.println("Final answer:");
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
// Use a logging framework to record exception information.
System.err.println("An error occurred while calling the generation service: " + e.getMessage());
}
System.exit(0);
}
}
-
Revise la salida.
Reasoning:
Hmm, the user is asking which is larger, 9.9 or 9.11. This looks simple, but it may need careful analysis, especially how the numbers are interpreted. First, I should confirm whether the user means decimals or something else, like version numbers or dates. But as a common math question, it should be a decimal comparison.
First, I need to clarify the structure of these numbers. 9.9 is usually 9 plus 0.9, which is 9.90. 9.11 is 9 plus 0.11. The integer parts are both 9, so I compare the fractional parts: 0.90 and 0.11. Clearly, 0.90 is greater than 0.11, so 9.9 is larger than 9.11. However, a common confusion happens when the numbers are treated as version numbers, such as software versions.
But the user may have a different context. If treated as a version number, 9.11 can mean version 9, update 11, while 9.9 means version 9, update 9, and then 9.11 is greater. So I may need to confirm the context, but as a standard decimal comparison, 9.9 is larger.
Final answer:
When comparing 9.9 and 9.11 as **decimal numbers**:
- Treat 9.9 as 9.90, so the fractional part is 0.90.
- The fractional part of 9.11 is 0.11.
- Since **0.90 > 0.11**, **9.9 > 9.11**.
If you mean **version numbers** (such as software versions):
- 9.11 can mean the 11th update of version 9, while 9.9 is the 9th update, so **9.11 > 9.9**.
**By default, as decimals, 9.9 is larger.**