JavaFX vs Swing - A saga da melhor opção

26 respostas
programaçãojava
G

Estou iniciando minha carreira com programação em Java, já vi a sintaxe básica, Programação Orientada à Objetos, mas tudo isso em modo console (O que acaba deixando tudo monótono), e agora está na hora de enfrentar um desafio maior, A INTERFACE GRÁFICA… E é aí que o “bixo pega”, comecei as minhas pesquisas sobre este tipo de desenvolvimento, eu estava querendo começar a desenvolver em Swing (Pois tive uma pequena esperiência com JOptionPane), mas o JavaFX me chamou muito a atenção, por ser o que eles dizem o “tipo de desenvolvimento do futuro”.

Estou com um projeto (que acredito que foi o inicio de muitos programadores) de controle de caixa, clientes e estoque. Andei pesquisando sobre os meios disponíveis para fazer uma interface gráfica e o que mais me chamou a atenção foi esse tal de JavaFX, muitos dizem que ele veio para substituir de uma vez por todas o Swing baseado em ATW, e outros muitos dizem que vale a pena continuar no tão conhecido Swing.

Portanto, vim buscar um parecer de vocês oráculos da programação em Java, tenho consciência das funcionalidades e novidades do JavaFX, mas não sei se devo aprender ele como o primeiro passo de programação gráfica (se é que posso chamar assim, visto que FXML é uma linguagem de marcação e css de estilização) pois, não há muitas explicações/video-aulas disponíveis e parece que todos sabem o que é, mas ninguém sabe como expressar.

Que comece o combate… quer dizer… DEBATE!

att
Gustavo de Carvalho Reinaldi

26 Respostas

TerraSkilll

Esse é um projeto para um cliente real ou é só pra estudar?

Precisa realmente ser desktop (ex: haverá comunicação com impressoras fiscais)? Ou poderia ser web?

Se você deu uma pesquisada por aí (e aqui), deve ter visto que Java Desktop (seja Swing ou JavaFX) não é muito usado hoje em dia, pois a maioria das aplicações é web. Se for pra estudar é ok, mas, caso sejam projetos reais e de longo prazo, considere outras opções como C#.

Abraço.

javaflex

Concordo com @TerraSkilll sobre avaliar se o projeto pode ser web. E C# é melhor para desktop Windows.

Diretamente sobre Swing vs JavaFx, vá de Swing, tem mais mercado, JavaFx ficou só na promessa, não pegou e nunca vai pegar devido o mercado de aplicações desktop estar em baixa. Como Swing viveu a época que desktop estava em alta, tem muitos legados pra manter.

j-menezes

JavaFX está ótimo e pode ser usado com tranquilidade em projeto desktop multi plataforma.
Não caia nesse papinho de C#.

Em relação a JavaFX vs Swing, seguinte …

Swing é muito bom, com ele você consegue dar nó em pingo de água, porem…, chegou num ponto
de maturidade e otimização e não tem mais onde crescer.

JavaFX traz a modernidade visual e ainda tem por onde crescer, por isso no Java 11 está separado
do JDK, sendo o OpenJFX.

Falo por experiencia propria de alguem que usou e usa na pratica.

G

Ele é um projeto simples, sem impressoras de nota fiscal ou coisa do tipo, somente para controle básico, e estou usando o Java por conta de estudo também, já que acabei de entregar um TCC em C++ e agora tenho que fazer outro em JAVA, por isso escolhi o Java desta vez, tanto para meu projeto pessoal, quanto para meu projeto curricular.

Obrigado pela sugestão!

G

É o que falam… Mas parece também que ninguém mais quer usar o Swing e que ele já está sumindo.

Fiquei com essa dúvida por que embora o JavaFX seja lindo e tudo mais, ele é pesado para o meu desenvolvimento, digo isso no quesito HARDWARE (Pentiun 2, 4Gb Ram, Placa de Vídeo NOT FOUND), e o Swing embora seja mais leve e muuito mais fácil de assimilar, ninguém mais quer usá-lo… rsrs

Isso me mata de loucura… Mas estou pensando seriamente em ir para o Swing ://

G

ENTÃO AMIGO… ISSO É O QUE MAIS ME MATA!

Os dois têm seus pontos muito fortes, no meu caso é claro… eu queria muito aprender o JAVAFX mas o Hardware iria me atrasar, o Swing por sua vez, ele é atrasado mas têm muito mais material de estudo, coisa que o JavaFX ainda está perdendo infelizmente.

Estou pensando seriamente em ficar no JFrame por enquanto mesmo… O Swing me vencendo pelo cansaço!

Obrigado pela força!

Mike

Pq não pensa em ir para web?

javaflex

Se realmente precisa ser aplicação desktop Java, sem dúvidas continue com Swing. Mas o que pode ser um atraso de fato é fazer uma aplicação desktop que poderia ser web.

rodriguesabner

Eu uso o Swing, e como disseram, dá pra dar nó em água. Não acho que ele é atrasado, ele é antigo, mas dá pra fazer muita coisa legal nele. Tanto em interface gráfica, quanto em código.

Essa aqui é uma tela minha, eu acho que vale a pena dar uma investida em Swing hoje em dia. Mas se vc puder aprender mais sobre web, é melhor. JavaScript, PHP, HTML…

Mike

Da pra fazer muita coisa, mas a web é muito mais flexível em relação a tudo.

O fato é que praticamente não há demanda para aplicações desktop e a tendência é diminuir mais ainda.
Ai por isso eu acho que não vale a pena gastar tempo estudando algo que dificilmente você irá encontrar como requisito de trabalho (isso para quem esta começando, quem já esta na área faz o que quiser)

PS: Normalmente eu vejo umas aplicações bem feias em Swing, a sua esta até bonita

rodriguesabner

Sim, acho a mesma coisa, se a pessoa estiver começando e tiver essa escolha entre Desk ou Web, escolher Web é a melhor opção. E obrigado mano kkkkkk

jallisson_jallis

Vai de Python aprendizado rapido

javaflex

Sempre vai perder pois poucos adotam JavaFx. Swing é de um tempo que maior parte das demandas eram desktop, então tem um legado considerável. Já o JavaFx chegou em um tempo que já não fazia muito sentido sua existencia. Por isso veja bem se não está perdendo tempo com desktop, como a maioria está avisando. Tendo um motivo real, sem problemas.

j-menezes

Precisa parar com esse negocio de achar que tudo deve ser feito na web.
Tem coisas que ficam melhores em desktop.
O desenvolvedor deve saber que solução é a melhor.

Imagina uma IDE, um programa de 3d/engenharia, um sistema de gestão dentro do navegador, fica horrivel ( Embora quando dava pra usa java como applet, eu adorava mostrar o sistema desktop inteiro dentro do navegador a titulo de demonstração e alguma emergencia )

E não e’ somente o resultado final, se vai rodar em desktop ou não, tem a ver com a codificação em sí, isso envolve manutenção, pessoas envolvidas num projeto em comum, bem escrito.

Mike

A pessoa esta iniciando no mundo da programação, é melhor gastar tempo estudando algo que é pedido em 1% (Swing/JavaFX) das vagas ou 99% (HTML, CSS e JS)?

Se a pessoa não souber desenvolver pra web vai ficar horrível mesmo

j-menezes

Isso depende, se você pretende trabalhar como empregado e’ uma coisa, se pretende ser desenvolvedor independente e ter suas coisas e’ completamente diferente.

Se for front-end, javascript, css, html, angular e por ai vai, são verdadeiros demônios pra dar manutenção. E’ tudo remendado.

Mike

Se a pessoa que fez o código era iniciante, ai é uma desgraça dar manutenção mesmo kk

Mas se for experiente, ai é de boa

j-menezes

Vai nessa…, tenho uns codigos aqui de gente experiente, que dá uma olhada na criança ?

Mike

Hahahahaha melhor deixar quieto

j-menezes

Sabia decisão a sua. Cara, ter que ficar lendo codificação em javascript pra achar o erro é osso, e vai
pra lá e vai pra ca’ e lê função e mais função, daqui a pouco o outro escreveu em objeto, aff, mais remendo, socorro !!!

Mike

Dar manutenção em sistema JS puro é embaçado… se tiver um framework como Angular ou React é mais tranquilo

Mike

Pior que isso é só dando manutenção em código JS no Eclipse kkk

j-menezes

O problema é quando dá o erro lá dentro mesmo. O negocio é de chorar. Por fim terei de fazer tudo de novo.

Java como te amo, alias deixa eu te falar uma coisa. A mesma bagunça existe em c/c++ para microcontroladores; se você vê a bagunça que é, pelas barbas do profeta.

Mike

Eu nem sei como funciona microcontroladores, sou mais ficar nos meus sistemas administrativos kk

j-menezes

Hardware te atrasar ?, como assim ?
Se você conseguir rodar o java 8 nesse tal hardware ainda que não tenha o acelerador, não tem problema o javaFX encontra o gerenciador gráfico correto.

Tem muita gente falando mau de javaFX sem nunca ter usado, ouviu falar.
Essa má fama do javaFX vem daquela linguagem de script do javaFX, era a primeira versão,realmente ter que aprender mais uma linguagem de script era horrivel.

Mas as coisas mudaram com a Oracle, javaFX deixou de ser aquela linguagem de script e se tornou uma biblioteca gráfica 100% java tipo o Swing.

De celular, raspberry, desktop, javaFX vai muito bem, é fácil entender.

Agora veja bem, não quero te convencer de absolutamente nada, cada um deve saber o que é melhor para sí próprio, mas já que você pediu a opinião aqui no forum, cada um acaba dando a sua.

Bons códigos, e se precisar de alguma orientação seja qual for a sua escolha, tem muita gente legal aqui no forum.

javaflex

Eu acho ambos embaçados, JS puro extenso ou usando esses frameworks, mesmo com pessoas experientes. Só WebAssembly pode abrir oportunidades pra melhorar esse cenário.

Alguns colegas que usam Angular, mesmo experientes nisso, já passaram por complicações em requisitos que eu nunca passaria sem Angular. Até ajudo e aproveito pra aprender, mas no final das contas é um esforço que não faz diferença no dia a dia dos nossos usuários. Se tivesse trabalhando em um “Spotify” por exemplo, sem dúvidas vale o esforço de ser um SPA, pra dar aquele ar de aplicativo de página simples e entregar aos jovens fluidez a todo tempo em muitas interações na mesma página, e não ser como um sistema administrativo. São experiencias totalmente diferentes.

Entao, pelo menos para sistemas que são usados internamente pela empresa, nunca vi necessidade real de seguir essa moda SPA com REST. Os usuários dos meus sistemas sao super satisfeitos mesmo que tecnicamente o HTML venha processado do servidor junto com os dados. Quando realmente é necessário ajax, uso pontualmente jquery, trazendo a partial view processada do servidor junto com dados. O JS fica pequeno, o server muito fácil de manter (no caso ASP.NET MVC), qualquer colega júnior pode tocar o barco tranquilamente e ser ágil pra entregar o que realmente o usuário precisa de valor, com desempenho que atende 100% o fluxo do negócio.

Criado 14 de dezembro de 2018
Ultima resposta 12 de jan. de 2019
Respostas 26
Participantes 7