Réplicas de leitura MySQL usando Docker

Há algum tempo atrás a implementação de replicação de banco de dados era uma tarefa trabalhosa, particularmente em termos de configuração e instalação de servidores de banco de dados. Graças ao Docker, essa tarefa que antes levava no mínimo algumas horas, agora pode ser concluída em menos de uma hora. Vejamos os passos necessários para…

HTTP/2 Server Push no Java EE 8

O Java EE 8 chegou e com ele muitas novidades. Há atualizações nas APIs JAX-RS, Bean Validation, JSF, CDI, JSONP e Servlet. Uma das maiores atualizações está na API Servlet, que está agora na versão 4.0. A maior novidade na API Servlet é o suporte ao protocolo HTTP/2 que traz consigo muitas melhorias, como request/response…

Leitura de arquivos em Java: padrões

A leitura de arquivos sempre foi uma tarefa corriqueira na programação, desde pequenos experimentos para simulação de bancos de dados até o uso de arquivos para troca de informações entre diferentes sistemas. Por muito tempo, em Java, houveram alguns padrões dominantes para a leitura de arquivos, como o uso de BufferedReader, Java NIO ou Apache…

Java EE CDI: Como e quando utilizar Interceptors e Decorators

A Revista Java Magazine 156 traz um artigo meu sobre CDI. CDI é a especificação do Java EE para lidar com contextos (diferentes estados da aplicação e seus objetos relacionados) e injeção de dependências. Essa especificação se integra tão bem e de forma tão natural ao restante da plataforma Java que, muitas vezes, seus recursos…

Manifesto Reativo para Sistemas Reativos

Os requisitos não funcionais mudaram muito nos últimos anos. Até pouco tempo  atrás, aplicações rodavam em dezenas de servidores, o tempo de resposta era na casa de alguns segundos, algumas horas de tolerância offline e dados na casa dos gigabytes. Atualmente, em compasso com a evolução tecnológica, esses mesmos requisitos não funcionais desenvolveram-se para aplicações…

Microservices

A definição mais simplória de microservices seria a de uma abordagem para desenvolvimento de aplicações compostas por uma série de pequenos serviços. Ao pensar rapidamente sobre essa descrição, a arquitetura SOA ressurge na mente como uma arquitetura intimamente ligada a abordagem de microservices. De fato, microservices é uma evolução do pensamento orientado a serviço tradicional…

Modelagem ágil com AMDD

A revista Engenharia de Software magazine deste mês traz um artigo meu sobre agilidade na modelagem arquitetural. A AMDD pode desempenhar um papel fundamental para melhorar o cenário atual de produtividade no desenvolvimento e na manutenção do software. Esse artigo é útil, uma vez que a AMDD possibilita, durante a implementação do software, além de…

Como executar comandos no Linux a partir do Java

Há muito tempo o sistema operacional Linux se tornou o principal SO rodando em servidores corporativos. Considerando a importância dessa plataforma e o número elevado de soluções rodando sob o Linux, é comum aparecerem diversas necessidades em termos de integração para execução de comandos no Linux a partir de alguma ferramenta de implementação. Recentemente fui…

Conformação arquitetural: sincronizando o código e a arquitetura do projeto

A edição de abril de 2015 da Revista Java Magazine trás um artigo meu sobre Conformação Arquitetural. Ao longo do tempo a arquitetura planejada para um software tende a se distanciar do que foi inicialmente projetado. A representação do projeto por meio de diagramas UML em documentos de arquitetura de software perdem total conexão com o código fonte…

Streams API: trabalhando de forma flexível com coleções em Java

A edição de janeiro de 2015 da Revista Java Magazine trás um artigo meu sobre a Streams API e novas formas para lidar com coleções no Java 8. Esse artigo apresenta a Streams API, uma das novidades do Java 8 que traz facilidades e melhorias para o processamento de elementos em coleções. O ponto de partida para esse…