Falando em Java: Introdução ao JavaFX
Por Sérgio Lopes em 18/07/07Atualizaçã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:
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
O demo da loja virtual está abrindo o “Olá Mundo” em vez da loja virtual.
Comment by Nelson — July 19, 2007 @ 10:51 am
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
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
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
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
Olá!
Gostaria de ver um exemplo de uma aplicação com JavaFX Mobile!
[ ]s
Comment by Ana — September 23, 2007 @ 3:34 pm
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
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
Qual seria a vantagem de eu migrar meus sistemas gigantes em Swing para JavaFX Script?
Comment by Francisco — October 6, 2007 @ 4:59 am
[...] 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
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
queria saber como baixar o criador de jogos de perguntas e respostas
Comment by velson — January 14, 2008 @ 11:48 am
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
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
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
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