Para uma aplicação desktop com controles padrões tipo labels, text box progressbars, buttons painels, etc, qual seria a solução mais prática ou pragmática para tornar mais produtivo e menos sofrível o desenvolvimento de aplicações GUI usanso J2SE detre as soluções, ferramentas e abordagens abaixo:
Usar Layout Managers como JGoodies, Mig Layout
Usar o Matisse Editor no NetBeans
Usar Netbeans Plataform
Usar Java FX
Usar Merapi (para permitir a gui em air/flex
Quais as vantagens e desvantages de cada abordagem e o que torna o desenvolvimento de gui em java algo mais produtivo e rápido.
Eu usei o Visual Editor SDK (VE1.4) no Eclipse. muito bom, consegui criar telas muito rapido, ñ conheço as outras mais está é muito boa… é um puglin para o Eclipse.
Vou dar minha opinião pessoal. Gosto de trabalhar com o Matisse do Netbeans porque ele permite desenhar telas de forma rápida (produtiva e “menos sofrível” como você mesmo utilizou) . Ele é ideal em aplicações JEE onde normalmente podemos ter interface Web e Desktop e toda a arquitetura se divide em camadas tirando a complexidade da gui. Resumindo, neste caso , as telas se comportariam como formulários de entrada e saída de dados vindo do servidor e/ou outras aplicações /serviços.
Se seu sistema tiver recursos e requisitos mais complexos de tela, talvez esta abordagem seja mais eficiente no início do projeto, onde você prototipa e mostra já algum valor para seu cliente. No decorrer do desenvolvimento a necessidade maior de “programar” em cima da tela favoreça mais os gerenciadores de layout citados por você. Apesar do código gerado pelo netbeans ser perfeitamente editável, você pode em alguns momentos muito específicos encontrar dificuldades.
Ainda não trabalhei com Java FX em projetos reais, então não posso opinar. Não sei se é tão produtivo quanto utilizar o próprio Flex com Blaze DS.
Quanto ao Netbeans platform, ele é destinado à aplicações modulares para desktop, seguindo a mesma linha do OSGi Framework. O fato de utilizá-lo pode render alguma produtividade, por ter já alguns componentes de interface construidos e configuráveis, mas no meu caso precisei de um tempo adicional para entender o framework e utilizá-lo de forma correta, seguindo os princípios de aplicações modulares. Se for para utilizar apenas para ganhar tempo no desenho de telas não sei se é uma boa.
Trabalhei com Swing 2 anos, e consegui uma produtividade razoável utilizando o SwingBean.
Há 1,5 ano estou mexendo com Adobe Air (Desktop do Flex). Realmente a produtividade é incomparável. Definir a parte visual com XML é muito melhor que a abordagem OO clássica do Swing. E o melhor, se vc programa em Flex, já programa em Air, pq não tem diferença nenhuma. Vc apenas ganha umas bibiliotecas para mexer com recursos do computador que o browser não permite, como acesso ao sistema de arquivos. Hoje em dia, quando se fala em Desktop, eu penso logo no Adobe Air. Swing nunca mais :twisted: .
Fora que é trankilo de fazer o desktop acessar serviços remotos, o instalador é simples de fazer, e fazer update automático do aplicativo é mais fácil ainda. Segue um sistema que fiz com Adobe Air Revelção Virtual. Ele acessa serviços remotos e faz update automático quando atualizo o projeto. Veja o vídeo de instalação para ver como fica bom. Isso pq eu mando mal em design, área em que estou buscando evoluir…hehe.
Lógico que é outra tecnologia e vc precisa aprendê-la. Mas se vc sabe Java e JavaScript, a curva de aprendizado é bem pequena.
Hj ministro cursos na tecnologia. Se quiser dar uma olhada, acesse a Nuccitec. Aí sim a curva de aprendizado fica menor ainda…rs.
[]s
[Alterado] Segue tb o Tour de Flex para ver uns componentes da tecnologia.