Por que eu devo ler este artigo:Este artigo apresenta sugestões de frameworks, ferramentas e boas práticas para aumentar a produtividade em projetos Java, sendo útil para profissionais que já atuam com desenvolvimento web, iniciantes e equipes que utilizam metodologias ágeis. Para aqueles que estão buscando melhorar sua produção com qualidade, encontrarão neste artigo orientações que podem ser aplicadas desde a criação da estrutura do projeto, passando pela camada de persistência, criação de serviços REST, até a criação das telas utilizando AngularJS e HTML5.

Hoje em dia, para atender uma tarefa de criar um cadastro de clientes, por exemplo, o mesmo profissional poderá atuar em diversas frentes, como: realizar ajustes no banco de dados, criar serviços, controladores e testes, e customizar a interface visual. Como se não bastasse, o desenvolvedor precisa, ainda, garantir a qualidade do código e manter uma boa produtividade, para que não ocorram atrasos na entrega do software. Contudo, ser produtivo em um ambiente com diversos pontos a se preocupar não é uma tarefa fácil.

Em cenários como este, para enfrentar tantos desafios, um dos primeiros passos é conhecer bem a arquitetura do projeto, os frameworks e os padrões adotados pela equipe. No entanto, isso pode ser um grande problema, pois nem todos os desenvolvedores possuem a mesma facilidade para construir telas e estilizar layouts como têm para programar do lado servidor, por exemplo. E a mesma situação ocorre para desenvolvedores com perfil voltado para design de front-end. Deste modo, quando surge a necessidade de trabalhar onde não é o mais comum, a produtividade e a qualidade costumam cair consideravelmente. Não que seja por falta de capacidade, mas pelo fato do profissional ter focado seus estudos apenas no back-end ou no front-end.

Pensando nisso, com o intuito de aumentar a produtividade e a qualidade da codificação de seus sistemas, tanto no back-end quanto no front-end, serão abordadas no decorrer deste artigo dicas de ferramentas e boas práticas de implementação utilizando Java e AngularJS. Esta solução para servidor e cliente vem se tornando um padrão para aplicações em diversos projetos devido à eficiência, escalabilidade e crescimento de mercado dessas tecnologias.

Tecnologias a seu favor

Hoje em dia há uma grande oferta de tecnologias, linguagens, ferramentas e frameworks no mercado para facilitar o trabalho de um profissional de tecnologia da informação. Uma grande parte dessa oferta está disponível na rede sob licença open source, podendo ser utilizada ou até melhorada por qualquer pessoa que esteja interessada. Porém, essa grande diversidade de opções pode gerar muitas dúvidas, o que leva a escolhas de tecnologias que não se adequam à solução proposta e consequentemente provocam atraso no desenvolvimento do projeto.

Para que não ocorram escolhas indevidas, o desenvolvedor deve buscar conhecer melhor os pontos positivos e negativos de cada tecnologia ou ferramenta que está interessado em utilizar. Lembre-se que não existe uma solução “bala de prata” a ser aplicada em todos os casos. A escolha ideal é aquela em que os pontos negativos encontrados pela equipe podem ser contornados de tal forma que não atrapalhe o andamento das atividades e seus pontos positivos sejam suficientes para justificar a decisão.

Arquitetura x Design x Solução

Por mais que o conceito de arquitetura de software seja difícil de ser compreendido, é de grande importância ter ciência do quanto esse conhecimento pode afetar o andamento de um projeto. Segundo Martin Fowler, “o termo arquitetura envolve a noção dos principais elementos do sistema, as peças que são difíceis de ser mudadas. Uma fundação na qual todo o resto deve ser construído”. Já Ralph Johnson, do GoF, define como sendo “o conjunto de decisões de design que gostaríamos de ter feito no começo do projeto”.

Partindo dessas afirmações, ao pensar na construção de uma aplicação, saiba que as primeiras decisões de tecnologias, ferramentas e padrões irão afetar todo o resto do projeto, pois irão impactar no dia a dia de trabalho dos desenvolvedores e futuramente serão difíceis de serem alteradas, caso sejam encontrados problemas ou pouca aderência da equipe à solução. As escolhas corretas nessa etapa facilitarão as correções de problemas ou alterações futuras, caso surjam.

Depois de realizadas as escolhas das principais tecnologias, as próximas decisões serão sobre o design da aplicação. Para o arquiteto de software Neal Ford, as decisões de design são feitas em cima do que foi decidido para a arquitetura como, por exemplo, o comportamento do sistema e a interatividade com o usuário em casos de sucesso ou falha. Dessa maneira a arquitetura e design da aplicação devem ser pensados de forma consoante para dar ao projeto vantagens não só no momento de manutenção, mas também possibilitar a criação de um ambiente de desenvolvimento produtivo.

Esse artigo irá sugerir e dar dicas sobre tecnologias e ferramentas a serem utilizadas em projetos web, sendo preferencialmente aplicadas durante as decisões arquiteturais. Porém, a adoção do que será apresentado dependerá do contexto e das reais necessidades do projeto. É preciso compreender que a cultura, preferências e disponibilidade de tempo de cada equipe de desenvolvimento devem ser consideradas para que sejam feitas boas escolhas. Além disso, é importante que todos estejam cientes e de acordo com a forma de trabalho que será conduzida, pois mantendo o mesmo padrão se torna mais fácil realizar a manutenção do código, menos oneroso resolver problemas de desfalque na equipe, será alcançada uma curva de aprendizado menor para novos integrantes, entre outras possibilidades.

Por que utilizar Spring e AngularJS?

Quando se constrói um software é muito comum fazer uso de frameworks para facilitar o trabalho de desenvolvimento. Imagine um profissional que irá implementar uma nova funcionalidade em uma aplicação ter que pensar em quais padrões deve utilizar, lidar com o gerenciamento de transações, o protocolo HTTP, a conversão de objetos e ainda controlar conexões com o banco de dados. Certamente o trabalho seria muito mais complexo e demorado. Deste modo, utilizar frameworks para encapsular a complexidade dessas tarefas é uma excelente opção.

Um bom primeiro passo para aumentar a produtividade é optar pelo framework Spring. Solução open source, criada com o objetivo de simplificar a programação em Java, possibilita a construção de aplicações que antes só eram possíveis fazendo uso de EJBs. O Spring é uma ótima opção para projetos web, pois viabiliza módulos que facilitam e muito o desenvolvimento, como: Spring Data, para a camada de persistência; Spring Security, para cuidar da segurança da aplicação; e Spring REST, para simplificar a criação de web services. Além disso, também possui funcionalidades para injeção de dependências, programação orientada a aspectos e controle de transações, fazendo dele um poderoso aliado do desenvolvedor server-side.

...
Quer ler esse conteúdo completo? Tenha acesso completo