alguem pode me dizer a diferença
e passar algum link q ajude
Swing ou Awt? [resolvido]
10 Respostas
Primeiro surgiu AWT, depois veio o Swing.
Na implemenação, a diferença básica é que AWT usa as APIs de componentes visuais do sistema operacional onde a VM está rodando para criar componentes inteiros com praticamente todo o comportamento sendo controlado pelo SO.
Já o Swing, desenha do zero os componentes usando APIs gráficas básicas do SO, gerenciando a maior parte do funcionamento dos componentes por conta própria.
Na prática:
AWT é mais rápido, porque o SO cria os componentes de forma nativa
Swing é mais lento porque precisa desenhar tudo e controlar todos os eventos via Java
AWT tem menos componentes porque precisava manter compatibilidade entre diferentes sistemas que poderiam não ter os mesmos recursos.
Swing é mais rico em componentes já que não depende de recursos gráficos específicos dos SOs.
Hoje em dia seria mais aconselhável usar Swing porque é mais moderno e completo. E com os processadores atuais a diferença na velocidade pode não ser tão perceptível.
Contudo, fiz um emulador de jogos usando AWT porque a interface ficava mais rápida em máquinas lentas.
AWT é mais rápido, porque o SO cria os componentes de forma nativa
Swing é mais lento porque precisa desenhar tudo e controlar todos os eventos via Java
Não é bem assim. A AWT é geralmente baseada na GDI que, apesar de nativa, não tem lá a melhor performance do mundo. No caso do Windows, não era acelerada por hardware até o nascimento do Vista.
Já o Swing usa APIs como DirectX e OpenGL, e foi drasticamente otimizado em cada versão do Java.
Eu vejo poucas razões para alguém usar AWT hoje em dia. Uma delas é ser um dispositivo móvel. Geralmente a AWT tende a ocupar menos memória que o Swing, além de ter uma implementação mais simples e, por isso, estar presente em mais dispositivos.
No caso de PCs, não há razão que justifique o uso da AWT, nem mesmo o consumo inferior de memória que ela pode gerar.
Também é bom lembrar que interoperar AWT e Swing é uma péssima idéia. Os componentes da AWT sempre ficarão por cima dos componentes Swing, independente da ordem e do local que foram desenhados.
vlw pessoal ajudo bastante tanto as respostas quanto os links
AWT é mais rápido, porque o SO cria os componentes de forma nativa
Swing é mais lento porque precisa desenhar tudo e controlar todos os eventos via JavaNão é bem assim. A AWT é geralmente baseada na GDI que, apesar de nativa, não tem lá a melhor performance do mundo. No caso do Windows, não era acelerada por hardware até o nascimento do Vista.
Já o Swing usa APIs como DirectX e OpenGL, e foi drasticamente otimizado em cada versão do Java…
No caso de PCs, não há razão que justifique o uso da AWT, nem mesmo o consumo inferior de memória que ela pode gerar…
Entendi.
Na verdade as diferenças de performance eu percebia rodando Java 1.3 em um 586 com 256 de RAM.
Numa máquina dessas, aplicações swing pesadas ficavam bem lentas.
Atualmente tanto o hardware quanto o software (VM e API Java) evoluiu muito.
Aliás, você sabe me dizer se o AWT foi descontinuado ou se ainda está sendo atualizado nas últimas versões do Java?
É na época do Java 1.3, não tinha nem comparação. O Swing era uma carroça.
Se você pegar uma aplicação em 1.3 e rodar a mesma em 1.6 vai sentir uma diferença drástica de performance.
Pelo que eu saiba, a AWT só sofreu atualização significativa no que ela ainda controla, no caso, o mecanismo de eventos. Outras atualizações foram para adaptar-se as mudanças no Swing, que infelizmente deriva da AWT.
Uma coisa que talvez fique legal no seu emulador é usar o Swing em modo full screen. Isso retira o processamento de dezenas de eventos, além de permitir técnicas de vídeo avançadas como page flipping e mais otimização para as BufferedImages.
É claro, para o Swing rodar com performance total, é necessário observar algumas boas práticas. Caso contrário, você também terá perda de desempenho.
já ouví falar de SWT… será tipo uma implementação do AWT?
Não, o SWT é um pacote gráfico diferente. Foi usado principalmente no Eclipse:
Vini… aproveitando o ensejo…
vc pode me dar um exemplinho pra eu entender como usar o Inner Join por favor?
abs
André AS
Não sei o que tem a ver com o tópico, mas lá vai.
Suponha que vc tenha a tabela Aluno e Nota. Na tabela aluno vc tem os seguintes campos:
idAluno
Nome
E na nota vc tem:
idNota
idAluno
bimestre
nota
E vc quer listar o nome, o bimestre e a nota dos alunos. Como aluno é uma FK na tabela nota, basta fazer um inner join assim:
SELECT nome, bimestre, nome FROM Nota
INNER JOIN aluno ON aluno.idAluno = Nota.idAluno
ORDER BY bimestre;