[quote=matheuslmota]ViniGodoy , a máquina virtual não precisa ser a mesma para cada sistema computacional. O que torna o java portável é justamente a maquina virtual, que possui uma implementação diferente para cada OS. O que eu queria dizer, é que cada fabricante poderia fazer uma implementação da VM específica para seu console, específica para rodar jogos e que fizesse todo o controle do hardware. Toda parte de que do sistema em, por exemplo java, que necessitasse chamar alguma função do hardware, deixaria isso a controle da maquina virtual.
O que acha a respeito?[/quote]
Não é bem assim. A implementação da máquina virtual é diferente em cada sistema, mas a máquina virtual gerada é igual. O nome “máquina virtual” vem justamente daí. É um software que emula um computador. E para que haja portabilidade, deve emular um computador padrão. É claro que em cada plataforma desejada, esse software será diferente, mas quem opera sobre ele (no caso, o bytecode Java) enxerga o mesmo computador.
É por isso que em java, um int sempre tem 32 bits, não importando se o computador tem um arquitetura de 32 bits ou não.
Agora, quando eu falo em diferenciação dos consoles, estou falando em ambientes realmente diferentes. Por exemplo, veja o anúncio do playstation 3, o poderoso processador cell. O que dá poder ao console é um monstrinho, que exige um tipo de programação paralela bem diferente do que a indústria já estava acostumada. Seria difícil fazer uma VM que contemplasse coisas tão distintas, sem incluir comandos específicos.
E se vc vai fazer comandos específicos e abrir mão de um software portável, qual a vantagem de se ter uma VM?
Outra coisa, a indústria é uma das pouca que investe valores vultuosos em otimização e performance, para extrair o máximo da máquina. Engines são extremamente otimizadas, e nenhum implementador de engine gostaria de ter uma camada entre ele e o hardware. Claro, sobre as engines, pode haver jogo portável. Não é à toa que a EA tem jogos em tantas plataformas difernetes, e posso garantir que não é com várias implementações partindo do zero.