Ae pessoal,
fiz um programa que tinha uma chamada repaint, e era meio pesado mesmo… mas executando o .class rodava tranquilo! daí eu gerei o .jar e toda vez que chegava na parte do repaint ele dava pau, num era exceção nem falta de memória, o prog continua rodando mas a tela não é atualizada!
e aí? isso significa diferença de performance entre .jar e .class?
Performance de .jar X .class
22 Respostas
Nao deveria ter absolutamente nenhuma diferenca - pra entender o pq disso, eh soh ver como os ClassLoaders funcionam - mas… agora eu fiquei curioso, como vc mediu isso e quais foram os erros que aconteceram?
O progama era um joguinho e quando acabam os inimigos passa pra outra fase mas o .jar não renderizava a tela da nova fase, o jogo continua rodando (ouve-se o som e tudo mais) mas a tela fica estática… minimizando e maximizando volta a renderizar! (nada disso ocorre quando executo o .class que roda redondinho!)
Voce tem certeza absoluta dos teus argumentos? nao pode ser algum codigo falhando para caregar algum recurso, por exemplo?
Rafael
Usando jars teoricamente deveria ficar mais rápido.
testem…
não funcionou 
mas, afe!! 194k em um único arquivo?!?!?!?
Menos I/O?
Se vc renomear o arquvo “block1.gif” para qualquer outra coisa que nao comece com “block” (bloco1.gif, bloco.gif, blah.gif), vai funcionar. Resta descobrir a razao de dar pau com o nome do arquivo.
Rafael
Menos I/O?
Sim, mesmo criando jars sem compressão.
Pô cara valeu mesmo!
renomeei e funcionou que nem o .class!
Quando fui fazer a classe block até pensei q podia ser palavra reservada mas vi q num era aí nem pensei mais nisso…
Rafael, Obrigado!
Mas ai eh que ta… pq deu pau com um nome de arquivo em especifico? Nao deveria ocorrer tal problema.
Rafael
bizarro demais.
Editei o texto. Minha lógica tava furada.
Esquisito, para as outras figuras funciona. :?
getResourceAsStream() vai falhar tambem ;). Ganha um chocolate virtual quem descobrir pq falha com o blockxxx.gif.
Rafael
Estou usando o Java 5. Dentro do .jar a figura está com o nome block1.GIF, mas na chamada dentro da classe Block está block1.gif. Mudando a extensão o jogo passa a funcionar normalmente.
Por quê? Não é com getResourceAsStream que a gente acessa arquivos dentro de um Jar?
Estou usando o Java 5. Dentro do .jar a figura está com o nome block1.GIF, mas na chamada dentro da classe Block está block1.gif. Mudando a extensão o jogo passa a funcionar normalmente.
Nope. No windows isso nao faz diferenca. Se voce quiser, mude o nome do arquivo para “block.gif”, altere o .java e tente rodar. Nao vai funcionar tambem.
Por quê? Não é com getResourceAsStream que a gente acessa arquivos dentro de um Jar?
getResourceAsStream() retorna um InputStream, enquando um getResource() retorna uma instancia de URL. Ambos servem para o mesmo proposito.
Rafael
Você não entendeu, ele funcionou. Quando eu mudei a extensão de .GIF p/ .gif a 2a fase do jogo carregou normalmente com os bloquinhos aparecendo no caminho do tanque. Voltando a extensão para .GIF voltou a dar o problema.
P.S.: Eu uso Windows.
Bom, no meu XP, quando rodando dentro do jar, nao funciona nem a pau usando “block1.gif”… agora, se mudo para “bLoCo.gIf”, vai funcionar tranquilo.
Rafael
não tenho certesa, mas o problema pode estar:
- na sua Thread(que englobe o repaint)
- no local onde vc disponibilizou suas imágens(pastas)
- ou até mesmo se vc criou o .jar de forma errada.
- no momento e local que vc carrega suas imagens (usualmente no construtor)
- no tipo de imagem que vc está carregando no local errado
eu já faço jogos a algum tempo, com Applets, Aplicações e J2ME, nunca me aconteceu isto que vc está disendo!!
Posso lhe afirmar que criando o .jar, sua aplicação ganha muito mais desempenho.
Eu formo este ano em Ciênc. da Comp.
Atualmente estou desempregado!!!
ME CONTRATEM!!! !!! !!!
fpaimlima[arroba]gmail.com
Aproveitando o problema bizarro, não sei se é o mesmo problema mas aqui nós tivemos um problema muito estranho também com nome de arquivo.
Um determinado sistema, rodando em WindowsXP gerava um arquivo que depois de processado por um outro sistema deveria ser excluido.
O sistema gerava o arquivo, mas pelo Windows o arquivo não existia, mesmo via CMD usando DIR e ATTRIB não era possível ver o arquivo, mas o arquivo existia, pois a aplicação2 conseguia ler o arquivo mas o sistema1 não conseguia nem apagá-lo.
Depois de muita reza e rituais arcanos descobrimos que por alguma razão ainda obscura o nome do arquivo causava esse problema no Windows.
Não sei se esse caso tem alguma relação, mas que é estranho é?
PS: Alguém tem o telefone dos Caça-Fantasmas?
[]s Chulao
Impressionante…