Aplicação Java Desktop: SWT vs. Swing [fechada]

sou um desenvolvedor web de dia e estou a pensar em construir a minha primeira aplicação de desktop real. A idéia é construir uma ferramenta que automatiza uma tarefa muito repetitiva em uma aplicação web onde nenhuma API está disponível.

Eu sei que quero usar Java. Eu usei-o antes para coisas web, conhecer a sintaxe muito bem e quero que a aplicação seja cross plattform o mais fácil possível.

Onde Não tenho tanta certeza é se devo usar SWT ou Swing. Como o meu público principal usa janelas, eu quero olha o mais nativo possível. Linux e Mac devem funcionar, mas os olhares não são tão importantes aqui.

Então, quais são os argumentos a favor e contra cada estrutura UI, Swing ou SWT?

Obrigado.

PS: desenvolvi-me no Windows usando o Eclipse. Mas estava a pensar em jogar com Netbeans.

 151
Author: janpio, 2010-02-21

10 answers

Pros Swing:

    Parte da biblioteca java, não há necessidade de bibliotecas nativas adicionais
  • funciona da mesma maneira em todas as plataformas
  • Editor integrado de GUI em Netbeans e Eclipse
  • Os bons tutoriais online da Sun / Oracle
  • suportado por extensões java oficiais (como o java OpenGL)

Cons Swing:

    A aparência e a sensação dos nativos podem comportar-se. diferente do verdadeiro nativo sistema. Componentes pesados (native / awt) esconder componentes swing, não é um problema na maioria das vezes, uma vez que o uso de componentes pesados é bastante raro

PRS SWT:

  • usa os elementos nativos quando possível, por isso sempre o comportamento nativo
  • suportado pelo eclipse, o editor de gui VEP (o VEP também suporta o Swing e o AWT)
  • grande número de exemplos em linha
  • tem uma ponte awt/swt integrada para permitir a utilização de componentes awt e swing

Cons SWT:

  • necessita de nativos bibliotecas para cada Sistema suportado
  • pode não suportar todos os comportamentos em todos os sistemas por causa dos nativos recursos utilizados (opções de dicas)
  • gerir os recursos nativos, enquanto os componentes nativos serão frequentemente eliminados com os seus progenitores outros recursos, tais como fontes, têm de ser lançados manualmente ou registados como ouvinte de eliminação para um componente de libertação automática.
 148
Author: josefx, 2014-04-03 11:35:39

Uma coisa importante a considerar é que alguns usuários e alguns revendedores (Dell) instalam um VM de 64 bits em suas janelas de 64 bits, e você não pode usar a mesma biblioteca SWT em 32 bit e 64 bit VMs.

Isto significa que terá de distribuir e testar pacotes diferentes, dependendo se os utilizadores têm 32 bits ou 64 bits VM Java. Veja este problema com o Azureus, por exemplo, mas você também o tem com o Eclipse, onde a partir de hoje as compilações na primeira página de download não correm em um VM de 64 bits.

 62
Author: Ludovico Fischer, 2010-02-21 15:26:53

Pro swing:

  • A maior vantagem do swing IMHO é que você não precisa enviar as bibliotecas com sua aplicação (o que evita dúzias de MB(!)).
  • A aparência e a sensação dos nativos são muito melhores para o swing do que nos primeiros anos.
  • o desempenho é comparável ao swt (o balanço não é lento!)
  • NetBeans oferece Matisse como um construtor de componentes confortável. A integração dos componentes Swing no JavaFX é mais fácil.
Mas no fundo linha que eu não sugeriria para usar swing "puro" ou swt; -) Existem vários quadros de aplicação para swing / swt out. Olha aqui. Os maiores jogadores são netbeans (swing) e eclipse (swt). Outro bom quadro poderia ser griffon e um bom "conjunto de componentes" é pivô (swing). Griffon é muito interessante porque integra um monte de bibliotecas e não só swing ; também pivot, swt, etc
 23
Author: Karussell, 2010-02-23 22:01:02
Eu usaria o Swing por algumas razões.
  • Tem sido em torno de mais tempo e tem tido mais esforço de desenvolvimento aplicado a ele. Por conseguinte, é provável que mais características completo e (talvez) tem menos bugs.

  • Há muita documentação e outras orientações sobre a produção aplicações performant.

  • Parece que ... como as mudanças de balanço se propagam para todas as plataformas simultaneamente enquanto as alterações ao SWT parecem aparecer em Primeiro as janelas. Distribuicao.

Se quiser criar uma aplicação muito rica em funcionalidades, poderá querer verificar o NetBeans RCP (plataforma cliente Rica). Há uma curva de aprendizagem, mas você pode juntar aplicativos agradáveis rapidamente com um pouco de prática. Não tenho experiência suficiente com a plataforma Eclipse para fazer um julgamento válido.

Se não quiser usar todo o RCP, o NetBeans também tem muitos componentes úteis que podem ser retirados e usados independentemente.

Um outra palavra de conselho, olhar em diferentes gerentes de layout. Fizeram-me tropeçar durante muito tempo quando estava a aprender. Alguns dos melhores nem estão na biblioteca padrão. As ferramentas do MigLayout (para Swing e SWT) e do JGoodies são duas das melhores na minha opinião.
 13
Author: clartaq, 2010-02-21 16:24:17
Eu escolheria o swing só porque é" nativo " para java.

Além disso, dá uma vista de olhos a http://swingx.java.net/.

 10
Author: zeroed, 2013-07-31 03:58:56

Para as suas necessidades, parece que a linha de fundo será usar Swing, uma vez que é um pouco mais fácil começar e não tão firmemente integrado à plataforma nativa como SWT.

O Swing normalmente é uma aposta segura.
 8
Author: Yuval Adam, 2010-02-21 14:47:15
Pergunta interessante. Eu não sei SWT muito bem para se gabar disso (ao contrário de Swing e AWT), mas aqui está a comparação feita em SWT/Swing/AWT.

Http://www.developer.com/java/other/article.php/10936_2179061_2/Swing-and-SWT-A-Tale-of-Two-Java-GUI-Libraries.htm

E aqui está o site onde você pode obter tutorial sobre basicamente qualquer coisa no SWT (http://www.java2s.com/Tutorial/Java/0280__SWT/Catalog0280__SWT.htm)

Espero que tomes uma decisão correcta (se existem decisões corretas na codificação)... :-)

 6
Author: Buhake Sindi, 2010-02-21 14:52:20

Se você planeja construir uma aplicação funcional completa com mais de um punhado de recursos, eu vou sugerir para saltar para a direita para usar Eclipse RCP como o framework.

Se a sua aplicação não crescer muito ou as suas necessidades forem demasiado únicas para serem tratadas por uma estrutura de negócios normal, pode saltar com segurança com Swing.

Ao fim e ao cabo, sugiro que tentem ambas as tecnologias para encontrar a que vos fica melhor. Como Netbeans vs Eclipse vs Intelij, não há a resposta absolutamente correcta aqui e ambos os quadros têm os seus próprios inconvenientes.

Pro Swing:

  • mais peritos
  • mais Java-like (quase nenhum campo público, nenhuma necessidade de dispor sobre o recurso)

Pro SWT:

  • mais nativos
  • mais rápido
 4
Author: nanda, 2010-02-21 15:48:47

Uma coisa a considerar: Screenreaders

Por algumas razões, alguns componentes Swing não funcionam bem ao usar um screenreader (e o java AccessBridge para Windows). Saiba que diferentes screenreaders resultam em comportamentos diferentes. E na minha experiência, O SWT-Tree tem um desempenho muito melhor do que o Swing-Tree em combinação com um screenreader. Assim, a nossa aplicação acabou por usar componentes SWT e Swing.

Para distribuir e carregar a biblioteca SWT adequada, você poderá encontrar esta ligação útil: http://www.chrisnewland.com/select-correct-swt-jar-for-your-os-and-jvm-at-runtime-191
 4
Author: incomudro, 2013-04-23 09:27:28
O SWT foi criado como uma resposta à lentidão do balanço na viragem do século. Agora que as diferenças de desempenho estão se tornando negligíveis, eu acho que Swing é uma melhor opção para suas aplicações padrão. SWT / Eclipse tem uma boa estrutura que ajuda com um monte de código de placa da caldeira.
 3
Author: Oliver Watkins, 2013-02-28 15:51:50