Você está na página 1de 3

Capítulo 00. Por que Java para programação de jogos?

Aqui é onde eu revistar muitas discussões (ou seja, argumentos) sobre o porquê do Java não
ser uma má escolha, para a programação de jogos. È possível que você já esteja convencido
das qualidades do Java, e este capítulo não lhe serão útil. Mas talvez ainda haja algumas
dúvidas.

1. Primeiro as vantagens, mas brevemente ...

Uma das minhas hipóteses é que o leitor (que é você) já tem uma introdução do
conhecimento de Java, o tipo de material recolhido de um semestre de curso na faculdade.
Próximo o início desse curso, você terá que se deliciava com muitas vantagens do Java:
orientação a objeto, orientação multi-plataforma, a reutilização de código, facilidade de
desenvolvimento, a disponibilidade de ferramentas, confiabilidade e estabilidade, boa
documentação, suporte da Sun Microsystems, baixo custo de desenvolvimento, a
capacidade de usar o código portado (eg C, C + +), aumentou a produtividade do
programador.
Ao invés de explicar cada um deles novamente, eu vou tomar uma abordagem diferente.
Discutirei a adequação do Java para programação de jogos em termos de equívocos e
reclamações por pessoas que pensam que os jogos devem ser implementados em C ou C +
+, ou assembly, ou qualquer outra coisa (contanto que não seja Java).

Aqui está a lista, resumidamente:

• Java é muito lento para programação de jogos;


• Java possui vazamentos de memória;
• Java é demasiadamente de alto nível;
• Java não é suportado em consoles, então por que se preocupar com ele;
• Não se usa Java para escrever um jogo real;
• A Sun Microsystems não está interessada em apoiar jogos em Java.

2. Java é muito lento para programação de jogos

Eles querem dizer que Java é lento em comparação com C ou C + +, as linguagens


dominantes para programação de jogos no momento. Este argumento é válido, quando o
Java apareceu pela primeira vez (por volta de 1996), tornou-se cada vez mais ridículo com
cada novo lançamento. Alguns números, colocar JDK 1.0 em 20-40 vezes mais lento do
que C + +. J2SE 1.4.2 (versão atual) é normalmente 1,1-1,3 vezes mais lento.

Estes números dependem em muito do estilo de codificação usado. programadores Java


devem ser bons programadores para utilizar de forma eficiente, mas isso também é
necessário para qualquer linguagem.
Java Jack Shirazi Performance Tuning site (Http://www.javaperformancetuning.com/) é
uma boa fonte para obter dicas de desempenho e links para ferramentas e outros recursos.
A aferição recente do Java vs C + + feita por Keith Lea causou um grande rebuliço
(Http://www.theserverside.com/news/thread.tss?thread_id=26634). Ele descobriu que Java
às vezes pode ser mais rápido que C + +. A resposta da multidão C + + era tipicamente
vitriolic.

A velocidade em Java é em grande parte, devido às melhorias no design do compilador. O


Hotspot tecnologia introduzida no J2SE 1.3 permite que o sistema em tempo de execução
identifique áreas cruciais de código, e estes são compilados de forma agressiva.
Hotspot é uma tecnologia é relativamente nova, e é muito provável que futuras versões do
Java vão encontrar mais velocidade-ups. Por exemplo, a próxima J2SE 1.5 é destinado a ser
1,2 á 1,5 vez mais rápido que seu antecessor.

tecnologia Hotspot tem o infeliz efeito colateral que a execução do programa é muitas
vezes
lento no início até que o código tem sido analisado e compilado.

2.1. Swing é lento

O Swing é freqüentemente atacado por ser lento. componentes GUI Swing são criados
e controlados pelo Java, com um pequeno suporte OS: o que aumenta sua portabilidade e
torna-o mais controlável dentro de um programa em Java. A velocidade é supostamente
comprometida, porque Java impõe uma camada extra de processamento em cima da OS.
Isto é uma razão pela qual algumas aplicações de jogos ainda utilizar o original Windowing
Toolkit (AWT) – é apenas um método de invólucro em torno de uma simples chamada OS.

Mesmo que o Swing seja lento (e eu ainda não estou convencido), a maioria dos jogos não
exigem complexas GUIs: um jogo em tela cheia, com controles de teclado e mouse são o
padrão, assim, no modo GUI velocidade é menos que um fator.

2.2. Meu programa é lento por causa de Java

Um ponto crucial sobre a velocidade, é saber de quem é a culpa quando um programa é


executado lentamente. Normalmente, uma grande parte do processamento gráfico de um
jogo é manipulado por hardware ou software de Java. Por exemplo, Java 3D passa suas
tarefas de processamento ao OpenGL ou Direct3X, o que pode emular capacidades de
hardware como a colisão e mapeamento. Muitas vezes, o gargalo de desempenho em jogos
em rede é a própria rede.

3. Java tem vazamentos de memória

Quando programadores de C / C + + referem-se a vazamentos de memória em Java, pode


significar que eles não compreendem como Java funciona. Java não oferece a aritmética de
ponteiro, típica do estilo C, vazamentos de memória, tais como matriz out-of-bounds , os
acessos são capturados pelo compilador Java.

No entanto, podem significar que os objetos que já não são necessários pelo programa, ou
seja, o lixo não é coletado. Isso se torna um problema se o programa mantém a criação de
novos objetos, que requerem mais memória e, eventualmente, falha quando o máximo
atribuição não seja ultrapassado.

Esse tipo de problema é uma conseqüência do estilo de programação ruim, uma vez que o
lixo coletor só pode fazer o seu trabalho quando um objeto é completamente dereferenced
(isto é, o programa não se refere a ele). A ferramenta de bom, como JProfiler
(http://www.ejtechnologies. com.br / produtos JProfiler / overview.html), pode ser uma
grande ajuda na identificação

Você também pode gostar