Escolhendo a próxima linguagem da JVM

Em seu artigo da série Java.next, intitulado “Choosing your next JVM language”, Neal Ford – arquiteto de software na ThoughtWorks – comenta sobre a JVM como plataforma para outras linguagens e apresenta comparações entre Groovy, Scala e Clojure. Neal diz que entramos em um mundo poliglota de linguagens de programação e que os números estão…

Qualidade de código: encapsular estruturas condicionais

Recentemente escrevi sobre qualidade de código apresentando uma ferramenta de análise de código chamada Sonar. Esta ferramenta verifica vários aspectos do código fonte, entre eles a complexidade do código. Códigos complexos possuem muitos caminhos de execução e, além de ter uma chance maior de serem origens de bugs, são mais difíceis de ler. O ideal…

Arquitetura de um sistema crítico de tempo real

Como você projetaria um sistema de informações para a polícia de uma cidade, com o objetivo de fornecer informações em tempo real aos policiais sobre as ocorrências relatadas por telefone e atualizações em tempo real destas ocorrências? Certamente um sistema assim precisa de uma arquitetura robusta, voltada a performance e confiabilidade. É um sistema crítico,…

EJB: Stateless Session Bean

O diagrama de classes abaixo ilustra a modelagem de um EJB Stateless para um hipotético serviço de criptografia. Criptografia por si só é um tópico muito mais complexo do que sugere este diagrama, assim com EJBs, mas o foco aqui é mostrar como os componentes EJB se relacionam. A interface EncryptionCommonBusiness serve como um contrato…

Padrões de Código Java do Google e Oracle

O Google Java Style, ou Estilo de Código do Google, é um guia de referência de como organizar o código fonte dentro do Google, ou seja, os princípios que todos os desenvolvedores do Google seguem. O documento é muito interessante e fornece uma ideia de como organizar seu código em um padrão de alto nível,…

Comparação de Frameworks

Existem centenas de frameworks no mercado com o propósito de atender a outra centena de problemas. Para “ajudar” a escolher qual o melhor framework, existem outras centenas de artigos comparando os frameworks entre si. Acredito que muitas comparações disponíveis hoje são furadas. Primeiro, as comparações são feitas de forma bem superficial, utilizando alguns critérios genéricos…

Analisando a qualidade do código com o Sonar

Medir a qualidade de um projeto de software é algo complexo e envolve muitos indicadores, além disso, qualidade é muito relativa e depende do ponto de vista do observador. Um gerente financeiro pode observar a qualidade pela economia proporcionada pelo software. O usuário observa se o software atende aos requisitos funcionais, o número de falhas,…

i18n: Internacionalização em Java

Internacionalização (Internationalization) é o processo de projetar aplicações que podem se adaptar a diferentes localidades geográficas sem a necessidade de alterar o código. O termo é abreviado para i18n devido às 18 letras entre o primeiro “i” e o último “n” do termo original em inglês “internationalization”. As características fundamentais de uma aplicação que se…

Conciliando arquitetura com agilidade

Arquitetura de Software A arquitetura de software é uma subárea da engenharia de software, é uma ponte entre os requisitos e o código (implementação). Quando a arquitetura de software é bem implementada, o resultado é um software que satisfaz as principais exigências do projeto, tais como desempenho, confiabilidade, portabilidade, etc. É a arquitetura de software…