Olá, tudo bem pessoal?
Estou fazendo uma pequena aplicação, mas eu queria q a mesma tivesse um update automático, pois vou começar a distribuir a mesma mas já tenho várias melhorias em mente. Já andei pesquisando mas n encontrei nada explicativo sobre o assunto, ate tem um tópico aqui n GUJ mas n me ajudou.
Quero fazer da forma mais simples possível.
Se alguém pudesse me dar uma idéia de como começar???
Esta aplicação vai ser distribuída via Internet ou Intranet. Se for, dê uma olhada no Java Web Start.
Caso contrário, você terá que embutir no seu programa uma classe que faça a busca e atualização manualmente.
Grava a data da ultima altualização ou número da versão, que da primeira vez pode ser o momento da atualização.
Vai no servidor e busca qual a data da última atualização.
Se for mais recente do que a que está no client, baixa tudo e coloca nos lugares certos. E grava a data da atualização, ou versão, como a atual.
E assim sucessivamente.
Para baixar acho que deve ser usando socktes a forma mais simples mesmo, possívelmente fazendo uma consulta a um banco de dados remoto ou uma página qualquer que retorne a data ou numero da ultima versão… E depois realize o download caso necessário.
A capacidade de atualização é algo bem complexo e nem sempre funciona direito. Veja o Eclipse.
Como sua aplicação usa bancos de dados (MySQL), ela também tem de atualizar as definições das tabelas - não se esqueça disso!
Se você quer algo simples, use Java Web Start para disponibilizar sua aplicação - isso irá fazer a atualização automática via Web de maneira relativamente simples. Entretanto, você é que tem de tomar conta da parte da atualização das tabelas.
Valeu ai thingol, mas eu prefiro n utilizar o jws, pelo q andei lendo ele possui algumas restrições, e meu software por mais pequeno q seja acessa muitos recursos locais, como dlls e acesso a portas de comunicação do pc, não sei bem se o jws impoem alguma restrição a isso, mas muitos de meus “clientes” possuem acesso restrito a internet, muito lenta, por isso preferiria ter um botão no sofwtare de atualizar, q verificaria a existencia de alguma atualização e realizace a mesma…
Utilizando sockets para transferencia de arquivos seria a melhor saida?
alguem tem alguma dica que facilitaria o meu trabalho?
Transferir arquivos com sockets é complicado e dá muitos problemas se não for bem feito - eu acharia melhor usar HTTP mesmo, porque você não vai ter problema com algum cliente que está atrás de um proxy ou firewall. Além disso é mais fácil pôr as atualizações em um web site, em vez de ter de criar um servidor específico só para isso.
Já que o acesso à Internet é meio difícil, é melhor tentar transferir o mínimo de dados. Já ouviu falar da compressão PACK200? Veja isso na própria documentação do JDK. O Pack200 é especialmente adequado para transferir arquivos .JAR, já que foi pensada para isso.
De qualquer maneira, o JWS não restringe tanto assim o acesso a recursos locais. Basta assinar e configurar corretamente o aplicativo e você não terá tantos problemas assim. Eu recomendaria o JWS mesmo assim, já que ele tenta carregar o mínimo possível de dados se você configurar corretamente o JWS.