Falando em Java: Introdução ao JavaFX

Por Sérgio Lopes em 18/07/07

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.

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

    18 Comments »

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

      Comment by Nelson — July 19, 2007 @ 10:51 am

    2. 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?

      Comment by mchiareli — July 25, 2007 @ 12:12 pm

    3. Sergio,

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

      Obrigado.

      Comment by Adelio — July 27, 2007 @ 1:24 pm

    4. 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

      Comment by Sergio Lopes — July 27, 2007 @ 4:14 pm

    5. 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

      Comment by vandeir — September 19, 2007 @ 12:19 pm

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

      [ ]s

      Comment by Ana — September 23, 2007 @ 3:34 pm

    7. 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.

      Comment by Silveira Neto — September 30, 2007 @ 5:25 pm

    8. 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.

      Comment by eduardo — October 3, 2007 @ 8:22 am

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

      Comment by Francisco — October 6, 2007 @ 4:59 am

    10. [...] tempo que postei a primeira parte dessa introdução ao JavaFX, baseada na minha palestra no Falando em Java 2007. Se você não leu, leia primeiro aquele artigo [...]

      Pingback by » Falando de JavaFX, parte 2 » blog.caelum.com.br — November 10, 2007 @ 5:21 am

    11. 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

      Comment by Inocêncio — November 11, 2007 @ 12:05 pm

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

      Comment by velson — January 14, 2008 @ 11:48 am

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

      Comment by velson — January 14, 2008 @ 11:51 am

    14. 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!

      Comment by Marco Zugaib — February 4, 2008 @ 2:41 pm

    15. 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

      Comment by Sérgio Lopes — February 5, 2008 @ 10:19 pm

    16. 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.

      Comment by Glauber Matos — February 20, 2008 @ 3:54 pm

    17. Ola a todos,

      nenhum dos links funciona … :-(

      Help, brigado

      Comment by stereobroo — December 4, 2008 @ 8:19 pm

    18. [...] Falando em Java: Introdução ao JavaFX, 2007-07-18, e Falando de JavaFX, parte 2, 2007-11-10, por Sérgio Lopes no Blog da Caelum Ensino e Inovação em Java. [...]

      Pingback by Blog do Márcio d’Ávila » JavaFX em foco — December 12, 2008 @ 3:35 am

    RSS feed for comments on this post. TrackBack URL

    Leave a comment