Gostaria de entender quais as vantagens de serializar ou não, estou lendo, fazendo alguns exemplos mas não fica claro…
Eu sei que e para restaurar os valores dos objetos ou variaveis, quando fechamos ou terminamos o aplicativos, mas não seria assim para qualquer programa mesmo sem serializar, eu passo os valores e pronto, quando reinicio o app ele retorna os mesmo valores…
Alguem pode me dar uma ajuda, valeu…
[Resolvido]Não consigo entender SERIALIZABLE
9 Respostas
O processo de serialização pode ser necessário em vários cenários.
Os mais comuns são tráfego por rede, gravação em arquivo e gravação em banco de dados,
é possível salvar objetos em arquivos de dados.
Já a desserialização permite que os objetos persistidos em arquivos possam ser recuperados e seus valores recriados na memória.
Utilizado em sistemas distribuidos, persistencia com BD, com a transformação do objeto em bytes
é possível enviar o objeto por uma rede, ou salvá-lo em um arquivo ou em um banco de dados
Para entender serialização, você precisa saber como funciona a execução de um programa.
Quando você abre o word, por exemplo, o SO aciona o mesmo e o disponibiliza em memória RAM.
Quando você insere um texto, até salvar o mesmo, ele também está na memória RAM. Como sabemos, a memória RAM é volátil, ou seja, tudo o que há nela é perdido assim que as posições de memória em que este conteúdo está são liberados.
Provavelmente você já perdeu algum trabalho por ter esquecido de salvar e o computador desligou, acabou a energia, algo assim.
Isso, por que, o conteúdo que estava sendo digitado estava na memória RAM.
Quando um aplicativo java é executado ele também roda na RAM. Quando você insere valores e não os serializa, quando fechar o aplicativo, a memória será liberada e tudo o que foi digitado será perdido.
Então, quando você implementa a interface Serializable em uma classe, está habilitando os objetos da mesma a serem serializados. Neste caso, como o objeto será gravado em disco, a RAM pode ser liberada, que o java poderá ler o objeto novamente, sem perder o que foi inserido nele.
Ae Márcio!
Firme nos estudos?
Show! Sobre a sua pergunta, não, as coisas não são serializadas por padrão. Por exemplo, você faz um programinha de locadora, onde você pode cadastrar filmes, locações, etc. Você pode fazer uma penca de cadastros, mas quando fechar o programa tudo será perdido pois estava somente na memória RAM (volátil). É necessário persistir os dados, ou seja, gravá-los em algum lugar (arquivo, banco de dados, remoto, etc.).
Achei um link que pode te esclarecer melhor ainda:
http://imasters.com.br/artigo/17576/java/entendendo-serializacao-em-java
Forte abraço!
Muito obrigado pela ajuda a todos.
Obrigado pelo link(adornes) esclareceu quase tudo, ainda preciso entender um pouco mais.
Grato a ajuda.
A interface Serializable é simplesmente uma interface de marcação, indicando que os objetos daquela classe podem ser serializados/desserializados.
Serialização/Desserialização nada mais é do que a conversão de um objeto em bytes e vice-versa. As aplicações são diversas, mas as mais comuns são a gravação desses objetos em arquivos e a transmissão de objetos através de redes. O RMI por exemplo (Remote Method Invocation) é uma API Java para sistemas distribuídos. Ela permite por exemplo, que aplicação Java em um computador A invoque métodos de uma classe em um computador B por exemplo. Nesse caso, todos os tipos de retorno e argumentos devem ser Serializable, para que possam ser transmitidos através da rede.
Um outro recurso interessante é a ativação/passivação de sessões de usuário. Por exemplo, uma aplicação Web que mantém sessões de usuário pode ser distribuída em N servidores, para fins de balanceamento de carga. Se um servidor B atender requisições de um usuário que já possui sessão em A por exemplo, a sessão tem que migrar de um servidor para outro. Mais uma vez, isso é feito através de uma transmissão de rede e para que a trasmissão seja possível, a sessão e os objetos mantidos por ela precisam ser Serializable também.
Enfim, como eu disse, as aplicações são muitas e elas estão presente na maioria das especificações de alto nível da plataforma Java, portanto, você não pode deixar esse tema de fora nos seus estudos.
Só um adendo marciojesus, esse tópico deveria estar no fórum de Java Avançado. Você tem que frequentado assiduamente o GUJ e já deveria estar ciente das regras …
Grato pela ajuda rmendes08, mas notei que tinha que colocar no forum java avançado, pois ainda me considero iniciante…mas valeu o alerta vou prestar mais atenção.
A classificação dos tópicos não é feita pela experiência do autor, mas pelo teor do assunto.
Alguém pode me ajudar no tópico “API para criptografia”?