JavaFX Rafael W. Frasson Danilo Felicio Jr. João Otávio Dambrós Dezanet INE5612 – Desenvolvimento de Sistemas Orientados a Objetos II O que é JavaFX? JavaFX é uma plataforma de software multimídia baseada em java para criação de RIA - Rich Internet Applications (Internet Rica). Internet Rica? Como assim? O que seria? Primeiramente, explicarei o que é uma Internet Rica… Rich Internet Application (RIA) De modo geral aplicacões RIA unem a funcionalidade dos softwares com o extenso alcance e facilidades econômicas de aplicativos para internet. É um conceito inovador no modo de pensar e desenvolver na web. Proporciona um novo nível de experiências para usuários e desenvolvedores. A tecnologia RIA fornece um ambiente dinâmico com capacidade de manusear aplicativos de forma bastante interativa. JavaFX A Sun Microsystems é responsável pelo desenvolvimento do JavaFX, baseado na tecnologia Java e concebido para proporcionar uma maior interatividade. Já possui uma vasta variedade de aplicações em dispositivos, incluindo computadores pessoais, conversores(set-top boxes), dispositivos móveis e dispositivos que usam a tecnologia Blu-Ray. JavaFX Script Criado pelo engenheiro da Sun Chris Oliver, possibilita o desenvolvimento rápido de interfaces Swing/AWT/Java2D de forma mais fácil do que hoje. A idéia da Sun é não só 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. 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. Seria voltado ao desenvolvimento fácil de aplicativos bonitos e usáveis em ambiente móvel. O que eu crio com JavaFX? Você pode criar interfaces com o usuário em JavaFX, animações, jogos, applets, e muito mais, com somente uma linguagem! Além de JavaFX ser multiplataforma e portátil como o Java JavaFX é outra linguagem? Sim. A sintaxe de JavaFX é novidade, é chamada "declarativa". Quer dizer que você pode criar aplicativos sem usar variáveis, somente declarando um objeto dentro do outro. JavaFX é compatível com Java? Praticamente 100%. Se você tem uma aplicação em Java funcionando, você pode usar as classes com JavaFX. Esta é uma das maiores vantagens de JavaFX. Há algo pronto em JavaFX? Muita movimentação da comunidade está sendo feita. JFXtras, Griffon, CRUDFx entre outros são exemplos. Por que não vejo material sobre JavaFX tanto quanto em Java? Parece óbvio, mas é uma dúvida comum, pois JavaFX promete muito, mas a ausência de material está no fato de JavaFX ainda estar na adolescência. Por que as empresas não adotam JavaFX de cara? A linguagem está evoluindo, da versão 1.1 para a 1.2 muitas mudanças aconteceram. Palavras chaves foram removidas, novas classes adicionadas entre outros. A tendência é a evolução continuar, assim, é normal uma espera das empresas e sites para aderirem a tecnologia, mas tenha certeza que todos estão de olho! Características do JavaFX É uma linguagem baseada no conceito de perfil comum para permitir facilmente sua disseminação através de dispositivos que a suportam. Esse conceito permite o desenvolvimento de aplicações tanto para dispositivos móveis quanto para desktop. Características do JavaFX O modelo “Drag to Install” permite ao usuário final arrastar aplicações JavaFX de web browsers para o desktop mantendo o contexto original mesmo se o browser for fechado. A aplicação também pode ser reiniciada através de um atalho que é automaticamente criado na área de trabalho. Características do JavaFX A linguagem conta com diversos plug-ins que permitem a integração de imagens vindas de diversos programas, como Photoshop e Illustrator. É gerado um script code que preserva as camadas e estruturas da imagem, mantendo a integridade do arquivo original. Estrutura do JavaFX A sintaxe declarativa do JavaFX permite construir certos aplicativos sem usar sequer uma variável, por exemplo: Estrutura do JavaFX Apesar de ser baseada em Java, a sintaxe do JavaFX traz algumas melhorias, como o uso de Binding. O Bind associa uma variável com uma expressão, que pode ser uma simples variável ou até uma função: Estrutura do JavaFX Com o Bind, a variável y sempre estará associada à x, e será impossível modificá-la singularmente. Afetando o valor de x causa uma alteração direta em y. O Binding pode ser usado com variáveis, objetos, funções, expressões e até sequências. Estrutura do JavaFX Juntamente de triggers, o Bind permite um melhor desenvolvimento de jogos e animações além de melhorar a visibilidade e facilitar a leitura do código. Estrutura do JavaFX Declaração de variáveis: Não existem tipos primitivos. Existem “tipos de valor”, que são objetos derivados da classe Object “Tipos de valor” não admitem null Não existe o tipo char em JavaFX Script, apenas String Estrutura do JavaFX Declaração de variáveis: var ou def var var var var x // ilegal x : // Integer Inicializada com zero x=5 x : Integer = 5 -> def não pode ser inicializado sem valor Estrutura do JavaFX Declaração de variáveis: Durantion Duration é um “tipo de valor” que representa uma quantidade de tempo var a: Duration = 10s; var b: Duration = 250ms; Estrutura do JavaFX Sequences Sequences são o equivalente aos arrays do Java Não permitem aninhamento def dias : String[] = [ "Dom", "Seg", "Ter" ] def dias = [ "Dom", "Seg", "Ter" ] Estrutura do JavaFX Functions Functions são equivalentes aos métodos do Java function a( param : Tipo, param2 : Tipo ) : tipoDoRetorno { } Estrutura do JavaFX Declaração de blocos dentro de uma String var verdade = true; println("Sua afirmação é {if(verdade) 'verdadeira' else 'false'}") Estrutura do JavaFX Classes JavaFX Não tem construtores class Pessoa { var nome : String; var sobrenome : String; function nomeCompleto () { "{nome}{sobrenome}" } } Estrutura do JavaFX Instanciando objetos def craque = Pessoa { nome: "AAA" sobrenome: "BBB" } def Craque = new Pessoa(); craque.nome = "AAA" craque.sobrenome = "BBB" JavaFX x Java Hello World em Java: JavaFX x Java Hello World em JavaFX Script: JavaFX Criando a janela da aplicação: Stage { title: "Hello World JavaFX" ... width:400 height:100 } A classe Stage é necessária para desenhar uma janela; Stage é um container independente; As palavras title, visible, width, height, etc, são chamadas de variáveis de instância. JavaFX Configurando o objeto Scene: scene: Scene { content: Text { content: "Hello World!" font: Font { size: 30 } layoutX: 114 layoutY: 45 } O objeto Scene é responsável por exibir o conteúdo gráfico da aplicação, o que inclui objetos de texto, linhas, círculos, botões e etc; É um container para o SceneGraph. JavaFX O objeto scene possui uma variável chamada content que é utilizada para manter os nós da aplicação; Existem vários tipos de nós, como objetos gráficos, textos e componentes de GUI, objetos de mídia, etc; Cada nó pode ser transformado e animado; É possível aplicar diferentes tipos de efeitos a cada nó; Um nó do tipo Group é um Sequence de nós filhos. Qualquer efeito ou transformação aplicada ao Group será aplicada a todos os nós filhos. JavaFX content: [ Rectangle { ...propriedades... }, Circle { ...propriedades... }, Text { ...propriedades... } ] Stage Scene Circle Rectangle TEXT JavaFX Parte da API JavaFX Fontes http://download.oracle.com/javafx/index.html http://openjfx.java.sun.com/current-build/doc/reference/JavaFXReference.html http://download.oracle.com/docs/cd/E17802_01/javafx/javafx/1/docs/api/ http://www.javafx.com/ pt.wikipedia.org/wiki/JavaFX http://javafree.uol.com.br/artigo/874587/Bind-em-JavaFX.html