Taverna /dev/All

JavaFX hoje - alguém usa? Como progrediu?

image

Me lembro quando o JavaFX apareceu e vinha com ele a promessa de criarmos aplicações desktop maravilhosas com Java. Depois houve a história de que poderíamos também criar aplicações mobile com ele.

Aí o desenvolvimento web veio (na realidade, na época já era uma realidade) e o desktop acabou sendo apagado, ninguém mais ligava (“ninguém”).

Então hoje, anos depois, pergunto: alguém aqui usa JavaFX? JavaFX para desenvolvimento mobile pegou? É viável? Está evoluindo?

Lembro que algum tempo atrás o JavaFX havia inclusive sido removido do JDK (https://www.infoworld.com/article/3261066/java/javafx-will-be-removed-from-the-java-jdk.html), o que talvez signifique que não tenha mais tanto desenvolvimento nesta área.

Repito então a pergunta: como anda o JavaFX e se alguém aqui tem alguma experiência legal pra compartilhar.

Eu tô usando JavaFX hoje, mas num é pra mobile não. Desktop mesmo.

Não evolui significativamente. De fato, o JavaFX em si evoluiu pouquissimo, o que mais evoluiu são bibliotecas de complemento dela, como a JPhoenix que traz os designs estilo Google para o mundo Java. Isso é bacana por que esse estilo está na moda.

Meio tarde pra eu ver esse tópico (he he he), mas vou dar minha contribuição. Eu já fiz varias aplicações com JavaFx e Swing e posso dizer que a diferença entre os componentes é gritante, tanto em desempenho quanto personalização de visual e comportamento, lembro que a ideia inicial do JavaFx era ser uma alternativa rica ao Swing.

Inicialmente ele tinha até uma linguagem própria que era muito parecida com script Groovy o JavaFx Script, eu achava a linguagem ótima mas foi retirada da JDK quando a JavaFx 2.0 foi lançado, focando a nova API na linguagem Java (com a compra da Sun pela Oracle o foco mudou), mas ainda assim continuou superior ao Swing (na minha opinião) com suporte a aceleração de render por hardware, uma nova API de som (a do java não era atualizada á anos), um componente de browser moderno (o do swing é muito ruim e antigo), melhor controle da aparência por CSS e além de tudo uma IDE WYSIWYG chamado de Scene Builder.

Mas acho que o JavaFx hoje sobrevive muito bem por conta da equipe da Gluon, a Oracle claramente mudou o foco para “plataforma Java sem firulas”, abriu o código do JavaFX e do JavaFX Script e deixou a comunidade tomar conta. O primeiro sobrevive bem mas o segundo praticamente está morto.

Mas afirmo que o JavaFX é uma excelente ferramenta pra se ter em mente no desenvolvimento de aplicações chamadas de ricas (componentes visuais melhores).

1 Curtida

Muito bom ouvir algo a respeito: então podemos dizer que temos na realidade um zumbi?

Meio vivo por parte da Gluon, que dá uma solução meio que proprietária, e morto na parte open source?

Esta discussão acaba me lembrando de outra: se o desenvolvimento desktop pode voltar. Participa lá Ivan! Desenvolvimento desktop pode voltar?

Adorei o termo zumbi @kicolobo, acho que se encaixa perfeitamente.

1 Curtida

Nunca passei por empresas que adotassem JavaFx. Só ficou na promessa e não pegou pra valer no mercado. Como sempre trabalhei com clientes que usam Windows, o velho WindowsForms com C# é a melhor opção. Dentro do mundo Java ainda vale mais usar o velho Swing do que JavaFx.

Confesso que também tenho exatamente esta impressão

No mercado como um todo, quando a solução não tem que ser multiplataforma, geralmente cai para a solução microsoft ou borland, que são mais produtivas.

Quando é necessário ter uma solução multiplataforma e desktop (um nicho mais específico), caso escolha Java (mais específico ainda), a tendência é escolher Swing pois há mais informação para pesquisar devido ao tempo de vida e componentes.

Agora valer mais o Swing do que o JavaFx acho que depende, acredito que pra fazer o básico CRUD ou fluxos simples o Swing atende (90% casos acredito), mas quando é necessário algo mais específico, as coisas tendem a dificultar.

Um vez precisei salvar coordenadas geográficas baseados no clique do usuário em um mapa fornecido pelo google maps, fazer isso no web é relativamente simples atualmente, mas exige bem mais trabalho em Swing. Outro exemplo foi quando precisei colocar um navegador web em uma aba numa aplicação Swing, só foi possível resolver apelando para JNI e JNA e obter os componentes diretamente da biblioteca do SO, e te digo que essa biblioteca não retorna muita informação quanto a erros de Javascript.

Isso porque nem entrei em componentes que usam o sistema multimídia do SO como som, vídeo e renderização, que no caso do Swing é necessário usar o antigo JMF ou framework de terceiros. Tive uma dor de cabeça para atender um cliente que queria gerar um gráfico em tempo real pela voz, a aplicação tinha que ser para desktop, android e ios. Como não tinha tempo de aprender Cordova (o que tinha na época) JavaFx com o Gluon salvou o dia, em 1 mês o protótipo tava pronto rodando nas 3 plataformas.

Acho que infelizmente o JavaFx foi mal apresentado, quando apareceu tentou pegar o mercado do famigerado Flash, depois tentou ir na onda das interfaces ricas. Se simplesmente tivessem apostado desde o início em uma extensão do Swing (como o mesmo foi para o AWT) a adesão seria mais simples e favorável.

Hoje acredito que para desktop multiplataforma Java se torna a última opção devido as alternativas.

1 Curtida

itexto