JavaFx é a nova tecnologia para o desenvolvimento front end que, futuramente deverá ser o padrão amplamente utilizado por desenvolvedores java. Com ele é possível criar objetos para substituir o Swing como botões, caixa de texto, radio button, combobox, tabelas, etc ou gráficos, objetos 3D, jogos, enfim, trata-se de uma api completa para criar toda a camada de visão para o usuário final.
Até a versão 1.3, era uma linguagem de script, com sintaxe própria, diferente da sintaxe geral da linguagem java, e era oferecido como um componente externo do java para a criação de aplicações rich interface web. A ideia inicial da SunMicrosystens, que era dona do java, era "vender" o javafx como um componente "premium", para os desenvolvedores que necessitassem de uma interface aprimorada, mais ou menos como o Microsoft Silverlight e o Adobe Flex. Quando a Sun foi comprada pela Oracle, a versão antiga do javafx foi abandonada. No seu lugar foi apresentado a versão nova 2.0, que utiliza a mesma sintaxe da linguagem java, além de inúmeros novos recursos, como aceleração gráfica a nível de hardware, edição e estilização por arquivos CSS, melhora em desempenho e outras ferramentas como o Scene Builder para o desenho de interface gráfica com arquivos fxml, que aumentam muito a produtividade no desenvolvimento de sistemas do estilo "Desktop", "ERP", etc. Desde a versão 2.2 e java 7u6 já vem embutido no JRE/JDK, não sendo necessário nenhum tipo de instalação adicional, assim como o OpenJDK desde a versão 8. O framework foi amplamente aceito pela comunidade e teve seu código totamente open source.
As aplicações desenvolvidas com javafx podem ser tanto desktop, jnlp ou web, o próprio Netbeans cria de forma automatizada as 3 formas de aplicações, ficando o desenvolvedor livre para escolher a forma como irá construir e distribuir o seu software. Também conta com ferramentas para a criação de instaladores para os vários sistemas operacionais, como o .exe para Windows e .deb para Debian/Ubuntu. Na minha opinião é hoje uma das melhores ferramentas para o desenvolvimento front end, muito melhor que seus concorrentes diretos, tem um excelente desempenho, trabalha com áudio, vídeo, 3D, efeitos, formulários, não é limitado a apenas um ambiente como web, mobile ou desktop, isto é, pode migrar ou mesmo rodar em todos esses ambientes sem ser necessário modificação no código, desde que tenha sido projetado para ter um design responsivo para evitar erros de visualização nos diferentes tamanhos de tela.
Este tipo de comparação é inevitável, mas na verdade o javafx é muito mais completo que o swing. Apesar de o swing conter muitos componentes e muitas empresas tem muitos componentes customizados desenvolvido em swing que são reutilizados, tudo isso e muito mais pode ser feito da mesma forma com javafx, e ainda, componentes swing podem ser adicionados com componentes javafx. Isso mesmo, você que ficou horas/dias programando seu componente customizado com swing, não precisa abandoná-lo, pode ser utilizado normalmente.
Javafx trabalha com componentes modernos como gráficos, áudio, vídeo, canvas, 3d, printing, multitouch, etc e ainda possui todos os componentes do swing como botões, tabelas, textfields, datapicker, combos, etc.
O desenvolvimento de sistemas com javafx também é muito mais produtivo, principalmente quando se utiliza a ferramenta Scene Builder. O código fica muito mais limpo, sem aquela geração de código não editável do swing. O padrão MVC é amplamente utilizado pela arquitetura, o código de visualização pode ser criado com a linguagem java em classes próprias ou código fxml. A ferramenta Scene Builder gera o arquivo fxml, cabe ao programador apenas arrastar e soltar os componentes para desenhar a tela da aplicação. No entanto, a utilização de fxml não torna o software lento, pois serve apenas para marcação de posição/configuração dos componentes. Todo o processo de processamento é gerado pela api/JRE, tornando o código extremamente limpo. As ações/handler (controller) dos componentes é escrito em arquivos java e podem ser pré-gerados pelo Scene Builder. Isto torna a integração com as outras classes java dos models (beans, pojos) extremamente fácil, além de poder reutilizar classes do domínio de negócio já criadas com swing. A manutenção do código também fica muito mais simples.
Esse modelo de desenvolvimento também facilita a especialização da mão de obra, entrega contínua e upgrades de software, pois a equipe pode ser dividida entre desenho de interface com java ou fxml e ações/interações/modelo de dados do software. Outra vantagem desse modelo é que fica muito mais independente de IDE, com códigos mais simples que reduzem a complexidade e migração entre IDE's.
Como a arquitetura é projetada em camadas e em linguagem java, javafx trabalha perfeitamente com outras api's/frameworks como JPA/Hibernate, Spring, ireports, etc.