Este tutorial demonstra como configurar um ambiente de desenvolvimento Java no Windows, utilizando o IntelliJ IDEA como exemplo.
O que é um ambiente de desenvolvimento Java?
Um ambiente de desenvolvimento Java consiste em um conjunto de ferramentas e configurações destinadas à criação de aplicações Java. Ele inclui o Java Development Kit (JDK), um ambiente de desenvolvimento integrado (IDE) como IntelliJ IDEA, Eclipse ou VSCode, e ferramentas de build como o Maven.
Instale o JDK
Para obter as etapas detalhadas, consulte Instalar o JDK no Windows.
Instale uma IDE
Este guia utiliza o IntelliJ IDEA Community como exemplo. Acesse a página de download do IntelliJ IDEA Community, clique em Download e siga o assistente de instalação.
Importante
Durante a instalação, na etapa Installation Options, marque a caixa de seleção Add "bin" folder to the PATH. Nas demais etapas, clique em Next para aceitar as configurações padrão.
Crie um projeto Maven
-
Abra o IntelliJ IDEA e clique em New Project.
Um projeto oferece um ambiente completo para todo o ciclo de vida de desenvolvimento de software — desde a codificação e testes até o build, execução e implantação — facilitando o gerenciamento eficiente da sua aplicação.
-
Na janela New Project, selecione Java no painel à esquerda e defina as seguintes configurações:
Name: Insira um nome para o seu projeto. Este exemplo utiliza helloaliyun.
Location: Especifique o diretório onde deseja salvar o projeto.
Build system: Selecione Maven para criar um projeto Maven.
JDK: Escolha a versão do JDK desejada. Este exemplo utiliza o JDK 8.
Nota
Para selecionar um JDK, clique em Add JDK... e navegue até o diretório de instalação do JDK que você instalou.
Add sample code: Marque esta caixa de seleção para criar automaticamente uma classe Main.
-
Clique em Create.
Um projeto chamado helloaliyun será criado. Ele contém um arquivo pom.xml básico, um diretório de source src/main/java e uma classe chamada Main.
-
Verifique a configuração.
No diretório src/main/java, navegue até o pacote org.example e localize a classe Main. Clique duas vezes no nome da classe para abrir o arquivo e, em seguida, clique no ícone Run no canto superior direito.
Confira no console se a saída exibe Hello world!. Se essa mensagem aparecer, seu ambiente de desenvolvimento Java está configurado corretamente.
Exemplo de saída:
"D:\Program Files\Java\jdk-1.8\bin\java.exe" ...
Hello world!
Process finished with exit code 0
Próximas etapas
Com o ambiente de desenvolvimento Java configurado, você pode explorar suas aplicações práticas. As seções a seguir apresentam casos de uso e guias para diversas tarefas de desenvolvimento Java.
1. Chamar a OpenAPI da Alibaba Cloud usando o SDK para Java
-
Para realizar uma chamada de API, é necessário obter primeiro um par de AccessKey para usar como credencial de acesso. Recomendamos utilizar o par de AccessKey de um usuário RAM. Para mais informações, consulte Criar um par de AccessKey para um usuário RAM.
Faça login no SDK Center e selecione o produto que deseja utilizar. Este exemplo usa a API DescribeInstanceTypeFamilies do ECS.
Na aba Parameters, configure os parâmetros. Consulte a aba Document à direita para ver a descrição da API, notas de uso (especialmente informações de faturamento) e detalhes sobre o significado e uso de cada parâmetro. Por exemplo, ao usar a API DescribeInstanceTypeFamilies, defina o parâmetro obrigatório RegionId como cn-qingdao para China (Qingdao) e o parâmetro opcional Generation como ecs-5 para a família de instâncias série V. A aba Document fornece mais detalhes para cada parâmetro de solicitação, como seu tipo, se é obrigatório e valores de exemplo.
Na aba SDK Sample, selecione Java e clique em Download Project para baixar o projeto do SDK e descompactá-lo.
-
Código de exemplo:
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: Após executar o código, a API retorna um statusCode 200, indicando que a chamada foi bem-sucedida. O corpo da resposta contém uma lista de famílias de instâncias no campo InstanceTypeFamilies. O trecho abaixo mostra parte da resposta:
...'statusCode': 200, 'body': {'InstanceTypeFamilies': {'InstanceTypeFamily': [{'Generation': 'ecs-5', 'InstanceTypeFamilyId': 'ecs.g6'}, {'Generation': 'ecs-5', 'InstanceTypeFamilyId': 'ecs.ebmg6'}]}}
Para mais informações sobre como usar o SDK para Java para chamar a OpenAPI da Alibaba Cloud, consulte Usar o Alibaba Cloud SDK for Java em uma IDE.
2. Chamar a API do Qwen para implementar um recurso de conversação
-
O Alibaba Cloud Model Studio permite chamar um modelo grande por meio de uma API. Ele oferece vários métodos de acesso, incluindo uma API compatível com OpenAI e o DashScope SDK. Para chamar o serviço, ative primeiro o Alibaba Cloud Model Studio e obtenha uma chave de API. Para mais informações, consulte Account Settings.
-
Adicione a seguinte dependência ao seu arquivo pom.xml para instalar o DashScope SDK 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>
-
Após instalar os SDKs para Java e DashScope, execute o seguinte código de exemplo para chamar a API do 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: Após executar o código, você deverá ver uma saída semelhante à seguinte:
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 mais informações sobre como chamar a API do Qwen, consulte Usar o DashScope SDK para Java.
3. Chamar a API do DeepSeek
Esta seção descreve como chamar modelos DeepSeek usando APIs na plataforma Alibaba Cloud Model Studio. deepseek-r1 e deepseek-v3 oferecem, cada um, 1 milhão de tokens gratuitos, e alguns modelos destilados estão disponíveis para teste gratuito por tempo limitado.
-
Para chamar o serviço, ative primeiro o Alibaba Cloud Model Studio e obtenha uma chave de API. Para mais informações, consulte Account Settings.
-
Adicione a seguinte dependência ao seu arquivo pom.xml para instalar o DashScope SDK 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
A versão do DashScope SDK deve ser 2.18.2 ou posterior.
-
Após instalar os SDKs para Java e DashScope, execute o seguinte código de exemplo para chamar o serviço de modelo 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);
}
}
-
Analise a saída.
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.**