Velocidade no Java

Pessoal, essa pergunta é do curso de java lá da USP, resolvi postar aki para ver quais as sugestões que podem me oferecer e o porque delas.

A velocidade de execução de programas Java ainda representa um grande desafio para a linguagem. Uma grande parte da lentidão da linguagem ainda deve-se ao processo de interpretação, via software, dos programas. Descreva dois mecanismos que podem ser incorporados ao programas Java para aumentar sua velocidade de execução.

Eu não entendi direito, quais seriam esses métodos… tipo algo como evitar o uso desnecessários de arrays, efetuar ao máximo a re-utilização de métodos e não descrevê-los novamente… num sei se é isso que o professor quer, pois quem deu a aula foi um professor e quem passou o exercício foi outro…

Agradeço desde já!
:smiley: :smiley: :smiley:

Bom, uma das coisas é a tecnologia HotSpot, mas isso hoje em dia já faz parte dos bons compiladores do mercado. HotSpot é o JIT em si, ou seja, a compilacao nativa, em tempo de execução, das partes do programa que mais são acessadas.

Do meu ponto de vista a pergunta esta meio vaga, da para interpretar de várias formar diferentes. Uma delas é o que você já disse, ou seja, código ruim leva a execução lenta. Outra coisa que certos malucos estão querendo fazer é a implementação de uma virtual machine direto no hardware ( via chip ), porém isso é algo que possivelmente não terá muito sucesso ( se chegar a andar o projeto ).

A parte da frase “que podem ser incorporados ao programas” dá a entender que é algo externo, “plugável” no código binário. Uma dessas saídas seriam então otimizadores de código ( analizadores que verrem o binário, ou se for um compilador, ja otimizam na hora de compilar mesmo ) que procuram por coisas que podem ser melhoradas, combinadas etc, tornando a execução das tarefas mais rápidas. Acho que a maioria dessas ferramentas disponível no mercado é paga.

Rafael

Sobre desempenho em Java, o artigo publicado na última JavaMagazine (no.3), “Performance em Java”, de Osvaldo Pinali Doederlein, é uma boa leitura.
Atenção: Isto não foi uma propaganda, nem faço parte do corpo editorial da JavaMagazine :slight_smile: - aliás, estou bem longe de algo assim…

Li algo sobre JVM via chip e achei que seria a solução mais viável para acabar com a lentidão dos softwares feitos em Java… :shock:
Tecnicamente não tenho idéia de como isso poderia ser feito, mas lembro que na Faculdade no começo do Java diziam que seria a linguagem das máquinas, que sua torradeira poderia se comunicar com o microondas, e que o microondas teria acesso a internet, que poderiamos ligar qualquer eletrodoméstico de qualquer lugar, enfim… Isso tudo com o tal do Bluetooth e a linguagem Java… Se é que eu não esteja viajando) :lol:
Será que um dia a JVM poderia entrar no processador assim como o MMX foi incorporado aos processadores Pentium MMX e AMD 3DNow?
Já ouviu falar de celulares que possuem um mini JVM em seus chips, e que se pode desenvolver pequenas aplicações no tal celular?

Sim, tem essas "mini-jvm’ ( creio que tudo seja j2me ), porem o que eu me referia era que estavam querendo incorporar o Java padrao direto nas placa-mae dos computadores de mesa, mas parece que a Sun nao gostava muito da ideia…

Talvez com a demanda, em um futuro meio incerto isso ate venha a acontecer, mas para isso Java teria que estar sendo usado em massa e mostrar real vantagens para os facricantes colocarem tal chip direto nos pcs.

Rafael

Segundo li em um material da SUN declarar um método como final culmina com uma otimização já que permite uma chamada direta ao método, em vez de ter que utilizar a invocação virtual do método que envolve uma consulta em tempo de execução para decidir o método chamado … acho que não é algo muito significativo, mas é uma possibilidade que você pode comentar com seu professor …

Excelentes sugestões… E Torelli… valeu mesmo… isso vai gerar uma boa discussão lá!!!

Valeu!!