04/10/2017 Tiago Carpanese

JHipster – Um grande aliado no desenvolvimento de aplicações Java e Angular

Hoje, há uma crescente demanda de software no mercado. Cada vez mais empresas necessitam de um produto específico para seu negócio, e para empresas acima de médio porte, possuir soluções customizadas é quase que inevitável.

Do outro lado, as empresas de software buscam soluções que aumentem a produtividade do desenvolvimento, mas por muitas vezes, estas soluções acabam se tornando mais custosas do que produtivas.

Passei quase sete anos da minha carreira, trabalhando com ferramentas que prometiam produtividade, mas quando surgia a necessidade de sair do padrão da ferramenta… pronto! Toda produtividade do início do projeto com as automações de configuração e geração de CRUDs ia por água abaixo.

Em 2015, quando conheci o JHipster através de um amigo, de cara já pensei: lá vem mais uma ferramenta que engessa o código e que no final vai me trazer mais prejuízos do que benefícios. Foi aí que me enganei.

JHipster não é um framework

O principal conceito do JHipster é: JHipster não é um framework! Nós não encontramos uma biblioteca “jhipster.jar” na aplicação gerada. 100% das ferramentas que já trabalhei possuíam customizações para as camadas de segurança e persistência, fazendo com que uma possível atualização de frameworks de mercado quebrasse toda a aplicação gerada.

JHipster é um gerador de código Spring Boot e Angular 4. Ou seja, para trabalhar em um projeto JHipster, você não precisa necessariamente conhecer a ferramenta e sim as tecnologias que englobam o software gerado. O ponto positivo disto é que os líderes do projeto e a comunidade prezam por utilizar tecnologias líderes de mercado.

Arquitetura customizada

Ao gerar uma aplicação com o JHipster, é possível customizar a arquitetura da sua aplicação. Há inúmeras possibilidades que vão desde uma aplicação mais simples (monolítica), até uma aplicação mais complexa utilizando micro serviços.

Há possibilidades de escolhas como método de autenticação, que permite o uso de autenticação básica por http, Json Web Token ou então OAuth2.

Também é possível escolher o banco de dados utilizado para desenvolvimento e produção, níveis de cache do hibernate, tecnologia de frontend além de internacionalização da aplicação e outras implementações pré-configuradas, como o login através de redes sociais, por exemplo.

Na figura abaixo, podemos verificar como é o processo de criação de uma aplicação e quais itens escolhemos para gerar a aplicação exemplo para este artigo:

Figura 1 - JHipster gerando uma aplicação

Figura 1- JHipster – Gerando uma aplicação

Software de Qualidade

Geradores de aplicação muitas vezes prezam por serem produtos no estilo “polishop” e esquecem de levar em consideração itens essenciais como a qualidade de software. Há casos de ferramentas que geram código Java procedural, pois esta mesma ferramenta permite que a aplicação construída possa ser gerada em outras linguagens como .NET.

A aplicação gerada pelo JHipster possui um alto nível de qualidade de código, e a partir daí, será só mantermos o mesmo padrão para a construção das novas funcionalidades ou melhorias das funcionalidades já geradas.

Ao gerar uma aplicação, é possível escolher frameworks para testes de performance e de frontend. Com isto, o trabalho que levaria dias para ser realizado é agora gerado em poucos minutos.

Na figura abaixo, podemos verificar os níveis de qualidade da aplicação recém gerada quando submetemos a mesma ao sonar:

Figura 2 - Qualidade do software gerado

Figura 2 – Qualidade do software gerado

Produtividade com o JHipster Domain Language

Após a geração da aplicação, devemos pensar que o trabalho mais árduo está feito. Então, nos resta iniciar a modelagem dos dados, mapeamento das entidades, criação dos serviços e implementação da nossa regra de negócio, correto? Errado! JHipster conta com uma linguagem de domínio para facilitar ainda mais no desenvolvimento.

Basicamente, vamos escrever como serão nossas entidades e ao importar o modelo escrito para nossa aplicação, o JHipster irá gerar o versionamento do banco de dados, geração das classes de domínios, serviços e frontend.

Todo código gerado é coerente quanto ao padrão de qualidade e também todos os testes são gerados para que, a partir daí, o desenvolvedor possa dar continuidade as customizações e implementações necessárias para cada requisito.

Há plug-ins para eclipse, Modelio, UML Designer e GenMyModel, porém, é possível utilizar o JDL Studio na web.

No exemplo da figura abaixo, podemos ver o uso do JDL Studio na web. Criei uma entidade “Artigo” e uma “Comentário”. Criei um relacionamento onde um artigo poderá ter vários comentários e configurei para que sejam gerados DTOs, Services, e que no meu frontend o comentário será com scroll infinito e o artigo seja paginado:

Figura 3 - JHipster Domain Language

Figura 3 – JHipster Domain Language

Para gerar o que escrevi no JDL na minha aplicação, basta executar o comando jhipster import-jdl artigo.jh que ele realizará todo o processo que pode ser conferido nas imagens a seguir:

Figura 4 - CRUD de Artigos

Figura 4 – CRUD de Artigos

Figura 5 - CRUD de Comentários

Figura 5 – CRUD de Comentários

Gerencie e Monitore sua Aplicação

O JHipster promove uma série de funcionalidades de utilitários para aplicação recém gerada. Além do gerenciamento de usuários e permissões, é possível verificar as métricas de memória e tempo da aplicação, estado das integrações ou do sistema como e-mail e memória, possibilidade de alterar os níveis de log em tempo de execução, auditorias e consulta das APIs com o swagger já configurado na aplicação. Podemos verificar nas imagens abaixo, algumas telas da aplicação gerada juntamente com a legenda de cada uma:

Figura 6 - Métricas da aplicação

Figura 6 – Métricas da aplicação

Figura 7 - Estado do sistema

Figura 7 – Estado do sistema

Figura 8 - Níveis de log

Figura 8 – Níveis de log

Figura 9 - Documentação de API com Swagger

Figura 9 – Documentação de API com Swagger

Muito mais que um gerador

Como vimos, a ferramenta gera uma aplicação robusta, com qualidade e com funcionalidades que auxiliam o monitoramento e gerenciamento da aplicação. Permite agilidade no trabalho mais complexo e, com conhecimento nos frameworks de mercado, permite também que o desenvolvedor aplique as regras de negócio e faça modificações no frontend de forma simplificada.

Deploys automatizados

Além de tudo que foi apresentado, a ferramenta também possui integrações já implementadas para a realização da implantação em produção em diversas plataformas conforme a figura 10:

Figura 10 - Plataformas suportadas

Figura 10 – Plataformas suportadas

Integração Contínua

Há também a opção de gerar scripts de pipeline para rodar nas ferramentas de integração contínua de sua preferência. Atualmente, o JHipster suporta Jenkins, GitLab CI, CircleCI e Travis CI. Basta executar um comando, selecionar a ferramenta e pronto: o script será gerado automaticamente. Veja na figura abaixo:

Figura 11 - Integração contínua

Figura 11 – Integração contínua

Mercado de Componentes

Contamos também com um mercado de componentes que disponibiliza componentes de frontend em outras tecnologias, módulos de auditoria, conectores para redes sociais, integração com google maps e outras dezenas de componentes.

É possível criar nossos próprios componentes e o site conta com uma documentação bem completa para isto.

Você pode conferir o marketplace do JHipster clicando neste link: Marketplace JHipster

JHipster: completo, dinâmico e produtivo

Com base nas inúmeras ferramentas que existem para as mais diversas linguagens de programação, demonstramos neste artigo o quanto o JHipster pode ser produtivo sem que o mesmo tenha que se tornar um framework cheio de customizações.

Vimos que é possível gerar uma aplicação completa em poucos minutos, gerar CRUDs de forma automatizada e customizada de acordo com nossa necessidade, implantar em produção e gerar scripts de integração contínua de forma ágil e funcional.

Há inúmeros outros itens que englobam todo o ecossistema do gerador, portanto, se você ficou curioso para conhecer esta ferramenta, não deixe de entrar no site e saber mais sobre esta incrível ferramenta.

Referências:

http://www.jhipster.tech/

Veja também:

A importância da Integração Contínua, utilizando Jenkins e SonarQube

 

Tagged: , , ,

Sobre o autor

Tiago Carpanese Tiago Carpanese - Especialista em Java, possui 11 anos de experiência na área de TI, dos quais grande parte em desenvolvimento de Software. Atualmente trabalha como desenvolvedor de software na DB1 com foco em Spring Boot e Angular 4. Periodicamente, faz publicações de artigos em seu blog pessoal para ajudar a disseminar o conhecimento além de ajudar profissionais a conhecerem novas tecnologias. Através do constante estudo e atualização, busca adquirir conhecimento em outras áreas e tecnologias para o constante crescimento pessoal e profissional.