Este ano eu tive que fazer a migração de uma aplicação do JDK8 para o JDK11 – sim, o mundo corporativo, por mais ágil que seja, não acompanha com tanta avidez as novas releases de tecnologias e ferramentas que aparecem em intervalos cada vez menores. Na última migração que eu fiz foram inúmeros erros. Mas…
Category: Java
Padrão Builder: Como construir objetos complexos em Java (Effective Java’s Builder pattern)
Classes com muitos atributos opcionais em seus métodos construtores podem trazer bastante sujeira para o código, além de aumentar a probabilidade de erros quanto mais atributos forem necessários para instanciar um objeto da classe em questão. Considere o exemplo a seguir da classe Produto, que possui 8 atributos. import java.math.BigDecimal; public class Produto { private…
Como eu fiz o exame 1Z0-817 (certificação Java 11) sem o guia de estudos
Há 10 anos eu tirei a minha primeira certificação Java, a OCP Java SE Programmer 6. De lá pra cá, a linguagem ganhou muitos recursos como Streams e Lambdas no Java 8, JDK modular no Java 9, entre outros. Além disso, agora as releases estão acontecendo em um intervalo de tempo muito menor, a cada…
Como as linguagens modernas tratam valores null
Valores null podem (e com certeza vão), em algum momento, resultar em uma NullPointerException. Negligenciar aspectos que podem resultar essas exceptions podem trazer problemas difíceis de serem encontrados e resolvidos. Pense em uma cadeia de objetos que formam uma hierarquia de objetos dependentes. Se qualquer desses objetos permitir um valor null e em algum momento…
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…
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…