Olá pessoal…
O que torna o JAVA tão lento?
T+!
Olá pessoal…
O que torna o JAVA tão lento?
T+!
O Seu AMD!
Hehehe, brincadeira!
Entao, eh o conceito da virtual machine. Mas que versao de virtual machine voce ta rodando? A 1.4 possui o sistema Hotspot que compila uma grande game de metodos para codigo nativo.
Se voce esta usando alguma coisa da J2EE, execute o java com a opcao -server, que vai otimizar o Hotspot para as classes do J2EE, e use -client (antigo -hotspot) para as classes do J2SE.
Outra coisa, voce ja viu se o seu codigo esta fazendo o que voce quer de uma maneira rapida? Cheque seu algoritmo!
Evita inicializar objetos demais, use factories com pool. Evite inicializar objetos auxiliares dentro de loops, isso estressa demais o garbage collector.
Hum, acho melhor escrever um artigo sobre o assunto 
Olá Zé
Hoje em dia java não é mais tão lento, as VMs estão bem otimizadas 
O que faz java ficar bem lento é o SWING
mas existem várias VMs alternativas como por exemplo o JRockit da BEA (roda apenas em processadores Intel Pentiun).
Eu recomendaria que você utilizasse compiladores alternativos tmb como o IBM-Jikes que tem uma melhor performance 
t+
Ze, o Java eh mais lento que as linguagens binarias como C por causa da JVM, o que GARANTE a portabilidade entre as plataformas que implementam ela. Como o codigo eh apenas pre-compilado, parte do processamento eh feito em tempo de execucao, e ai entao demora um pouco mais.
Como ja disseram nas mensagens anteriores, atualmente esta bem otimizado, e ha outras solucoes como os compiladores JIT ( lembrando que isso perde um pouco do sentido de usar java, ja que perde a portabilidade do codigo ).
Sobre a otimizacao do codigo, sempre eh bom ver se o tipo de estrutura que voce esta usando eh adequada para a situacao. Por exemplo, muitos, mas muitos mesmo, usam a classe Vetor, porem ArrayList eh muuuuuito mais rapido, so para listar um pequeno exemplo.
Ah, uma saideira: .NOT ( opa, quer dizer, NOT.YET… epa, .net ) alguem de so rodar em windows ( nao acredite quando lhe disserem que .net eh multiplataforma… apesar de atualmente haver um projeto OPEN-SOURCE chamado bono, que esta fazendo o C# rodar em Unix- sem suporte direto da MS, .net nao eh multiplataforma ) chega a ser tao “lento” quanto Java.
Se, algum dia voce tiver alguma duvida entre .net e Java, lembre-se destas duas frases:
Eh isso ai.
Rafael ( ps: desculpa pela saida do topico original, mas nao me conti!! 
Bastante interessante.
Então, o que se pode concluir dessa discussão é que trocamos Performance X Portabilidade.
Eu concluo também que, para otimizar sua aplicação Java, temos que saber o que usar e não usar. Como por exemplo o Vector X ArrayList, .append() X += (String), etc.
Estou achando interessante este mundo Java, pois venho do meu “mundinho” C++ (Win32 e Unix), o qual domino bem (blá!!! :shock: ), e achei que seria “um pouco parecido”. MAs na verdade não é tão fácil estabelecer semelhanças que não a sintaxe.
Ainda estou no início do meu estudo de Java, e estou indo bem na manha (baby steps). Grande linguagem, tem um poder bastante grande, a portabilidade é algo não preciso nem comentar. Porém esta baixa performance que me deixou intrigado. Talvez AINDA não seja uma linguagem para desenvolvermos aplicativos que estejam na camada cliente. Vejo o uso de Java mais interessante na camada negocial. Porém, em aplicações web eu estou admirado com o poder que podemos ter se utilizarmos JSP + Servlets. Não me atreveria a comparar contra o ASP + VB, acho que a diferença seria muito grande.
Já .NET não tive oportunidade de ter um contato. Ao meu ver ainda não é hora de me preocupar com esta plataforma. Sua popularidade tem que crescer mais e o mercado tem que oferecer demanda de mão-de-obra.
Obrigado pelas respostas!
Ehi sso ai xiru, agora tu pegou a ideia!! Tmb tive esses “problemas” de transicao, tanto que quando aprendi que usar += pra concatenar Strings era tao lento fiquei de boca aberta: descobri que nao tinha a minima nocao de Java, e ja achava que conhecia a mesma.
Em relacao a desenvolver aplicacoes onde o cliente interage diretamente ( referindo-se a aplicacoes graficas, com swing e essas coisas ), tem que sempre ter cuidado, ja que exige um pouco mais da maquina.
Mas eh isso, Java domina!!
Rafael Steil
A partir do Java 1.3, o javac transforma linhas assim:
em linhas assim:
Note que ainda assim vc tem uma alocação de memória e uma chamada ao toString() do buffer, que são dois métodos lentos.
Tive uma experiência num JSP que parseava mais ou menos 15 parâmetros pra montar uma query. O cara que escreveu o servlet antes de mim usava concatenação direta para coisas do tipo:
if (once) {
once = false;
query += "WHERE size >= " + minSize;
}
else {
query += "AND size >= " + minSize;
}
Esse trecho ia pra cada um dos parâmetros, e o ganho de performance ao passar pra um único StringBuffer foi imenso, mesmo num JSP.
vida longa aos buffers!!
Alou pessoal,
Só pra continuar a discussão (JSP + Serlets) X (ASP + VB).
Tenho 6 anos de experiência em programação para Internet. Comecei como estagiário usando uma linguagem de scripts desenvolvidas pela Sybase para acesso a dados via web (alguém já usou ou ouviu falar em Dynascript?).
Tenho programado em ASP + VB desde então. Mas algo me diz que esse framework ASP vai virar coisa do passado. O Tomcat ainda tem alguns probleminhas, mas quando ele ficar estável, acho que vamos começar a ver o pessoal de Seattle ficar preocupado.
O negócio é que em termos de linguagem, elegância de código, robustez (o Java é tão bom que as vezes impede vc de cometer erros bobos que são muito comuns em VB) não há nem porque tentar comparar.
Estou aprendendo Java através de Livros (Just Java para a linguagem e Desenvolvendo para WEB com JSP).
Ainda tenho um longo caminho a percorrer, mas se servir de tira dúvidas para os amigos: Larguem esse troço de VB, ASP, .net. Isso é pra tirar dinheiro dos trouxas (que ainda são milhares infelizmente). Eu estou migrando o mais rápido possível para Java, espero que os amigos mais esclarecidos façam o mesmo.
Grande abraço,
Olha só gente, na verdade nao tenho gabarito suficiente pra participar desse forum aqui, mas com relação a ultima mensagem postada, q esqueça e tal…td bem, Java eh java, obvio…mas ha coisas que hão de convir…nem sempre precisamos optar por java, depende muito da necessidade,objetividade e funcionalidade das coisas(java eh 10 nisso), mas certas aplicações comerciais mesmo, ate mesmo por conta do tempo , eh muito mais viavel desenvolver num VB(meu caso) da vida, ou num delphi… eu admiro muito java, tambem estou me esforçando pra migrar pro mesmo, assim tambem, como estou estigando em cima de python, linguagem q me deixou alucinado e fanatico pelo dinamismo e potencialidade q a mesma possui…mas ainda necessito(assim como milhares outros) do VB pra n ocasiões, muito obg a todos e desculpem - me qquer coisa… ps:linguagens como vb, delphi e outras semelhantes sao como ferramentas corel, illustrator…logico q analogicamente, ja pensou vc tendo q desenhar tudo q o corel , freehand eh capaz d fazer , apenas via codigo…vijiii!! nao ia ter muita agencia d publicidade nao viu…, pensem bem
Mas isso eh fato… Java nao se encaixa em todo tipo de aplicacao, tem lugar que eh viavel e tem lugar que nao eh. Isso ocorre com QUALQUER tecnologia, sempre tem uma que se encaixa melhor nas necessidades.
Nao estamos dizendo que Java deve ser usado em tudo, mas sim que Java eh uma otima tecnologia para diversos tipos de aplicacoes. Assim como pode ser mais recomendado usar C++ ao inves de Delphi em certos casos.
A questao eh saber analisar o que voce precisa, e como a ferramenta escolhida ira lhe ajudar com isso.
Rafael