Existem muitas estruturas de GUI disponíveis para java, mas o que é reconhecido como a estrutura de escolha atual?
A seguir, é minha compreensão das diferentes estruturas, corrija-me se estiver errado. Este é um conjunto de perguntas muito pouco definido, mas ainda acho que é valioso para quem pensa em criar aplicativos avançados da GUI.
É a própria base do balanço, ele tem um bom desempenho, mas falta componentes avançados. Se você pretende criar aplicativos avançados, o AWT provavelmente não é o caminho a percorrer. No entanto, para aplicativos GUI menores, que não exigem interfaces de usuário avançadas. Isso pode se encaixar perfeitamente, pois é uma estrutura testada e comprovada.
Baseado no AWT, como indicado anteriormente. Na sua infância, era considerado lento e com erros e fez com que a IBM criasse o SWT para Eclipse. No entanto, com o Java 5 (ou 6?) Swing tornou-se a estrutura de escolha para a construção de novos aplicativos. O Swing tem muitos componentes ricos, mas ainda faltam em algumas áreas. Um exemplo é que não há um componente TreeTable com todos os recursos que pode classificar e filtrar / pesquisar.
Criados pela IBM para Eclipse, eles pareciam pensar que o Swing não era adequado para o Eclipse na época. Por si só, é bastante de baixo nível e usa os widgets nativos da plataforma por meio do JNI. Não está relacionado ao Swing e ao AWT. Sua API é, no entanto, um pouco desajeitada e não intuitiva. Eles possuem alguns componentes avançados, como uma TreeTable. (mas acho que eles não oferecem suporte à classificação e filtragem fora da caixa). O SWT usa algumas ligações nativas (por meio do JNI?) E o discurso retórico na Internet é que essa estrutura não deve ser usada nos projetos de hoje. (Por que não?)
Baseado no Swing e sua missão é criar componentes ricos para o swing. Ainda em desenvolvimento. (embora não muito ativo.) Tenha um conjunto muito bom de componentes, como, por exemplo, TreeTable. Mas o TreeTable não suporta filtragem e classificação, tanto quanto eu sei. No entanto, ele suporta a pesquisa com destaque.
Observe que SwingX são componentes (AFAIU) que são extensões ou composições de componentes Swing existentes
JGoodies
Um quadro sobre o qual não sei nada ... O que é seus pontos fortes e fracos? O que diferencia os Jgoodies do resto?
O JGoodies OTOH trata de PLAFs e layouts.
O mais recente carro-chefe do Java / Oracle. prometendo ser o padrão de fato no desenvolvimento de aplicativos avançados para desktop ou web.
Ele renderiza a interface do usuário usando Java2D, minimizando o impacto dos legados (IMO, inchados) do Swing e do AWT. (@Augustus Thoo)
Seu foco principal parece estar no RIA (Rich Internet Applications), mas parece que também pode ser aplicado a aplicativos de desktop. E como um comentário pessoal, parece muito interessante! Eu gosto especialmente que é um projeto apache.
https://cwiki.apache.org/PIVOT/frequently-asked-questions-faq.html
Um wrapper java para a biblioteca qt nativa, escrito em c / c ++. Muito poderoso, amplamente utilizado e aceito. Possui muitos componentes da GUI e uma API fácil de usar.
Então, para tentar resumir um pouco do que estou perguntando:
Diga que eu queria criar um aplicativo de desktop hoje em Java que envolva muitos componentes avançados, o que devo escolher? E porque?
Qual dessas estruturas deve ser reconhecida como obsoleta e quais devem ser reconhecidas como estruturas de um futuro distante?
O que é a estrutura padrão de fato de hoje e quais ferramentas você utiliza para criar aplicativos java gui?
Posso me arrepender de perguntar isso, mas vou tentar de qualquer maneira:
Diz-se que C # / .net possui um conjunto muito bom de componentes fáceis de usar que podem ser flexionados em todas as direções possíveis. E depois de investigar diferentes estruturas Java, até certo ponto, não consigo dizer o mesmo sobre Java. Por que é isso? Por que o java (que é a linguagem de programação mais usada no mundo) não tem o mesmo conjunto de componentes da GUI?
Será que o java baseou seus componentes de GUI em um nível muito mais baixo e é possível escrever todos esses componentes avançados que estou procurando, mas você precisa fazer muito, se não todo o trabalho?