Falando em Java: Introdução ao JavaFX

Atualização: Segunda parte do artigo de JavaFX aqui.

No último Falando em Java apresentei uma palestra sobre JavaFX, apresentando a tecnologia e especulando sobre o futuro desse mercado. É a grande aposta da Sun no mercado das Rich Internet Applications – RIA, onde o Adobe Flex hoje lidera.

O JavaFX foi apresentado[1] pela Sun no último JavaOne em maio desse ano como uma nova estratégia da empresa para levar o Java ao desenvolvimento fácil de interfaces ricas com o usuário. Dois produtos foram anunciados e novidades foram prometidas para breve. Hoje o que temos é o JavaFX Mobile e o JavaFX Script.

O JavaFX Mobile é um novo sistema operacional baseado no kernel do Linux e com uma JVM portátil que pretende levar o Java ao novo mercado dos “smartphones” a la iPhone. Seria voltado ao desenvolvimento fácil de aplicativos bonitos e usáveis em ambiente móvel.

Já o JavaFX Script é uma nova linguagem de programação pensada para o desenvolvimento de interfaces Swing/AWT/Java2D de forma mais fácil do que hoje. A idéia da Sun é atacar o mercado Desktop, onde o Java tem ganho certo mercado ultimamente, mas também atacar o Adobe Flex e o MS Silverlight no mercado de Rich Internet Applications, as RIAs.

Hoje o mercado de aplicativos ricos embutidos no navegador é dominado pelo Adobe Flash (diretamente ou através do Flex, por exemplo). Os Applets foram a primeira tentativa da Sun de atacar esse mercado lá no começo da década de 90 mas o Java não vingou nesse mercado; o JavaFX hoje é a tentativa de retomá-lo. Isso ao mesmo tempo que a Microsoft entra com o Silverlight e onde JavaScript/AJAX consegue fazer já boa parte do que essas tecnologias se propõe a fazer.

Alguns problemas frequentemente apontados para o fracasso dos Applets:

  • Difícil de desenvolver: programação “pura” em Swing é chato e improdutivo
  • Falta de boas ferramentas para desenvolvimento visual: o Flash só é o que é hoje porque atacou o mercado dos designers e desenhistas antes de se preocupar com os programadores
  • Java é feio?
  • Java é lento? E ninguém tem Java instalado na máquina?
  • Todas essas questões já estão sendo vislumbradas pela Sun. O Java hoje não é lento (era, uma década atrás) e estima-se que 91% dos PCs possuam Java instalado. Mas ainda temos problemas: o tempo de Startup da JVM ainda é alto (em grande parte devido às operações de I/O para subir a VM) e o download é grande. Ambas as questões devem ser solucionadas com a chamada Consumer JRE[2], uma JRE modular onde se baixa apenas os componentes necessários para rodar as aplicações normais e módulos extra são baixados automaticamente sob demanda.

    As questões da dificuldade de desenvolvimento e falta de boas ferramentas são justamente o foco do JavaFX.

    O JavaFX Script é uma linguagem de script declarativa e orientada a objetos, com sintaxe simplificada para desenvolvimento de GUIs. É bem diferente do Java tradicional mas já possui plugins para Eclipse e Netbeans para facilitar o desenvolvimento.

    Veja uma comparação entre um Hello World em Swing e em JavaFX:

    // em Swing
    public class HelloSwing {
    	public static void main(String[] args) {
    		JFrame frame = new JFrame("Meu programa em Swing");
    		JLabel label = new JLabel("Olá Mundo");
    		Dimension d = new Dimension(300, 50);
    		frame.setSize(d);
    		frame.add(label);
    		frame.setVisible(true);
    	}
    }
    

    Em JavaFX:

    Frame {
    	title: "Meu programa em javafx"
    	width: 200
    	height: 50
    	visible: true
    	content: Label {
    		text: "Olá mundo"
    	}
    }
    

    Note a semelhança com linguagens de marcação como XML, onde a forma declarativa e aninhada de se agrupar os componentes facilita o desenvolvimento e a leitura do programa.

    Você pode executar esse exemplo através do Java Web Start, clicando aqui.

    Na palestra, desenvolvi um pedaço de uma loja virtual com efeitos 3D e animações. Usamos nesse exemplo recursos avançados do JavaFX como binding de componentes para classes de modelo, buscas otimizadas em arrays, triggers para eventos em variáveis, Java2D, animações e outros. No próximo artigo trato desses assuntos com mais detalhes, mostro como configurar o ambiente de desenvolvimento, bem como outras coisas como concorrência de Threads, integração com o Java e conectividade.

    Você pode executar o demo clicando aqui.

    Os exemplos são apresentados em Java Web Start em formato jar. O ambiente de execução do JavaFX é distribuído junto e possui 2MB; nas futuras versões do JRE, o JavaFX deverá vir embutido, diminuindo consideravelmente o tamanho do download.

    Para ver os fontes, basta descompactar o jar e ver os arquivos .fx. O código fonte é de propriedade da Caelum, exceto o componente DisplayShelf desenvolvido por Chris Oliver e liberado no Site dele. [5]

    Até o próximo artigo!

    Atualização: Segunda parte do artigo de JavaFX aqui


    Algumas referências:

    [1] Apresentação do Chris Oliver sobre o JavaFX/F3 no JavaOne

    [2] Palestra apresentada no JavaOne sobre o mercado Desktop Java e a Consumer JRE

    [3] Tutorial para iniciantes em JavaFX

    [4] Especificação da linguagem JavaFX Script

    [5] Blog do Chris Oliver, desenvolvedor do JavaFX

    [6] Projeto OpenJFX com a implementação do JavaFX e muito material

    Tags: , ,

    23 Comentários

    1. Nelson 19/07/2007 at 10:51 #

      O demo da loja virtual está abrindo o “Olá Mundo” em vez da loja virtual.

    2. mchiareli 25/07/2007 at 12:12 #

      Sergio, a aplicação que voce mostrou noa “falando em java” mostrava uma aplicação javafx rodando em um frame que parecia ser swing, como fica o javafx em relação a web, a mesma aplicação podera rodar no browser tem algum exemplo de código?

    3. Adelio 27/07/2007 at 13:24 #

      Sergio,

      Conforme o comentátio do Mchiareli, se tiver algum exemplo, por
      gentileza gostaria também de ver.

      Obrigado.

    4. Sergio Lopes 27/07/2007 at 16:14 #

      Oi pessoal!
      No próximo artigo eu coloco um exemplo de integração no Site através de Applet. Pra quem quiser ir pesquisando antes, tem alguma coisa aqui:

      http://jukka.us/javafxapplet/article/index.html

      []’s
      Sergio

    5. vandeir 19/09/2007 at 12:19 #

      Sergio, blz cara sou o vandeir e to fazendo um TCC sobre javaFX me ajudo muito esse artigo q tem aqui vc poderia me ajudar a me passas uns conteudo de javaFX, estou tendo muita dificuldade por causa q so tem conteudo e ingles obrigado e-mail vandeir_bassoli@hotmail.com obrigado

    6. Ana 23/09/2007 at 15:34 #

      Olá!
      Gostaria de ver um exemplo de uma aplicação com JavaFX Mobile!

      [ ]s

    7. Silveira Neto 30/09/2007 at 17:25 #

      Eu gostei de ter uma alternativa ao Flash e ao Silverlight, sendo que livre e já com a base do Java. Espero que dê certo.

    8. eduardo 03/10/2007 at 08:22 #

      Sobre o artigo achei interessante saber que agora temos mais uma possibilidade de criação, agora dizer que flash só é o que pois se preocupa primeiro com designers, não condiz, pois que não programa em flash já morreu faz tempo, desde as versoes mais antigas as linguaguens AS 1.0 e 2.0, sempre fizeram parte de qualquer projeto (bem feito) de web. realmente desenvolver aplicações com applets é muito chato e ruim…porem comparar flash com applet e comparar a praia grande com Caribe.

    9. Francisco 06/10/2007 at 04:59 #

      Qual seria a vantagem de eu migrar meus sistemas gigantes em Swing para JavaFX Script?

    10. Inocêncio 11/11/2007 at 12:05 #

      Bom a introdução, porém você disse que a linguagem JavaFX Script parece com XML, porém não tem nada haver com XML e sim foi baseada usando o YAML (o mesmo de marcação que o Ruby usa).
      http://en.wikipedia.org/wiki/Yml

    11. velson 14/01/2008 at 11:48 #

      queria saber como baixar o criador de jogos de perguntas e respostas

    12. velson 14/01/2008 at 11:51 #

      queria saber como baixar o criador de jogos de perguntas e respostas me ajude a conseguir isso.

    13. Marco Zugaib 04/02/2008 at 14:41 #

      Não consegui achar os jar. Como faço para ver os códigos?
      Fiquei muito interessado, já que estou começando a desenvolver muitas aplicações em Desktop. Uso o NetBeans para desenhar, mas eu prefiro o Eclipse mesmo. Acho que agora vou conseguir aposentar o NetBeans! 🙂

      Essa da loja usa Flash? Ficou com a cara do iTunes!

    14. Sérgio Lopes 05/02/2008 at 22:19 #

      Oi Marco!

      A loja não é em Flash… é tudo JavaFX!!
      Você pode baixar os jars direto http://www.caelum.com.br/javafx/resources/demo-lojavirtual.jar

      Sérgio

    15. Glauber Matos 20/02/2008 at 15:54 #

      Sou fã de Java mas, acredito que esta tecnologia pode vingar em alguns aspectos mas em outros não. Por exemplo, construir soluções Web com Java Fx é lamentavel dado que não é possivel rodar no browser. Mesmo que seja possivel fazer alguma adaptação com applet, ainda sim é ruim e não se compara a facilidade de se obter um plugin flash pelo seu tamanho de download e pela velocidade de startup de uma exibição em flash. Nestes aspectos Java FX fica muito, mas muito atrás do flash e do silverlight. Já o Java FX Mobile é uma boa iniciativa.

    16. stereobroo 04/12/2008 at 20:19 #

      Ola a todos,

      nenhum dos links funciona … 🙁

      Help, brigado

    17. facildelembrar 19/04/2009 at 11:07 #

      Fiz uma rápida comparação entre as tecnologias flash, flex, actionscript puro, silverlight, java + scenegraph e javafx. Quem estiver interessado, pode achar o artigo em http://my.opera.com/facildelembrar/blog/comparacao-rias-parte-2-programas-simples

    18. eU 27/05/2009 at 05:00 #

      a referencia [3] esta fora do Ar..
      O link certo é :
      https://openjfx.dev.java.net/ja/Getting_Started_With_JavaFX.html

    19. linxfox 16/06/2014 at 15:41 #

      algm pode reupar os links?

    Deixe uma resposta