A resposta a esta pergunta é, talvez surpreendentemente, nunca , ou mais realista, apenas quando você é forçado a interoperabilidade com o código legado . Esta é a recomendação no Effective Java, 3rd Edition, de Joshua Bloch:
Não há razão para usar a serialização Java em qualquer novo sistema que você escreve
O arquiteto-chefe da Oracle, Mark Reinhold, afirma que a remoção do atual mecanismo de serialização Java é um objetivo a longo prazo.
Por que a serialização Java é falha
O Java fornece como parte da linguagem um esquema de serialização no qual você pode optar por usar a Serializable
interface. Esse esquema, no entanto, possui várias falhas intratáveis e deve ser tratado como um experimento com falha pelos designers da linguagem Java.
- Fundamentalmente, finge que se pode falar sobre a forma serializada de um objeto. Mas existem infinitos esquemas de serialização, resultando em infinitas formas serializadas. Ao impor um esquema, sem nenhuma maneira de alterá-lo, os aplicativos não podem usar um esquema mais apropriado para eles.
- Ele é implementado como um meio adicional de construir objetos, que ignora qualquer pré-condição que seus construtores ou métodos de fábrica executam. A menos que um código extra de desserialização seja complicado, propenso a erros e difícil de testar, seu código provavelmente tem uma falha de segurança.
- Testar a interoperabilidade de diferentes versões do formulário serializado é muito difícil.
- O manuseio de objetos imutáveis é problemático.
O que fazer em vez disso
Em vez disso, use um esquema de serialização que você possa controlar explicitamente. Como Buffers de Protocolo, JSON, XML ou seu próprio esquema personalizado.