Quarkus é um framework Java criado para atender às necessidades de desenvolvimento de aplicações modernas baseadas em microsserviços. Neste artigo, vamos explorar a criação e configuração de um projeto em Quarkus, abordando desde a escolha da estrutura de projeto até a configuração do ambiente de desenvolvimento. Você aprenderá a usar as ferramentas disponíveis para criar e configurar seu projeto Quarkus, bem como a executá-lo em diferentes ambientes, como desenvolvimento e produção. Com este guia, você estará pronto para começar a construir suas próprias aplicações Quarkus de forma eficiente e escalável.
Para usar o quarkus você precisará de:
- JAVA JDK 11 ou superior
- IDE Intellij ou compativel com JAVA e Quarkus
- Maven na versão mais atualizada, versões antigas podem não rodar o Quarkus.
É possível gerar um projeto Quarkus a partir deste site
Porém faremos um procedimento usando o MAVEN para gerar o nosso projeto. Então vamos ao passo a passo:
- Acesse o site oficial da aplicação aqui
- Selecione a opção MAVEN
- Já na outra página verifique o script de exemplo para create project:
- Vamos criar o projeto Quarkus usando script que será executado pelo MAVEN:
mvn io.quarkus.platform:quarkus-maven-plugin:2.15.3.Final:create
Onde:
- io.quarkus.platform
(O grupo id da aplicação quarkus, local de origem das dependências) - quarkus-maven-plugin:2.15.3.Final
(A versão do plugin maven que ira instalar o quarkus) - create
(O comando que de fato irá ser executado, no caso create = criar projeto) - Crie o seu comando mvn conforme a sua necessidade e execute em seu workspace usando o PowerShell ou algo similar CMS DOS, ou ainda GitBash, por exemplo.
Nota: O workspace pode ser qualquer pasta, de preferência vazia, que tenha permissão de leitura e escrita.
Nosso comando ficou assim:
mvn io.quarkus.platform:quarkus-maven-plugin:2.15.3.Final:create
- O Download será inicializado e irá baixar várias dependências do quarkus em seu diretório, algo parecido com o exemplo abaixo:
- Após fazer todo o download será solicitado que você informe o group id
No exemplo deste tutorial iremos usar o group id br.com.quarkus.quiz.generator e o projeto irá se chamar quizz-generator-app
- Então digite o grupo id da sua aplicação neste local – no nosso caso será br.com.quarkus.quiz.generator
- Aperte Enter e em seguida será solicitado que insira o nome do projeto (ArtifactId). Insira o nome que faça sentido para o seu projeto, no nosso caso será o quizz-generator-app
- Aperte enter e será solicitado que você informe a versão do projeto, como é um projeto novo iremos colocar 1.0.0
- Ao pressionar Enter e ir para o próximo passo, o assistente irá solicitar a lista de extensões que você deseja colocar no seu projeto, ou seja, as dependências que irão aparecer no seu pom.xml. Porém, no nosso caso, iremos deixar esse campo em branco e pressionar enter, e só depois colocaremos as dependências de maneira manual. Apenas pressione Enter para continuar!
- Para finalizar, o assistente pergunta se ao gerar o projeto você quer que seja gerado algum código de exemplo. Para esse nosso tutorial escolha a opção yes
Pode ser que ocorra algum erro ao executar o último procedimento, algo como mostrado na imagem abaixo:
Porém o projeto será gerado mesmo com a apresentação de exceptions na tela. Ignore esse erro e verifique se o projeto está no seu diretório.
- Se estiver no PowerShell ou Git Brash digite ls e pressione enter para verificar se o seu projeto foi criado
- Ao acessar a pasta do projeto (cd nome-do-projeto) e solicitar para listar os arquivos (ls), podemos ver toda a estrutura do projeto criado
- Ponto importante que iremos usar nesse projeto
Repare que o projeto criou uma pasta chamada mvnw ou seja, é o nosso maven warpper, que significa que é um maven atrelado a aplicação para que este sempre tenha um maven na mesma versão. Nós iremos sempre usar esse maven para controlar essa aplicação, desta forma evitamos problemas de incompatibilidade com o versões futuras do maven.
- Enfim vamos executar nossa aplicação pela primeira vez em modo de desenvolvimento. Para isso precisamos executar o comando mvn compile quarkus:dev dentro da pasta raiz do projeto. Repare que usamos o mvn, ou seja, nesse caso iremos usar o nosso maven da máquina e não o do projeto.
- Insira o comando a seguir e digite Enter, isso poderá demorar um poupo pois várias dependências serão baixadas
mvn compile quarkus:dev
- Ao termino de todo o download será apresentada uma interface próxima a da imagem a seguir:
- Uma vantagem do quarkus: o hot deployment
Nesse momento nossa aplicação já está no ar, e uma coisa bem legal é saber que como existe um hot deployment, toda a modificação feita no Quarkus será atualizada em tempo de execução, sem precisar recarregar o sistema como acontece no caso do Springboot ou Spring MVC. - Abra o navegador e digite a seguinte url para visualizar a pagina inicial do seu projeto: localhost:8080
Como podemos ver a aplicação está rodando perfeitamente no navegador. Caso tenha problemas ao subir a aplicação, verifique se a porta 8080 não está em uso em localhost
- A interface do Quarkus é bem legal! Tanto que conseguimos até verificar que existe uma página de RestEasy com um hello world em nossa aplicação. Repare nas últimas linhas do lado esquerdo e clique no link /hello. Você será redirecionado para uma página rest, isso já é uma controller feita no seu projeto com uma estrutura REST.
- Será direcionado para:
Inserindo o projeto ja IDE Intellij
- Ao abrir a IDE pela primeira vez, algo próximo ao apresentado na imagem a seguir irá aparecer para você. Note que na imagem de exemplo já temos dois projetos inseridos na IDE, que são o fist-quarkus-project e message-generator. No seu caso esses projetos não existirão pois são projetos que foram feitos à parte deste tutorial.
- Clique no botão superior do lado direito em OPEN e uma janela será aberta a frente da atual.
Note que na imagem acima a primeira seta mostra o botão que fez abrir o popup de navegação para abrir um projeto já existente – “Open File or Project”. No seu caso navegue até o diretório onde está a sua aplicação Quarkus. Neste tutorial a aplicação está em:
C:\Development\WorkspaceQuarkus\quizz-generator-app
Tenha ciência de que, no seu caso, a pasta não será essa. Estará no local aonde você criou e subiu o projeto via PowerShell, caso não lembre do caminho volte até o PowerShell e verifique o caminho da sua aplicação.
Repare que o campo em destaque tem o mesmo caminho que em minha IDE na seta do meio. Navegue em seu sistema operacional até chegar na pasta do seu sistema.
- Clique sobre a pasta do projeto para ela ficar selecionada e em seguida clique no botão Ok na parte inferior direita.
Nota:
Não abra a pasta do projeto, apenas clique sobre ela e em OK. Queremos que a IDE reconheça tudo que está dentro da pasta do projeto, por tal motivo não podemos clicar em um arquivo único.
- Se tudo correu bem, a sua aplicação será carregada como a imagem abaixo. Note que precisamos aguardar o intellij fazer o carregamento de algumas coisas, conforme informado nas setas vermelhas da próxima imagem.
- Repare que a aplicação já abre com o README.md, e mostra até como podemos subir o Quarkus da maneira correta. Tudo isso logo na nossa pagina de boas vindas!
Pronto! nossa aplicação foi criada e está pronta para receber códigos!
Usando o quarkus dentro do Intellij:
- Feche o PowerShell anteriormente aberto, ou seja, encerre o Quarkus via PowerShell, pois iremos usar ele agora via intellij e para isso não podemos ter dois aplicativos funcionando ao mesmo tempo.
Observação:
Repare que, diferente do SpringBoot, não temos uma classe de starter com um main. Normalmente no SpringBoot temos uma classe com o mesmo nome do projeto e, dentro dela uma estrutura main para subir o projeto Spring. Como estamos usando Quarkus, isso não existe aqui.
Como podemos ver, não temos a classe com o nome do projeto como seria no SpringBoot
Inserindo dependências no projeto Quarkus
Normalmente projetos modernos em JAVA dão a possibilidade de baixar as dependências do Maven usando o Maven repository. Em uma breve pesquisa no Google, se quisermos baixar o hibernate core para conexão com o banco de dados, por exemplo, acessamos o site do Maven e baixamos a última versão.
- Ao acessar o site se escolhe uma versão:
- E inserindo o XML da dependência no pom.xml, teremos a dependência em nosso projeto. Quem está familiarizado com SpringBoot, já conhece esse processo.
- Porém em quarkus temos uma forma diferente de baixar essas mesmas dependências, usando o comando:
mvnw quarkus:list-externsions
Nós conseguimos ter acesso a lista de extensões, que nada mais são do que o nome dado no Quarkus para as dependências do arquivo pom.xml.
- Voltando ao Intellij, iremos rodar o comando mvnw quarkus:list-externsions via terminal da IDE. Caso a ide não tenha o terminal disponível na sua interface acesse: View -> Toll Windows -> Terminal Ou Alt F12 para ativar o terminal na sua IDE
O terminal deverá aparecer na parte inferior esquerda da IDE
Importante!
Antes de continuar, tenha ciência de que o terminal está apontando para a pasta raiz do seu projeto. Às vezes o intellij cria essa “trolagem”, nos atrapalhando um pouquinho se no automático esquecermos que não estamos na pasta do projeto. Então verifique se o intellij está apontando para a pasta do seu projeto, caso não, pegue o endereço e navegue até chegar na pasta raiz do seu projeto.
- O terminal precisa estar na raiz do seu projeto!
- Digite o comando a seguir para listar todas as extenções do quarkus
mvnw quarkus:list-extensions
No meu caso no powerShell só funcionou com o acréscimo de .\ antes do mvnw:
.\mvnw.cmd quarkus:list-extensions
Detalhe: Repare que usamos mvnw e não mvn, ou seja, o Quarkus irá usar o mvnw do projeto e não o Maven configurado do seu sistema, desta forma o uso será sempre acessando o Maven interno da aplicação.
- Como podemos ver rodando o comando .\mvnw.cmd quarkus:list-externsions obtivemos o seguinte resultado:
Repare que a lista é enorme!
Conforme vimos na imagem acima, temos uma enorme lista de dependências (chamadas em Quarkus de extensões) que podemos baixar para nossa aplicação.
Inserindo uma extensão (Dependência de projeto) via Quarkus:
- Na lista gerada anteriormente escolha as dependências que façam sentido para o seu projeto. No meu caso irei escolher a extensão do hibernate
- Para facilitar a minha busca, selecionei a que foi listada no terminal, copiei todo o seu conteúdo e colei em um bloco de notas:
Use CTRL + F para buscar o nome da dependência, que procura na lista dentro do bloco de notas. No exemplo deste tutorial, nós procuramos a dependência do hibernate:
- Copie exatamente o nome que está na coluna da esquerda, este será o nome da dependência usada no comando que iremos montar a seguir no terminal do intellij
- Já no terminal do intellij insira o comando:
./mvnw.cmd quarkus:add-extension -Dextensions=”quarkus-hibernate-envers”
- Para inserir a dependência no projeto, onde:
./mvnw.cmd quarkus:add-externsion (evoca o comando)
-Dextensions= (local onde se coloca o nome da extensão, precisa estar entre aspas duplas)
- Ao pressionar enter, caso tudo corra como esperado, a dependência será baixada com sucesso! Note que o intellij já começa o processo de atualizar a dependência no canto inferior direito
- O intellij é uma ferramenta bem esperta e já coloca para você a sugestão de baixar o JPA Buddy pois detectou dependências que podem precisar dele. Fica a seu critério baixar os plugins de sugestão da IDE.
- Ao abrir o arquivo pom.xml conseguimos confirmar que a dependência foi realmente baixada pelo Quarkus:
Adicionando várias dependências ao mesmo tempo
- Para adicionar várias dependências ao mesmo tempo, é necessário apenas separar o nome delas entre virgulas dentro das aspas duplas do comando aprendido anteriormente. Em nosso exemplo a seguir, iremos adicionar mais três dependências ao nosso projeto, sendo elas:
hibernate-orm-panache (Cria entidades e facilita a parte de JPA do projeto)
resteasy-jsonb (Faz a camada REST da aplicação)
quarkus-jdbc-postgresql (Drive de conexão com o banco de dados posgresSQL, caso queira apenas um bd em memória use jdbc-h2 para instalar o H2 que é um banco em memória)
Então o nosso comando ficou assim:
./mvnw.cmd quarkus:add-extension -Dextensions=”hibernate-orm-panache, quarkus-jdbc-postgresql, resteasy-jsonb”
- Execute o comando no terminal da IDE intellij para baixar todas as dependências necessárias
- Ao pressionar enter depois de inserir o comando no terminal, teremos o seguinte resultado
- Vá novamente até o pom.xml para consultar se de fato as dependências foram inseridas no arquivo pom.xml do seu sistema, no caso do sistema do tutorial obtivemos o seguinte resultado
- Clique em reload na aba lateral Maven para confirmar que o sistema baixou localmente as externsões do sistema (chamadas de dependências em SpringBoot ou bibliotecas academicamente)
Subindo o projeto pela primeira vez dentro do intellij
- No terminal do intellij digite o seguinte comando e pressione ENTER para inicializar o projeto: ./mvnw.cmd compile quarkus:dev
Importante: note que iremos usar a partir de agoar sempre o comando mvnw e não mais mvn pois usaremos o Maven da aplicação. Outro ponto importante, caso o comando não funcione em seu computador, tente usá-lo removendo o ./ e o .cmd ou seja: mvnw compile quarkus:dev
- Note que serão baixados vários arquivos, aguarde o final do processo:
- Ao término do processo você deverá ter algo próximo ao apresentado na imagem a seguir
- Vá até o navegador e digite a URL localhost:8080 e pressione ENTER para verificar se o sistema subiu de fato como esperado:
Caso tudo tenha corrido bem, a interface inicial do Quarkus será apresentada como abaixo
Ao seguir as orientações apresentadas neste artigo, você pode criar e configurar um projeto em Quarkus de maneira rápida e eficiente. O framework oferece uma ampla gama de recursos e ferramentas para o desenvolvimento de aplicações modernas baseadas em microsserviços, e sua popularidade continua a crescer. Com o conhecimento adquirido aqui, você estará pronto para começar a desenvolver aplicações escaláveis e de alta performance com Quarkus.