Azure Functions com Java no IntelliJ

Renicius Pagotto Fostaini
7 min readSep 28, 2022

--

E ai pessoal, tudo bem com vocês?

Dando continuidade na série sobre Azure Functions, no post de hoje vamos mostrar uma implementação do Azure Functions com o Java e posteriormente realizar a implantação (Deploy) no Azure.

Caso não tenha visto o post anterior sobre Azure Functions, esse é o link de acesso. Confere lá!

Pré-requisitos

Antes de tudo, precisamos preparar nosso ambiente com algumas ferramentas e Java SDK, são eles:

Azure Functions Core Tools

Para entendermos melhor o que essa biblioteca oferece, vamos pegar a própria definição do GitHub do projeto.

O Azure Functions Core Tools fornece uma experiência de desenvolvimento local para criar, desenvolver, testar, executar e depurar o Azure Functions.

Implementação

Em nossa implementação, estarei utilizando o IntelliJ 2022 e o Java 11 do Eclipse Adoptium.

Para iniciar o desenvolvimento, é necessário primeiramente instalar o Plugin Azure Toolkit for IntelliJ que oferecerá todo o suporte necessário para o desenvolvimento da nossa função junto ao IntelliJ e também auxiliará no processo de deployment.

Para isso, abra o IntelliJ e na opção Plugins procure por Azure Toolkit for IntelliJ e execute a instalação.

Após a instalação e reinicialização do IntelliJ, clique em New Project, escolha a opção Azure Functions no menu lateral esquerdo, escolha o SDK do Java 11 e escolha o tipo da função, para a implementação de hoje devemos escolher o tipo Http Trigger e clique em Next.

Na próxima página vamos escolher o Maven, porém é possível escolher o Gradle também, entretanto existem algumas particularidades na implementação utilizando o Gradle que não abordaremos nesse post.

Para o restante das informações, sinta-se livre para nomear do jeito que desejar, no nosso caso deixarei a nomenclatura padrão.

Nessa última pagina, é necessário nomear o nosso projeto e também definir a localização do projeto dentro do seu computador.

Finalizado toda essa configuração inicial, uma implementação básica de uma função com uma trigger HTTP será exibida, sendo suficiente para a nossa demonstração.

Assim como no .NET, no Java temos um template básico de função no qual recebe uma requisição HTTP GET ou POST e retorna uma informação. Perceba que nessa implementação, o nosso código está esperando alguma informação vindo da query string, caso encontre essa informação uma mensagem é retornada, caso não encontrada a informação um outro tipo de mensagem é retornado informando para você passar algum parâmetro via query string.

Com a nossa função basicamente pronta, vamos para a execução local, porém é necessário realizar a criação de um profile de execução. Para isso, clique na opção Current File no topo do IntelliJ à direita e em Edit Configurations.

Uma nova página será exibida sem qualquer tipo de configuração, para criar uma nova configuração clique em + no canto superior direito e escolha a opção Azure Functions.

Na próxima tela é onde configuramos a execução da nossa aplicação e algumas informações devem ser preenchidas conforme demonstrado na imagem abaixo.

Name: Nome dado para a nossa configuração/profile.

Module: Definimos a aplicação que será executada.

Function CLI: É o caminho do diretório onde o Azure Functions Core Tools foi instalado.

App Settings: Definição das variáveis de configuração da nossa função/aplicação, por padrão as variáveis FUNCTIONS_WORKER_RUNTIME e AzureWebJobsStorage já devem estar definidas, precisamos apenas adicionar a variável JAVA_HOME e o seu valor será o caminho do diretório do Java SDK em nossa máquina. Na nossa implementação devemos informar o caminho do Java 11.

Feito isso, finalizamos a nossa configuração e estamos prontos para a execução. Clique no ícone de execução e quando a função estiver pronta e rodando, uma URL será exibida.

Com isso temos a nossa função sendo executada localmente e sem muitas complicações. Caso deseje realizar uma requisição HTTP para a função, utilize a URL fornecida sendo opcional parâmetro “name” da query string.

Especificando o versão do Java para deployment

Podemos controlar a versão do Java para implantação no Azure através do arquivo pom.xml utilizando as tags Java.version e JavaVersion. As versões suportadas para deployment são o Java 8 e 11 e os valores possíveis para essa tag estão exibidos na imagem abaixo.

Em nossa implementação, o pom.xml está definido para a utilização do Java 11.

Implantação no Azure

Com a função implementada e sendo executada corretamente, vamos entrar na parte do deployment.

Para iniciar o deployment da nossa função, no IntelliJ escolha a opção Tools -> Azure ->Azure Sign In para realizar a configuração da sua conta do Azure no IntelliJ.

Um nova tela com diferentes opções de autenticação será exibida, vamos escolher a opção OAuth 2.0 para realizar a autenticação via navegador.

Com a autenticação finalizada, precisamos selecionar a subscription da nossa conta do Azure que vamos utilizar para o deploy.

Feito isso, selecione a opção Azure Explorer no menu lateral esquerdo, faça a expansão da opção Azure, em seguida clique com o botão direito na opção Function App e por fim clique em + Create para realizar a criação de uma função no Azure.

Na tela de criação de uma nova Azure Functions, devemos fornecer o nome da nossa função que pode ser diferente do nome do nosso projeto e escolher a plataforma de execução, nesse caso escolheremos o Windows-Java 11-Java SE, por fim clique em OK para iniciar o processo de criação.

Finalizada a criação do nosso Azure Functions, vamos agora realizar finalmente o deploy da nossa função.

Na opção do Azure Functions que acabamos de criar e que representa sua instância sendo executada, clique com o botão direito e selecione a opção Deploy.

Na tela de deploy no Azure, não vamos alterar nenhuma informação e não vamos passar nenhuma variável adicional, pois o Azure configura tudo automaticamente, porém caso sua função necessite utilizar alguma variável específica, é so adicionar essa variável na parte de App Settings. Ao final, clique na opção Run para iniciar o deploy da função.

Após a finalização do deploy da função, uma URL é disponibilizada para interação com a função que está sendo executada no Azure.

Com isso finalizamos a implementação de uma Azure Functions utilizando o Java e realizamos o deploy via IntelliJ dessa função utilizando o plugin Azure Toolkit for IntelliJ.

E ai, gostou desse post? Quer conversar um pouco mais sobre Azure Functions com Java? Deixe um comentário com suas dúvidas e idéias ou entre em contato comigo através do LinkedIn.

GitHub: reniciuspagotto/azure-functions-java-intellij (github.com)

Referências

Java JDKs support for Azure development | Microsoft Learn

https://learn.microsoft.com/en-us/azure/azure-functions/functions-reference-java

--

--