Quais as principais diferenças entre Swing e SWT? O modelo de eventos é o mesmo? Li alguns artigos (não me lembro onde, senão colocava a URL aqui) dizendo que SWT compromete a portabilidade, é verdade?
Swing: cria os próprios widgets (botoes, icones, textboxes, etc, etc, etc), desenhando-os na tela com Java2D ou o que for.
SWT: usa o sistema operacional pra desenhar os widgets, mas quando o SO não sabe de algum determinado controle (árvore, por exemplo), ele faz na mão.
Modelo de eventos: diferente
API: totalmente diferente
Portabilidade: na SWT, a portabilidade depende de ter uma SWT disponível para a plataforma onde se quer trabalhar, o que não é o caso da Swing, que está disponível pra todas as JREs que tem AWT (ou seja, todas). Mas, agora que a SWT está ficando mais estável no OS X, portabilidade deixou de ser problema, na prática
Se por “padronização” vc quer dizer JSR, não, e dificilmente vai ter (a menos que chova canivete um belo dia desses e a Sun passe a gostar da IBM ;))
Mas a implementação da SWT tem sido bem estável, com poucas mudanças significativas na API de versão para versão, e o código cliente não varia em quase nada de uma plataforma para outra (ou seja, o código do Eclipse para Windows, Linux e Mac varia pouco para acomodar pequenas diferenças de ambiente).
Uhnnn mas compensa essas mudanças no código por causa da mudança de ambiente?
Uma das coisas mais mão-na-roda que tem aqui é compilar o código aqui no Linux e rodar legal em tudo qto é lugar.
Pelo pouco que eu vi (minha experiencia com SWT é algo bem próximo de zero :)), essas dependências de plataforma são em coisas beeeeem específicas (embedding de componentes OLE, por exemplo, coisa que a Swing nem te deixa fazer, mas que na SWT é perfeitamente possível, e tem sido feita pra tudo quanto é lado no WebSphere Studio com o Internet Explorer / Mozilla Gecko).
Vegetto, muito pelo contrário. A SWT e a Swing praticamente empatam em performance… e a Swing está por aí desde…uhhh… 97 (?), enquanto a SWT está aí desde 2000, então ainda tem muito chão pra se otimizar
Isso! Podem mesmo! Apesar de também estar aprendendo o SWT, no que estiver ao meu alcance eu ajudarei com o maior prazer.
Aproveitando, o ensejo, gostaria de anunciar aqui, em primeira mão, o lançamento do projeto SweetReader, um leitor de RSS feeds em SWT, no SF. Na página só tem um screenshot do pré-alpha-protótipo , mas dá pra ter uma idéia de como fica uma GUI em SWT (que não seja o Eclipse ).
Pra quem usa o Eclipse, vale instalar o SWT Examples Plugin, que pode ser baixado da página de downloads do Eclipse.org mesmo. Ele traz um “launcher” de vários exemplos de widgets do SWT, muito legal.
Infelizmente não tenho, sorry. O browser que aparece no painel inferior é o IE, “embedado” num OLE container do SWT (na verdade você pode abrir qualquer aplicação que suporte OLE no SWT usando OLE Automation - Word, Excel, etc, bastando mudar o ProgID da aplicação), o que não daria certo no Linux.
Estou fazendo alguns testes com o Gecko e assim que conseguir algo eu “colo” um screenshot lá
Ivan, não é só performance que conta quando se escolhe uma tecnologia - senão a gente ainda estaria programando em… sei lá, Assembly
A SWT tem uns pontos positivos em relação à Swing bem bacanas. IMHO, o melhor deles é um modelo de objetos limpo, sem dependência com a AWT, que tinha uma série de probleminhas relacionados à idade
Outra coisa legal da SWT é que ela não imita o look-n-feel da plataforma, ela efetivamente usa o look-n-feel da plataforma. Então, algumas coisas que não funcionam muito bem na Swing (Alt -, pra mostrar o menuzinho de contexto da janela atual no Windows, por exemplo) funcionam 100% em aplicacoes SWT.
Quanto à questão de ser ou não padrão, não é pq é padrão que a gente simplesmente precisa aceitá-los… vide minhas intermináveis discussões sobre EJBs versus o resto do mundo, Hibernate versus JDO, etc