Marcos,
Eu utilizo sem problemas os tipos primitivos... Em smaltalk, se não me engano,
não existem esses tipos primitivos, é tudo orientado a objetos... Já em Java,
as versões mais recentes dos compiladores da máquina virtual fazem o "Boxing"
e "Unboxing" de uma forma automatica e transparente...
Por exemplo, dá pra usar Integer e mover diretamente para int e vice versa, o que
não ocorria nas versões anteriores do Java. Problemas até onde eu sei, não existem,
é apenas uma comodidade para o programador que não precisa mais ficar se
preocupando com esses "Casts".
Seguindo o mesmo exemplo, a Classe Wrapper de int, é Integer, de double é Double
e assim vai... não é mais necessário empacotar, converter, etc...
Os tipos primitivos a meu ver economizam um pouco mais de recursos do que os
objetos propriamente ditos na memória. Apesar de que o local para tipos primitivos
é diferente do local de armazenamento de Objetos na memória...
Uma fica na heap e outra na stack, se não me engano, mas eu sempre confundo
essas coisas, já que não me preocupo tanto com isso quando estou programando.
Em resumo, use o que achares melhor. Os tipos primitivos podem ser alterados
diretamente e tranquilamente sem problemas, já as Classes Wrappers tem vários
métodos embutidos para fazer várias tarefas, transformações, etc...
As classes serializadas são as que contém os tipos primitivos ou outros objetos.
Pode ser que o compilador Java ou GWT façam a conversão para objeto automaticamente
nesses casos, mas não sei te dizer com certeza...
Acho que dá pra usar o que achares melhor para cada situação.
Abraços,
Robert