
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!
Artigos publicados na Revista Mundo Java
Mundo Java 41:
Domain-Driven Design Além dos Patterns - Guilherme Moreira
Evolução do Design através de Testes e o TDD - Lucas Souza e Paulo Silveira
Mundo Java 40:
A revolução do Java EE 6: As principais novidades da JSR 316 - Pedro Mariano
As Novidades do JSF 2.0 - Sergio Lopes
Mundo Java 39:
JPA 2: Os Novos Recursos Inspirados no Hibernate - Paulo Silveira e Raphael Lacerda
Mundo Java 38:
Made in Brazil: VRaptor 3 - Adriano ALmeida e Lucas Cavalcanti
Mundo Java 36:
JRuby + Web: Porque usar Java com JRuby on Rails? - Fabio Kung
Mundo Java 34:
Made in Brazil: Caelum Stella - Biblioteca Brasileira para Problemas Brasileiros - Leonardo Bessa e Caue Guerra
Mundo Java 31:
Criando Software mais Próximo do Cliente com Domain-Driven Design - Sergio Lopes
Mundo Java 25:
Gerenciando a Sessão do Hibernate em Aplicações Web - Nico Steppat e Guilherme Moreira
Mundo Java 23:
Desvendando o Bytecode - Paulo Silveira
Mundo Java 22:
Desmistificando Java para Pocket PCs - Thadeu Russo
Mundo Java 20:
Enterprise Java Beans 3.0 - Paulo Silveira e Nico Steppat
Mundo Java 19:
Hibernate Avançado - Paulo Silveira e Guilherme Moreira
Mundo Java 18:
Certificação de Programador Java 5.0 - Paulo Silveira
Mundo Java 17:
VRaptor 2 - Paulo Silveira e Guilherme Silveira
XStream: agilizando seu trabalho com XML - Paulo Silveira e Guilherme Silveira
Mundo Java 10,11,12,14,15:
Desafio Mundo Java - Guilherme Silveira
Mundo Java 09:
Eclipse3 - Dicas e truques - Paulo Silveira
Mundo Java 03:
GUJ 2 - Criando uma comunidade ainda melhor - Paulo Silveira
Mundo Java 02:
Servlets e JSP - Guilherme Silveira
Artigos publicados na Revista Java Magazine
Revista Java Magazine Número 4 (2002)
Java Generics no Java5 - Paulo Silveira
Revista Java Magazine Número 5 (2002)
Lego Mindstorms e Java - Paulo Silveira
Revista Java Magazine Número 6 (2002)
Templates com o Velocity - Paulo Silveira
