Eu tenho um programa muito grande que atualmente está usando SWT. O programa pode ser executado no Windows, Mac e Linux, e é um grande aplicativo de desktop com muitos elementos. Agora que o SWT é um pouco antigo, gostaria de mudar para Swing ou JavaFX. E eu gostaria de ouvir seus pensamentos sobre três coisas.
Minha principal preocupação é o que será melhor para um aplicativo de GUI de desktop? (Procurei on-line e muitas pessoas sugerem que o JavaFX é tão bom quanto o Swing, mas não vi muitos argumentos válidos, exceto simples guerras de opinião). Ele tem que funcionar no Windows, Mac e em algumas distribuições populares do Linux.
O que será mais limpo e fácil de manter?
e o que será mais rápido construir do zero?
Estou usando a metodologia MVC no meu aplicativo, se isso for de alguma ajuda.
Respostas:
Tudo sendo igual, provavelmente JavaFX - a API é muito mais consistente entre os componentes. No entanto, isso depende muito mais de como o código é escrito, e não da biblioteca usada para escrevê-lo .
Altamente dependente do que você está construindo. O Swing tem mais componentes para ele (de terceiros e embutidos) e nem todos chegaram à plataforma JavaFX mais recente ainda; portanto, pode haver uma certa quantidade de reinventar a roda, se você precisar de algo pouco personalizado. Por outro lado, se você quiser fazer transições / animações / vídeos, isso é uma ordem de magnitude mais fácil no FX.
Outra coisa a ter em mente é (talvez) a aparência. Se você absolutamente precisa ter a aparência padrão do sistema, o JavaFX (atualmente) não pode fornecer isso. Não é muito importante para mim (prefiro a aparência padrão de FX), mas sei que algumas políticas exigem uma restrição aos estilos do sistema.
Pessoalmente, vejo JavaFX como a "vinda para cima e" biblioteca de interface do usuário que não é muito lá ainda (mas mais do que útil), e Swing como a biblioteca UI limítrofe-legado que está totalmente caracterizado e apoiado por um momento, mas provavelmente não será muito nos próximos anos (e, portanto, as chances são de que o câmbio o ultrapassará em algum momento).
fonte
Conforme declarado pela Oracle, o JavaFX é o próximo passo em sua estratégia de rich client baseada em Java. Portanto, é isso que eu recomendo para sua situação:
Para obter mais informações, consulte esta postagem de perguntas frequentes da Oracle sobre JavaFX aqui.
fonte
Ninguém o mencionou, mas o JavaFX não compila ou roda em certas arquiteturas consideradas "servidores" pela Oracle (por exemplo, Solaris), devido ao suporte "jfxrt.jar" ausente. Fique com o SWT, até novo aviso.
fonte
Eu não acho que exista uma resposta certa para essa pergunta, mas meu conselho seria continuar com o SWT, a menos que você encontre sérias limitações que exijam uma revisão tão maciça.
Além disso, o SWT é realmente mais novo e mantido mais ativamente que o Swing. (Foi originalmente desenvolvido como um substituto para o Swing usando componentes nativos).
fonte
Eu procurava em volta para encontrar alguns componentes (de terceiros?) Que fazem o que você deseja. Eu tive que criar componentes Swing personalizados para uma exibição da agenda onde você pode reservar vários recursos, bem como uma grade semelhante ao Excel que funciona bem com a navegação do teclado e assim por diante. Eu tive um tempo terrível para que eles funcionassem bem, porque eu precisava me aprofundar em muitos dos meandros do Swing sempre que encontrava um problema. O comportamento do mouse e do foco e muitas outras coisas podem ser muito difíceis de acertar, especialmente para um usuário ocasional do Swing. Espero que o JavaFX seja um pouco mais orientado para o futuro e fácil de usar.
fonte
Em notebooks mais antigos com vídeo integrado, o aplicativo Swing inicia e funciona muito mais rápido que o aplicativo JavaFX. Quanto ao desenvolvimento, eu recomendaria mudar para o Scala - o aplicativo Scala Swing comparável contém 2 a 3 vezes menos código que o Java. Quanto ao Swing vs SWT: a GUI do Netbeans consideravelmente mais rápida que o Eclipse ...
fonte