Performance de .jar X .class

22 respostas
H

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?

22 Respostas

cv1

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?

H

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!)

Rafael_Steil

Voce tem certeza absoluta dos teus argumentos? nao pode ser algum codigo falhando para caregar algum recurso, por exemplo?

Rafael

louds

Usando jars teoricamente deveria ficar mais rápido.

H

testem…

louds

não funcionou :frowning:
mas, afe!! 194k em um único arquivo?!?!?!?

pcalcado

Menos I/O?

Rafael_Steil

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

louds

Menos I/O?

Sim, mesmo criando jars sem compressão.

H

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!

Rafael_Steil

Mas ai eh que ta… pq deu pau com um nome de arquivo em especifico? Nao deveria ocorrer tal problema.

Rafael

Paulo_Silveira

bizarro demais.

fcmartins

Editei o texto. Minha lógica tava furada.

fcmartins

Esquisito, para as outras figuras funciona. :?

Rafael_Steil

getResourceAsStream() vai falhar tambem ;). Ganha um chocolate virtual quem descobrir pq falha com o blockxxx.gif.

Rafael

fcmartins

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?

Rafael_Steil

fcmartins:
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

fcmartins

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.

Rafael_Steil

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

F

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

Chulao

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

M

Impressionante…

Criado 26 de fevereiro de 2005
Ultima resposta 10 de ago. de 2005
Respostas 22
Participantes 10