Os desenvolvedores da Caelum costumam publicar muitos artigos técnicos, a maioria deles é divulgado pelo blog da Caelum. Aqui centralizamos os artigos, tutoriais e experiências mais relevantes e que tiveram grande aceitação de público.
Boas práticas e Design
Como não aprender Java: getters e setters - getters e setters são práticas comuns, e nos habituamos a eles logo que começamos com o Java. Mas devemos usá-los tanto? Quando devemos usá-los?.
Como não aprender Java: herança - outro recurso que é facilmente abusado quando estamos iniciando na orientação a objetos. Herança possui várias limitações e gera um forte acoplamento entre classes, que deve ser medido antes de tomar essa decisão.
Relacionamento bidirecional entre classes - fala sobre os perigos e complicações de ter de manter um relacionamento bidireicional entre duas classes.
Domain Specific Language em ação - um exemplo de como DSL ajudou a encarar um problema enfrentado pela equipe da Caelum com os clientes de um projeto.
Design Patterns no Java SE: o
template method - o InputStream como um excelente exemplo de template method.
Domain Driven Design - as idéias debatidas sobre Domain Driven Design no evento da Caelum.
Pequenos objetos imutáveis e Tiny Types - as vantagens (e desvantagens) de tipar estaticamente até mesmo a mais simples das Strings, e de criar esses objetos de maneira imutável.
Fundamentos do Java
O que é hashCode()?.
Uma das principais dúvidas dos programadores iniciantes em Java é o funcionamento exato do hashCode() (juntamente com o
equals()), assunto aqui debatido profundamente, junto com tabelas de espalhamento.
Entendendo Unicode e os character encodings - já teve problemas ao fazer a implantação do seu sistema e seus acentos não estarem corretos? Entenda corretamente a diferença entre o ISO 8859-1 e o UTF-8, e também saiba o porquê de que agora precisamos as vezes de mais de 2 bytes para representar um único caractere.
Lidando com exceptions
- usar checked ou unchecked exceptions? onde fazer o try catch? devo relançar uma exceção?.
Internacionalização no código Java -
como funciona a API do Java SE e de ResourceBundles.
Entendendo o servialVersionUID - artigo esclarecedor sobre essa dúvida que sempre sonda os desenvolvedores.
Processo de build com o Maven - um tutorial para os iniciantes nessa ferramente de build, que se tornou muito popular como o Ant.
Testes automatizados
Você acredita no seu código? - um artigo apaixonado sobre os benefícios dos testes de unidade e de aceite. Mais que isso, uma motivação para mostrar o quão essencial é ter testes automatizados.
Testes de aceitação com o Selenium - como usar essa poderosa ferramenta para automatizar seus testes de aceite.
Testes unitários com JMock 2 - trabalhando com mock objects para facilitar seus testes de unidade.
Integração contínua - o que é, para que serve e como o Cruise se enquadra.
Integração Continua - Builds rápidos com Grids e paralelismo - quando a performance dos seus testes começam a impactar o dinamismo da integração contínua, o que fazer?
Behavior Driven Development com JUnit - desmistificando o BDD e colocando-o na prática com o JUnit.
Coleções e generics
Performance: HashSetcode> em vez de ArrayList
- é comum a escolha por uma ArrayList, mas será que essa coleção é uma boa opção em alguns casos?
A Collection genérica: métodos
que recebem Object - mesmo com os generics, porque alguns métodos da interface Collection ainda trabalham com Object?
Generics, inferência de tipos e reificação no Java 7 - um post aavançado sobre as limitações da implementação de Generics no Java, dada a ausência de reificação.
Não posso descobrir nem instanciar tipos genéricos! Porque? - post avançado sobre a reificação de tipos.
Persistência, ORM e Hibernate
Screencast: primeiros passos para a JPA - aqui Fábio Kung faz um passo a passo para você começar a trabalhar com a JPA através de um screencast.
Ei, como é o seu DAO? Ele é tão abstraído quanto o meu? - com o generics no Java 5, abriu-se um leque de possibilidades para um typesafety maior. Diversas propostas de DAO genérico apareceram, e uma delas é tratada aqui.
JPA com Hibernate: henraça e mapeamentos - mostra as diversas possibilidades de trabalhar com herança usando JPA/Hibernate, e possíveis limitações de performance que podem ser encontradas.
Hibernate Search com Lucene - o Hibernate Search integra de maneira natural o framework de persistência com o Lucene.
Repository: seu modelo mais orientado a objeto - é a trasncrição de uma discussão entre Fábio Kung e Paulo Silveira sobre um dos assuntos mais debatidos sobre DDD e seus patterns.
Os 7 hábitos dos desenvovledores hibernate e JPA altamente eficazes - dicas e truques para você não passar sufoco e obter o máximo do Hibernate.
Divisions com Hibernate: uso avançado do Criteria API - como implementar operações de division com o Hibernate.
Java na Web
Trabalhando com coleções usando JSP e JSTL - um guia prático de funções e tags para trabalhar com as collections do Java nas suas páginas web.
I18N: internacionalização com JSTL - como estruturar sua aplicação Web para facilitar o processo de internacionalização através de tags JSTL.
Jetty, NIO e load balancing - como a migração do GUJ de Tomcat para Jetty melhorou a performance do servidor.
Vazamento de memória e de conexões - um passo a passo de como atacamos o problema de estouro de memória e vazamento de conexões em um projeto.
XML e Webservices
Webservices sem servidor de aplicação no Java SE 6 - o JAX-WS 2.0 entrou para dentro do Java SE 6, facilitando em muito o consumo e a exposição de serviços via Web.
Webservices com XFire - utilizando o XFire (hoje Apache CFX) com as anotações do JAX-WS.
Java 6, as APIs de XML, webservices e classloaders - discute os problemas que surgiram depois da entrada de diversas APIs JAX-?? dentro do Java 6, em especial em relação ao JAX-WS.
Os 7 hábitos dos desenvolvedores de webservices altamente eficazes - cuidados com granularidade e tipos de webservices que precisamos ter para preservar performance e escalabilidade.
JAX-B: Java e XML de mãos dadas - o JAX-B entrou para o Java SE a partir da versão 6 e é uma excelente opção para se trabalhar com XML.
Ruby e Ruby on Rails
Quão intuitivo é aprender Ruby? - um motivador artigo para você encarar uma nova linguagem.
2009: o ano do Ruby on Rails no Brasil - outro artigo inspirador em relação ao potencial do rails no Brasil!