UNIVERSIDADE DO OESTE DE SANTA CATARINA UNOESC DANIEL RODRIGUES CONSTRUINDO APLICAÇÕES DE INTERFACE RICA COM JAVAFX
|
|
- Milton Gabeira Batista
- 8 Há anos
- Visualizações:
Transcrição
1 UNIVERSIDADE DO OESTE DE SANTA CATARINA UNOESC DANIEL RODRIGUES CONSTRUINDO APLICAÇÕES DE INTERFACE RICA COM JAVAFX Xanxerê 2009
2 DANIEL RODRIGUES CONSTRUINDO APLICAÇÕES DE INTERFACE RICA COM JAVAFX Trabalho de Conclusão de Curso apresentado ao Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas, Área das Ciências Sociais e Aplicadas, como requisito parcial para a obtenção do título de tecnólogo em Análise e Desenvolvimento de Sistemas da Universidade do Oeste de Santa Catarina Campus de Xanxerê. Orientador: Prof. Cristiano Agosti Xanxerê 2009
3 DANIEL RODRIGUES CONSTRUINDO APLICAÇÕES DE INTERFACE RICA COM JAVAFX Trabalho de Conclusão de Curso apresentado ao Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas, Área das Ciências Sociais e Aplicadas, como requisito parcial para a obtenção do título de tecnólogo em Análise e Desenvolvimento de Sistemas da Universidade do Oeste de Santa Catarina Campus de Xanxerê. Aprovada em BANCA EXAMINADORA Prof. Cristiano Agosti Universidade do Oeste de Santa Catarina - UNOESC Prof. André Luiz Forchesatto Universidade do Oeste de Santa Catarina - UNOESC Prof. Rosicler Felippi Puerari Universidade do Oeste de Santa Catarina - UNOESC
4 Dedico este trabalho a minha filha Hadassa e minha esposa Charlei, que têm estado sem a minha companhia nestes últimos tempos, pelo apoio, compreensão e amor.
5 AGRADECIMENTOS A Deus, por ter sido a minha rocha e fortaleza, sendo um refrigério nas horas de dificuldade e participante nas horas de alegria, a Ele toda Glória, Honra e Poder para sempre. A Minha esposa Charlei e minha filha Hadassa pelo apoio e compreensão. A Meus Pais Adair e Ivani por terem sido um referencial para a minha vida, por me ensinarem a respeitar o próximo e acreditar em um sonho. Ao Corpo Docente da Unoesc, em especial aos professores que lecionaram à nossa turma, pela dedicação e pelo desprendimento aos seus afazeres em função do compromisso com os acadêmicos. Aos colegas, pelos laços de amizade. E a todos que colaboraram para que este trabalho fosse concluído.
6 Quanto melhor é adquirir a sabedoria do que o Ouro. Rei Salomão Provérbios 16:16
7 RESUMO Neste trabalho é feita uma introdução à Linguagem de Script JavaFX, é apresentada uma aplicação de exemplo, que demonstra através de seu código, os detalhes da linguagem, numa implementação real. Não é necessário conhecimento em Java, porém conhecimento básico de lógica de programação é desejável. É disponibilizado um grande referencial teórico sobre a linguagem, englobando desde características básicas, como a sintaxe para a declaração de variáveis, como características avançadas, por exemplo, o uso de expressões de vinculação automática para atualizar itens de interface com base em valores do modelo. Os conceitos apresentados na fundamentação teórica são fixados durante a demonstração da construção do aplicativo de exemplo. O Lançamento de JavaFX é recente, mas isto não deve ser considerado uma desvantagem, pois JavaFX roda sobre a máquina virtual de Java, desta maneira, milhares de pessoas já contam com a runtime, e não precisam fazer o download de um plugin para o browser. A adoção da tecnologia, se dará a partir do momento em que as duvidas a respeito da qualidade passarem, JavaFX é rápida, concisa, e muito fácil de aprender, sua sintaxe declarativa, agiliza a criação de interfaces. JavaFX valoriza a expressão visual, e facilita a divisão de trabalho entre um desenvolvedor e um designer. Quando estes dois profissionais interagem, o apelo visual de uma aplicação é aumentado. Palavras-chave: JavaFX. Linguagem de Script. RIA Rich Internet Application
8 ABSTRACT The present paper gives an introduction to the JavaFX Script language. It is presented a sample application that shows through his code, the details of language, in actual implementation. Previous knowledge in Java it is not necessary, but basic knowledge of programming logic is desirable. It is provided a major theoretical framework of the language, covering everything from basic features, like syntax for declaring variables, such as advanced features, for example, the use of automatic binding expressions wich updates the interface items based on values of the model. The concepts presented in the theoretical foundations are set during the demonstration of the construction of the sample application. Release of the JavaFX is new, but this should not be considered a disadvantage, because JavaFX runs on the Java virtual machine in this way, thousands of people already have the runtime, and do not need to download a plugin for the browser. The adoption of the technology will be given as soon as the doubts about the quality pass, JavaFX is quick, concise, and very easy to learn, its declarative syntax, expedites the creation of interfaces. JavaFX values the visual expression, and facilitates the division of work between a developer and a designer. When these two professionals interact, the visual appeal of an application is increased. Keywords: JavaFX. Scripting Language. RIA Rich Internet Application
9 LISTA DE ILUSTRAÇÕES Desenho 1: Arquitetura de JavaFX...21 Desenho 2: Composição de um Stage...21 Quadro 1: Instanciação de Objeto...22 Quadro 2: Declaração de Variáveis...23 Quadro 3: Declaração de Constantes...23 Fotografia 1: Assistente de Novo Projeto do Netbeans...24 Fotografia 2: Configurações de Nome e Local...25 Quadro 4: Classe Main.fx criada pelo Netbeans...26 Fotografia 3: Aplicação de exemplo...27 Quadro 5: Código alterado com variáveis...28 Quadro 6: Alterando var para def...29 Fotografia 4: Propriedades do Projeto...29 Fotografia 5: Tela de Propriedades da Aplicação...30 Fotografia 6: Applet carregado e vinculado ao browser...31 Fotografia 7: Applet sendo arrastado para fora do browser...31 Fotografia 8: Applet Rodando com o browser fechado...31 Quadro 7: declaração de variáveis e inferência de tipos...32 Quadro 8: Expressão com sintaxe similar a de printf()...33 Quadro 9: Tipos Duration e cálculos entre eles...33 Quadro 10: Expressões de extensão...34 Quadro 11: manipulando sequences...34 Quadro 12: excluindo elementos da sequence...35 Quadro 13: Uso do Bind...37 Quadro 14: Bind em funções...37 Quadro 15: Bind with inverse...38 Quadro 16: Expressões de Bloco...38 Quadro 17: Expressão if...39 Quadro 18: Expressão for...39 Quadro 19: Expressão For criando uma sequence...39 Quadro 20: Abordagem JavaFX para for...40 Quadro 21: Usando for com duas clausulas in...40
10 Quadro 22: Clausula where em expressão for...40 Quadro 23: criando funções em JavaFX...41 Quadro 24: Função atribuída a uma variável...41 Quadro 25: Funções Bound...42 Quadro 26: Trigger...44 Fotografia 9: Aplicação...45 Quadro 27: Definição do Stage...45 Quadro 28: Objeto Rectangle...46 Quadro 29: Gradiente do fundo...47 Quadro 30: HBox...47 Quadro 31: Botão de Volume...48 Quadro 32: Frame...49 Fotografia 10: Tela de Opções que herda de Frame...50 Quadro 33: Bloco Init...50 Quadro 34: Opções...51 Quadro 35: Slider bind with inverse...52 Quadro 36: Checkbox Mudo...52 Quadro 37: Botão Fechar...53 Quadro 38: Timeline...53 Quadro 39: Media Player...54 Quadro 40: Classe Persistor...55 Quadro 41: Classe Persistor...56 Quadro 42: Botões de Controle...56 Quadro 43: Constantes...57 Quadro 44: Sequences...57 Quadro 45: Acessando elementos das Sequences...58 Quadro 46: Configuração do HTML...59 Quadro 47: Applet Extension...59 Quadro 48: Gráfico de Pizza...60 Quadro 49: Gráfico de Barras...60 Quadro 50: Arquivo JNLP...61
11 LISTA DE TABELAS Tabela 1 Modificadores de acesso primários...43 Tabela 2 Modificadores de acesso de variáveis...43
12 SUMÁRIO 1 INTRODUÇÃO TEMA PROBLEMA Objetivo Geral Objetivos Específicos JUSTIFICATIVA METODOLOGIA FUNDAMENTAÇÃO TEÓRICA APLICAÇÃO DE INTERNET RICA (RICH INTERNET APPLICATION RIA) Exemplos de Softwares/Linguagens RIA JAVAFX A RIA DA SUN Características Vantagens Arquitetura Introdução à Linguagem JavaFX Script Funcionamento do JavaFX Criação de um Projeto Editando e executando o novo projeto Publicando a aplicação Tipos de Variáveis Características especiais DESENVOLVIMENTO DA APLICAÇÃO CLASSE MAIN CLASSE FRAME ANIMAÇÕES MEDIA PLAYER STORAGE PUBLICANDO COMO APPLET API DE GRÁFICOS PUBLICANDO COMO JAVA WEB START CONSIDERAÇÕES FINAIS REFERÊNCIAS... 63
13 12 1 INTRODUÇÃO Este trabalho faz uma introdução à linguagem JavaFX Script e à sua API na versão através de um aplicativo de Exemplo. Nele, são descritos pontos-chave desta nova linguagem de Script compilada, que aproveita toda a bagagem de Java. Tenta-se abranger a maior parte dos conceitos inseridos por JavaFX, considerando que o leitor tenha conhecimentos básicos de lógica de programação. O Conhecimento de Java, não é necessário, mas para quem a conhece, as principais diferenças são destacadas. JavaFX é uma linguagem que facilita e muito a construção de interfaces, e como toda linguagem de Script, tem foco na produtividade, é uma linguagem recém lançada, mas com um potencial enorme. Pois ela roda sobre a máquina virtual Java, uma tecnologia bastante difundida, e leva ao extremo, o slogan de Java, que é, escreva uma vez, rode em qualquer lugar, pois pode-se desenvolver um código JavaFX que rode, sem alterações, em Celulares, TV s (em Breve) e no Desktop, quer seja através de um Applet, ou através do protocolo Java Web Start. Este trabalho é dividido em basicamente três partes, uma breve contextualização em torno do ambiente Web e tecnologias RIA, uma introdução bastante abrangente à JavaFX Script, a linguagem de programação para JavaFX, e a construção de um aplicativo de exemplo usando esta linguagem. O Aplicativo de Exemplo tem funcionalidade simples, porém seu código-fonte serve para explicar uma boa parte da API JavaFX na versão (versão atual), além de abranger quase que completamente as peculiaridades da Linguagem de Programação JavaFX Script. No momento em que este trabalho é escrito não há livros em Português sobre JavaFX, deste modo, este trabalho tem por objetivo, também, ser um ponto de partida para a familiarização com JavaFX para as pessoas com dificuldade na língua inglesa.
14 TEMA Construindo Aplicações de Interface Rica com JavaFX. 1.2 PROBLEMA A falta de características/funcionalidades em Aplicativos Web que estão presentes em aplicativos Desktop causa certo desconforto ao migrar o software para a Web, pois o usuário estava acostumado com estas funcionalidades que não mais estão presentes. É preciso construir um aplicativo Web com experiência de navegação semelhante ao Desktop, como arrastar e soltar e desfazer (COSTA, 2008), maior responsividade, ou seja, que não se tenha que esperar pela resposta do servidor para uma ação que pode ser executada localmente. Também é preciso que este software facilite o uso de multimídia. 1.3 OBJETIVOS Objetivo Geral Desenvolver um aplicativo Web utilizando a tecnologia JavaFX Objetivos Específicos Compreender as especificidades do ambiente Web. Compreender o funcionamento da tecnologia JavaFX; Estudar o uso da tecnologia JavaFX e de suas formas de interação; Estudar a ferramenta de desenvolvimento Plugin do Netbeans IDE; Criar uma referência inicial à Linguagem JavaFX Script que possa servir de ponto de partida para trabalhos futuros.
15 JUSTIFICATIVA Num mundo cada vez mais conectado, a Web tornou-se o principal canal de comunicação e relacionamento. Os softwares começam a seguir a tendência de migrar para esta nova plataforma, que elimina vários obstáculos, como a distância, e minimiza outros, como o tempo, por exemplo. Porém ainda não se pode afirmar que a Web substitui completamente o Desktop, pois sua usabilidade é menor. Com base nisso, e na nova tecnologia JavaFX tenta-se unir a dinamicidade da Web e o poder do Desktop. Esta nova tecnologia usa a plataforma Java como base, o que faz com que sua Runtime já esteja disponível em mais de 4,5 bilhões de dispositivos no mundo (SUN, 2009), além da possibilidade de usar todo o código desenvolvido em Java e a extensa biblioteca padrão de Java. Estas características se somam a características como: linguagem parcialmente declarativa, Tipagem Forte Estática, triggers, binding, entre outras.
16 METODOLOGIA Para o estudo de novas tecnologias, é necessário bastante pesquisa, no início da vida de JavaFX, os poucos exemplos que existiam vinham do Site de JavaFX, e poucos blogs comentavam a respeito de seus pré-releases. JavaFX passou por muitas mudanças, desde que suas primeiras versões foram disponibilizadas aos desenvolvedores, então com o lançamento da versão 1.0 em dezembro de 2008, a maioria do código anterior tornou-se incompatível binariamente, além de várias mudanças terem sido feitas na Linguagem JavaFX Script propriamente dita, diante disso, boa parte do material encontrado em blogs de entusiastas da tecnologia, tornou-se defasado da noite para o dia. Além desta quebra, houve mais duas atualizações, a 1.1 e a 1.2, que também tiveram mudanças significativas com quebra de compatibilidade com as versões antigas. Desta maneira o conteúdo utilizável ficou bastante reduzido. Com o lançamento da versão 1.2 no JavaOne 2009, foram lançados três livros já compatíveis com esta versão, então a revisão bibliográfica ficou restrita a poucas fontes. A Revisão Bibliográfica foi objeto de pesquisa em livros, revistas recentes e na internet em fontes confiáveis, como a página da Sun desenvolvedora do JavaFX e nos sites mantidos pelos escritores dos livros citados anteriormente, que tem um maior contato com a equipe de desenvolvimento de JavaFX. Para o desenvolvimento da aplicação será usada o NetBeans IDE em versão específica para o desenvolvimento com JavaFX, pois já vem com o plugin instalado, o NetBeans foi escolhido por ser a IDE suportada pela Sun, a criadora de JavaFX. O NetBeans é usado na plataforma Windows, pois esta plataforma é, por enquanto a plataforma mais compatível com JavaFX, tendo disponível para ela um Emulador de Aparelho Móvel, que possibilita testar as aplicações desenvolvidas para o ambiente Mobile, além de, durante os testes iniciais ter demonstrado uma maior eficiência na renderização de áreas transparentes e gradientes. A aplicação também foi testada em todas as opções de execução, Mobile, Desktop, Java Web Start e Applet, inclusive, com a versão Applet sendo testada em três navegadores: Chrome , Firefox e Internet Explorer 8.
17 16 2 FUNDAMENTAÇÃO TEÓRICA De acordo com Protta (2008), uma das maiores tendências atualmente é o desenvolvimento e uso de WebApps Aplicativos remotos acessados pelo navegador que têm se aperfeiçoado ultimamente. Segundo Soares Filho (2003), migrar software para a Web pode gerar uma economia de até 85%, e vários são os motivos para se migrar um software para a Web. Dentre as vantagens, podemos citar: acesso ao programa/dados em qualquer lugar conectado à internet; facilidade no compartilhamento de informações; facilidade na instalação e atualização de software; entre outras vantagens (MACORATTI, 2009). Porém, a sua tecnologia padrão (X)HTML - não oferece uma experiência de navegação e utilização tão intuitiva como a que é conseguida em um sistema Desktop, uma mesma aplicação pode se comportar de uma forma diferente visual ou funcionalmente em diferentes ambientes, e a interação com um aplicativo Web difere e muito da interação com um software Desktop (MACORATTI, 2009). Para suprir a lacuna, vem se buscando uma alternativa que una o melhor dos dois mundos (COSTA, 2008). As chamadas Rich Internet Applications tentam aproximar a experiência de navegação de um usuário Web a um usuário Desktop (WIKIPÉDIA, 2009). 2.1 APLICAÇÃO DE INTERNET RICA (RICH INTERNET APPLICATION RIA) Primeiramente, deve-se descrever o que é o termo Aplicação de Internet Rica, em inglês RIA (Rich Internet Application). O termo RIA foi cunhado pela empresa Macromedia (incorporada pela Adobe) para descrever aplicações que tenham características de software Desktop, mas rodem na Web (ADOBE, 2009). Segundo Wikipédia (2009) algumas características que nos permitem classificar um software como RIA são: rodar em um navegador processar as informações no navegador, mas manter os dados no servidor de aplicações. Executar em uma sandbox 1 (restringe o acesso ao sistema) 1 Ambiente separado em que uma aplicação roda com restrições (SINGH, 2004)
18 17 Processar as informações no lado do cliente agiliza a interação entre a aplicação e o usuário, pois diminui o volume de dados transmitidos entre cliente e servidor (WIKIPÉDIA, 2009). De acordo com Costa (2008), a experiência do usuário com o software é melhorada em relação ao usuário Web convencional (HTML Servidor Cliente), pois várias ações são feitas localmente, o que evita a troca de informações entre cliente e servidor, uma operação que pode ser demorada. O termo riqueza, segundo Web Design Development India (2009), significa que as mídias suportadas por uma Aplicação desta categoria são amplas, e de uma forma geral, para ser considerada rica, a tecnologia deve suportar, entre outras mídias: Animações; Múltiplas Fontes Conferencia Online Gráficos Vetoriais ou Rasterizados Áudio; Vídeo e outros. De acordo com Wikipédia (2009), entre outros benefícios passiveis de destaque estão: equilíbrio na carga de trabalho entre cliente e servidor; ações executadas no cliente não precisam necessariamente esperar uma resposta do servidor (assincronismo); e diminuição do tráfego na rede. Também destacamos algumas restrições: O tempo de carregamento pode aumentar devido ao fato de ser necessário carregar a client-engine (extensão do navegador que traz inteligência ao cliente); Os sites de busca podem não visualizar os dados de uma aplicação RIA. Segundo Macoratti (2009) o uso de aplicações RIA justifica-se pois ao contrário de uma aplicação Desktop, as RIAs não necessitam de instalação, sua atualização é feita no servidor, novas versões são usadas automaticamente, a aplicação é acessível de qualquer computador conectado a internet, ou seja, o usuário não fica preso a um só computador, pois os dados estão na rede, independência de plataforma (sistema operacional e browser), menor possibilidade de infecção de vírus nas aplicações, entre outras vantagens.
19 Exemplos de Softwares/Linguagens RIA Pode-se citar vários exemplos de linguagens que permitem implementação RIA, abaixo são elencadas as principais, segundo Wikipédia (2009) Javascript - Foi a primeira linguagem que permitiu execução de código no lado do cliente e que teve adoção maciça dos navegadores. Ajax - Acrônimo para Asynchronous Javascript and XML, em português Javascript e XML assíncronos. É um conjunto de tecnologias e técnicas que permitem criar aplicações que interagem com o usuário de uma maneira melhor do que o HTML isolado. Ela pode ser usada com várias linguagens, como Java, PHP, Ruby. Adobe Flash, Adobe Flex, Adobe Air - Adobe Flash usado no inicio para dar dinamismo às páginas, antes estáticas, da Web através de animações e aplicações através de sua linguagem Action Script. O Adobe Flex permite criar interfaces em flash compilando a aplicação em MXML, e o Adobe Air une HTML, Ajax, Flash e PDF. Microsoft Silverlight - Concorrente direto do flash, utiliza XAML e é baseado na plataforma.net 3.0, somente utilizado na plataforma Windows. Controles AcitveX - Somente usado no Internet Explorer, não roda numa sandbox, o que o torna vulnerável a vírus e outras ameaças. OpenLaszlo - Única RIA capaz de compilar código para duas runtimes diferentes (Adobe Flash bytecode e DHTML/Ajax) a partir de um mesmo fonte. Curl, Rebol, Seaside - Opções ao Java e JVM, são tão antigas quanto o Java. Applets Java - Uma das primeiras aplicações do Java, um dos primeiros RIA, são pequenas aplicações Java embutidas na página HTML. Aplicativos Java - Através do protocolo Java Web Start podem ser lançados via browser aplicativos Java em todo o seu poder. JavaFX - Nova Tecnologia da Sun para aplicações RIA.
20 JAVAFX A RIA DA SUN Com a Compra da SeeBeyond, a Sun trouxe junto Chris Oliver e seu projeto F3 (Form Follows function A Forma segue a função), uma linguagem RIA que utiliza Swing e Java2D, na conferência JavaOne, a Sun anuncia JavaFX, composta do JavaFX Script (antigo F3) e do JavaFX Mobile (Adquirido através da incorporação da empresa Savaje). Com o lançamento da JRE6u10, a runtime do JavaFX já estava pronta. A partir do JRE6u12 toda instalação do JRE instalava a runtime do JavaFX. (DOEDERLEIN, 2009, p. 18) Em 4 de Dezembro de 2008, a Sun lança oficialmente JavaFX Script 1.0, porém a versão Mobile só seria lançada em Segundo Doederlein (2009), a Sun tem planos para no início de 2010 lançar o JavaFX TV juntamente com a versão 2.0 da versão Script Características De acordo com Doederlein (2009, p. 19), JavaFX Script é em parte declarativa, o que significa que ela se preocupa em dizer o que fazer e não como fazer (paradigma imperativo). É Orientada a Objetos, roda na JVM, utiliza Classes Java, tem tipagem estática e gera bytecode. Sobre o JavaFX 2, a Sun (2009, tradução nossa) descreve: JavaFX fornece um modelo unificado desenvolvimento e implantação para a construção de aplicações cliente ricas que integram mídia imersiva rica, como áudio e vídeo, gráficos, texto rico e serviços Web. JavaFX permite aos desenvolvedores de criação programarem em um contexto visual, assim, ajudando-os a trazer suas idéias para a vida mais rápido e melhor. 2 JavaFX provides a unified development and deployment model for building rich client applications that integrate rich immersive media such as audio and video, graphics, rich text and web services. JavaFX allows creative developers to program in a visual context thus helping them to bring their ideas to life quicker and better. (SUN, 2009)
21 Vantagens Conforme a Sun 3 (2009) pode-se enumerar várias vantagens da linguagem JavaFX: facilita a junção de áudio, vídeo, animação, gráficos e texto. Os gráficos em 2D podem sofrer transformações em perspectiva 3D (gráficos 3D reais em breve). aspectos da animação avançada incluem timeline, animação por keyframe, e animação baseada em caminho. Pode-se reutilizar bibliotecas Java, o que preserva investimentos feios nesta tecnologia. Instalação fácil com Arrastar-e-instalar, simplesmente arraste a aplicação para fora do Navegador, depois a acesse através de um ícone no Desktop. Linguagem simples e declarativa Arquitetura O Desenho 1 é uma representação gráfica da arquitetura de JavaFX. Ela é composta pela JavaFX Runtime(item 1), um Ambiente em Tempo de Execução específico para JavaFX que é baixado juntamente com a JRE Java Runtime Environment a partir da versão 6u10 da JRE, e para aqueles que tem versões anteriores, a JRE baixa apenas a Runtime JavaFX. O item 2, representa a camada Common Elements (Elementos Comuns) que contém as APIs Application Programming Interfaces que são comuns a todas as plataformas, ou seja, se o código for desenvolvido usando apenas estas API s, ele será executável em todos os perfis com uma JavaFX Runtime disponível. Sobre a Commons Elements, podese ver, destacado com os números 3, 4 e 5 as APIs específicas para Desktop, TV e Dispositivos móveis. O item de número 6 representa o Framework que contém os blocos de código de aplicação, à direita o desenho mostra, que a lado a lado com estas tecnologias estão as ferramentas para desenvolvedores (item 7), e também, 3 JavaFX makes it easy to integrate video, audio, graphics, animation and rich text. Applications can combine audio/video and 2D graphics with 3D perspective transform ( true 3D graphics coming soon) [...] Advanced animation features include timelines, keyframe animation, tweening, and path based animation [...]Java developers can preserve existing investment by reusing Java libraries in JavaFX applications [...]With Java SE 6 update 10 (and above) you can Drag-to-Install JavaFX applications simply by dragging them out of your browser - you can then relaunch the applications directly from your desktop [...]It is a simple, easy-to-learn, declarative scripting language.
22 21 as ferramentas para Designers (item 8). Sobre esta plataforma é que rodam as aplicações JavaFX (item 9), e todo este conjunto tem como base a Maquina Virtual Java (item 10). Desenho 1: Arquitetura de JavaFX Fonte: Introdução à Linguagem JavaFX Script Segundo Doederlein (2009, p.19-20), a linguagem lembra bastante Java propriamente dita, podemos ver em um código-fonte com sintaxe e declarações conhecidas a um programador Java, como class, import, package, delimitação de bloco por chaves, etc, porém sua API acrescenta novos termos e conceitos que serão resumidamente expostos posteriormente. Segundo WEAVER e outros (2009, p. 99), a metáfora do JavaFX é um teatro. Temos um palco (Stage), e dentro deste palco temos uma ou mais cenas (Scene). Desenho 2: Composição de um Stage Fonte:
23 22 Stage - É o nível mais alto em um programa JavaFX como se vê no desenho 2. Ele contém todos os Scenes. (SUN, 2009) A Stage é que contém a interface com o usuário, ela pode ser implantada no Desktop (tendo uma barra de títulos e bordas ou não), em um navegador (como um applet dentro de uma área retangular), ou em dispositivos móveis (diretamente na tela do dispositivo). (WEAVER et al., 2009) Scene - Uma superfície onde se pode desenhar conteúdo gráfico. JavaFX desenha tudo em um Scene e todos os objetos dentro de um Scene são objetos gráficos (descendem de Node). Contém os Nodes. (SUN, 2009) Custom Node - Subclasse de Node, pode ter um Node Filho. (SUN, 2009) Group - Sequência de Nodes agrupados. (SUN, 2009) Node - É um elemento numa Scene, (SUN, 2009) Segundo Doederlein (2009, p. 40), num primeiro contato com código JavaFX Script, um programador Java 4, logo percebe algumas diferenças, como por exemplo: A falta de uma declaração de classe, e a definição de funções, variáveis e sentenças espalhadas pelo escopo global do Script; o return é implícito na função; apesar de JavaFX suportar o construtor new de Java, ela utiliza sua própria sintaxe, chamada de Objeto Literal, como pode-se observar no quadro 1: Quadro 1: Instanciação de Objeto Fonte: O Autor Os iniciadores são separados por vírgula, ponto e vírgula ou espaços. O objeto Stage contém uma variável chamada content que é do tipo Node[], ou seja, ela é uma sequence 5 de Nodes. Todos os seus elementos envoltos por um par de colchetes [ ], que pode ser omitido no caso de iniciar somente um elemento. O objeto raiz Stage equivale a uma janela, ele tem propriedades com nomes facilmente identificáveis (width, heigth, title...), ela contém um objeto Scene que contém a parte visual da Janela que contém vários ou um objeto Node com o conteúdo da Janela. 4 Linguagem de Programação criada pela Sun Microsystems, roda em uma Máquina virtual 5 Tipo de Array primitivo de JavaFX
24 23 As variáveis são declaradas da maneira retratada no quadro 2: Quadro 2: Declaração de Variáveis Fonte: O Autor Analise que na instrução acima, no primeiro exemplo o tipo da variável não foi informado, isto se deve à Inference Engine 6 do compilador JavaFX, que infere o tipo da variável em tempo de compilação, a variável é estaticamente tipada. (ANDERSON; ANDERSON, 2009, p. 44). Porém é perfeitamente possível determinar explicitamente o tipo, como no segundo ou terceiro exemplo. Nos casos em que o Mecanismo de Inferência não conseguir determinar qual o tipo da variável, o compilador avisa (ANDERSON; ANDERSON, 2009, p. 19). As constantes usam a sintaxe presente no Quadro 3: Quadro 3: Declaração de Constantes Fonte: O Autor De acordo com Doederlein (2009), o operador && do Java é substituído por and, assim como por or, além do operador de negação, que em JavaFX não é o ponto de exclamação!, mas sim not. A inferência do tipo também pode ser usada na declaração de funções, tanto para definir o tipo dos Parâmetros, como também o seu tipo de retorno. JavaFX conta com variáveis globais como DIR que corresponde ao diretório raiz do Script, FILE que é o caminho do arquivo do Script e PROFILE que corresponde ao ambiente em que o Script está sendo executado. Outra pequena mudança é o casting 7 que ao invés de usar o formato do Java é feito desta maneira: <valor> as <tipo>. A propriedade Timeline é uma linha do tempo, usada em animações. No método de animações chamado keyframing, determina-se o estado da animação em instantes chave, e os instantes intermediários são criados pela engine de animação, 6 Mecanismo que deduz o tipo da variável em tempo de compilação. 7 Conversão de Tipo Explícita
25 24 através de interpolação. (DOEDERLEIN, 2009) A sintaxe declarativa torna fácil a assimilação por profissionais de outras áreas (como Designers, por exemplo), enquanto os programadores podem desenvolver em Java puro, isso auxilia qualquer projeto de software, pois traz uma maior divisão de tarefas, cada um fazendo a sua parte (SUN, 2009) Funcionamento do JavaFX Através do desenvolvimento de uma aplicação simples pode-se analisar mais detalhes da sintaxe de JavaFX, acompanhando desta maneira, a compreensão da linguagem se torna mais fácil Criação de um Projeto Após a instalação do Ambiente de Desenvolvimento e sua configuração, que não será tratada neste trabalho, é preciso criar um novo projeto no Netbeans, através do Menu Arquivo Novo Projeto, ou através da combinação de teclas Ctrl + Shift + N. Surgirá o Assistente de Novo Projeto (Fotografia 1): Fotografia 1: Assistente de Novo Projeto do Netbeans
26 25 Após a escolha de JavaFX em Categorias, clica-se no botão próximo, que mostrará a próxima página do assistente onde definem-se as propriedades restantes do novo projeto. Nesta nova tela (Fotografia 2), em Project Name, digita-se o Nome do Projeto, é possível definir uma pasta para salvar o projeto em Project location através do botão browse, se a localização sugerida pelo Netbeans não for conveniente. Se o Projeto já tem código fonte criado sem o Netbeans, é necessário marcar o RadioButton From Sources a acrescentar a(s) pasta(s) do código fonte usando o botão Add Folder, do contrário mantém-se a opção padrão Empty Project para projetos iniciados do zero. Fotografia 2: Configurações de Nome e Local Em Set As Main Project, é definido se este projeto será o projeto principal do Netbeans, e em Create Main File, escolhe-se se o Netbeans criará o arquivo Principal do Projeto e define-se o pacote e o nome do projeto, em nosso exemplo, alteramos a sugestão do Netbeans de tccjavafx.main para gui.main.
27 Editando e executando o novo projeto O Arquivo criado pelo Netbeans apresenta um Stage e uma Scene. Analisando este código (Quadro 4) pode-se ver a sintaxe declarativa em ação. Entre as linhas 8 e 24 ocorre a instanciação de um objeto Stage, este objeto tem suas variáveis. Weaver et al. (2009, p. 14) apresenta: width: determina a largura do Stage height: determina a altura do Stage title: determina o titulo do Stage, que aparecerá na barra de títulos. scene: contém um objeto Scene, que é o que realmente irá aparecer na tela da Aplicação. A classe Stage contém muitas outras variáveis, que serão discutidas mais adiante. Entre as linhas 12 e 23 é atribuída à variável scene do Objeto Stage um Objeto Scene, e atribuída a sua variável content um Objeto Text, que por sua vez instancia um objeto Font, desta maneira é possível ver que, a sintaxe declarativa e aninhada de JavaFX facilita a leitura e interpretação na criação de GUIs (LOPES, 2009), já que percebemos a estrutura da GUI mediante o aninhamento das expressões. Quadro 4: Classe Main.fx criada pelo Netbeans No código visualizado no Quadro 4 são criados quatro objetos, porém o operador new não foi usado nenhuma vez, isso é possível devido aos Objetos Literais que instanciam e atribuem valor aos atributos/variáveis das classes JavaFX
28 27 de uma só vez. Na criação dos objetos literais são usadas Chaves { } que englobam a atribuição de valores ás variáveis. Percebe-se que a variável content de Scene tem a sua atribuição de valor englobada por colchetes [ ], porque esta variável recebe uma Sequence (Array) de Nodes, toda Sequence é cercada por colchetes e seus elementos separados por virgulas. Quando executamos este código no Netbeans o resultado é mostrado na Fotografia 3: Fotografia 3: Aplicação de exemplo Olhando novamente para o Quadro 4, percebe-se que não há nenhum método public static void Main, mesmo assim, o compilador gera uma arquivo executável. É porque em JavaFX todos arquivos que são considerados Scripts ganham em tempo de compilação um método run() que é análogo ao public static void Main de Java implícito, caso ele não tenha sido declarado no corpo do Script. E então, o que é considerado Script para JavaFX. Segundo Weaver e outros (2009, p. 205): Um Script é um fonte de JavaFX Script que pode ser compilado e executado, e pode conter definições de classe, definições de função, declarações de variáveis e constantes, e expressões soltas. Expressões soltas são expressões que aparecem no nível mais alto de um Script. 8 Então, todo Script que tenha expressões soltas loose expressions em inglês terá um método run() implícito. Há uma restrição para esta regra, JavaFX não permite que arquivos que tenham expressões soltas, tenham entidades (variáveis ou constantes) com visibilidade pública. Neste caso é necessário declarar explicitamente um método run() e as expressões soltas deverão obrigatoriamente estar inseridas neste método. Na construção da aplicação faz-se uso de uma característica de JavaFX, que são as expressões de JavaFX, em JavaFX quase tudo é considerado uma expressão e retorna um valor (WEAVER et al., 2009, p ), inclusive a atribuição de valores, por exemplo, quando se atribui um valor a alguma variável, a 8 A script is a JavaFX Script source file that can be compiled and then run, and may contain class definitions, function definitions, variable and constant declarations, and loose expressions. Loose expressions are expressions that appear at the top level of a script.
29 28 própria expressão de atribuição retorna um valor, que no caso é o próprio valor da atribuição, assim podemos alterar o código do exemplo anterior para podermos acessar os atributos dos objetos instanciados através de variáveis. O código com as alterações está no Quadro 5. Nas linhas 12 e 13 são criadas as variáveis através da palavra-chave var e def, uma variável para armazenar o Scene e uma constante para armazenar o Stage. Quando se têm variáveis que não terão seu conteúdo alterado, é importante usar def ao invés de var, pois o compilador pode fazer otimizações no bytecode (WEAVER et Quadro 5: Código alterado com variáveis al., 2009 p.32), quando se usa def, é obrigatória a atribuição de um valor inicial. No exemplo acima não pode-se definir a variável scene como def porque ela não recebe valor inicial e o compilador não permite a declaração da variável no meio de uma instanciação de um objeto literal, neste caso, na instanciação do Stage. A solução poderia ser instanciar o scene fora da instanciação do stage, atribuindo a uma constante de nome def e depois atribuindo esta constante ao atributo scene de Stage, como demonstrado no Quadro 6: Pode-se ver na linha 28 do quadro 6 o acesso ao atributo content de Scene feito através da referência obtida pela constante scene. Também percebe-se nesta mesma linha mais um pouco da característica declarativa de JavaFX, a sintaxe para inclusão de um Node em uma Sequence é muito similar à sintaxe SQL (DOEDERLEIN, 2009, p 42).
30 29 Quadro 6: Alterando var para def Publicando a aplicação Com JavaFX é possível publicar a aplicação de várias maneiras (SUN, 2009), além da maneira padrão, também pode-se fazer o deployment via Java Web Start, via Browser em um Applet ou via Emulador de Celular. Para alterar o modo de execução de um projeto no Netbeans clique com o botão direito sobre o projeto no painel Projetos, depois clique em Propriedades, será exibida a tela de propriedades do Projeto, à esquerda no menu categorias, selecione Run. Será exibida a tela apresentada na Fotografia 4: Fotografia 4: Propriedades do Projeto Escolhendo Web Start Execution, a aplicação será executada via Java Web Start, Run in Browser, executará a aplicação como um Applet na janela do browser e Run in Mobile Emulator rodará a aplicação no Emulador de Telefone Celular do JavaFX SDK.
31 30 No menu Application Fotografia 5 é possível ajustar estas opções: Fotografia 5: Tela de Propriedades da Aplicação Nome do Programa e Empresa Responsável, (válidos em todos os ambientes) largura, altura, se o Applet é arrastável para fora do navegador (aplicável somente para a versão Applet), e se o aplicativo é auto-assinado e se ele vai usar compressão Pack200 (essas últimas são válidas para aplicativos publicados através do Protocolo jnlp do Java Web Start). A opção de auto-assinar o Aplicativo é válida para fins de teste, para se publicar uma aplicação efetivamente o ideal é certificá-la em uma empresa qualificada para isso como VeriSign 9 ou Thawte 10 (WAEVER, 2009, p.23) Se você marcou a caixa de seleção Draggable Applet, e como modo de execução você escolheu run in Browser, o aplicativo será executado através do browser padrão do sistema, então é possível destacá-lo dá página à qual o Applet é vinculado. Para isso é necessário segurar a tecla Alt pressionada enquanto arrasta e solta o Applet. Na Fotografia 6, pode-se ver a aplicação docked ou ancorada no browser, na Fotografia 7, esta aplicação sendo undocked, ou seja, sendo desvinculada do browser, e finalmente, na Fotografia 8, a aplicação está rodando em modo Standalone, fora do browser, inclusive com o browser fechado. Se o browser for fechado antes do Applet, ao fechá-lo ele criará um atalho na Área de trabalho, no
32 31 Menu Iniciar ou em Ambos (dependendo da configuração feita no arquivo jnlp), caso contrário, o Applet retornará à aba que ele era vinculado (dependendo do método usado para fechar o aplicativo, se usado o método stage.close() o aplicativo retornará ao browser, se usado o método FX.exit() o programa será encerrado). Fotografia 6: Applet carregado e vinculado ao browser Fotografia 7: Applet sendo arrastado para fora do browser Fotografia 8: Applet Rodando com o browser fechado
33 Tipos de Variáveis Conforme já mencionado, JavaFX usa um mecanismo de inferência de tipos, que determina o tipo de uma variável em tempo de compilação, sendo assim, você não precisa indicar explicitamente o tipo da variável para cada declaração, pois a Inference Engine deduz o tipo da variável com base na sua primeira atribuição de valor (ANDERSON; ANDERSON, 2009 p.19). Por exemplo, no Quadro 7, os tipos das variáveis comprimento e raio são deduzidas pela Inference Engine como Integer e Number, respectivamente. As variáveis nome, saudação e concatenado são do tipo String, ligado, do tipo Boolean, duração do tipo Duration e lista e quadrados são sequences de Strings e Rectangles, respectivamente. Quadro 7: declaração de variáveis e inferência de tipos Em JavaFX, os tipos primitivos são diferentes dos tipos primitivos de Java, que não têm uma classe Java que os encapsula, tipos primitivos de JavaFX tem sempre uma classe de Base, tem valores padrão para quando uma variável é declarada sem um inicializador, não admitem null (exceto para tipos de Classe) (WEAVER et al., 2009, p. 46), e são tipos de valor, ou seja, para comparar duas Strings, pode-se usar o operador ==, diferentemente de Java, onde a comparação usando este operador compararia as referências ao objeto, em JavaFX é feita uma comparação de valores. (DOEDERLEIN, 2009, Ed. 69) Boolean: O tipo Boolean armazena os valores true ou false (ANDERSON; ANDERSON, 2009, p. 61), é importante destacar que, diferentemente de Java, os operadores lógicos são escritos literalmente como and, or e not (WEAVER et al., 2009, p. 47). Integer: O tipo Integer tem como Classe de base a classe java.lang.integer, e todos os métodos de java.lang.integer podem ser usadas para o tipo Integer de JavaFX, o Valor padrão é 0. É possível inicializar um tipo Integer de três maneiras, do modo Inteiro, com um numero inteiro não precedido de zero e sucedido por
34 33 números de 0 a 9, do modo octal, precedido por zero e sucedido por números de 0 a 7, ou do modo hexadecimal, precedido por 0x ou 0X e sucedido por números de 0 a 9 ou letras de "a" a "f" ou "A" a "F" (WEAVER et al., 2009, p. 48). Number: Segundo Weaver e outros (2009, p. 53) Number tem como classe de base, a partir da versão 1.1 de JavaFX a classe java.lang.float. Number suporta a notação decimal e a notação científica. Na notação decimal pode-se omitir a parte inteira ou a parte decimal, desde que seja utilizado o ponto separador. Na notação científica, declara-se o valor decimal, seguido da letra E, e o expoente positivo ou negativo. Ex.: 4.3E-21, o valor padrão é 0.0. String: O tipo String tem como valor padrão uma String vazia, ou seja,. Como os outros tipos de valor, String não aceita null. Pode ser usada tanto aspas duplas, como aspas simples para delimitá-lo. Dentro de uma String de aspas duplas, as aspas simples não precisam ser escapadas por barra-inversa (\) e vice-versa. A concatenação de duas Strings em sequência é automática, não se usa o caractere de soma (+), muito menos a vírgula (,). Dentro de uma String, os caracteres de Chaves ({,}) delimitam uma expressão como visto no Quadro 7, uma String contém uma variável entre chaves (ANDERSON; ANDERSON, 2009, p. 45). Todos os métodos de java.lang.string, que é a classe de base de String podem ser usados (WEAVER et al., 2009, p. 55). Dentro de uma expressão a saída pode ser formatada com a mesma sintaxe de System.printf() (DOEDERLEIN, 2009), como aparece no Quadro 8. Quadro 8: Expressão com sintaxe similar a de printf() A saída de print() no código do Quadro 8 é 5.8. Duration: O tipo Duration é usado para representação de tempo, usado em animações, ele é criado com um Integer ou number sucedido por uma unidade de tempo sem espaço entre eles. (WEAVER et al., 2009, p.57) Quadro 9: Tipos Duration e cálculos entre eles
35 34 Como pode-se ver no Quadro 9, pode-se efetuar operações de soma, subtração e divisão entre tipos Duration, a multiplicação entre dois valores de tipo Duration não é permitida, mas eles podem ser multiplicados por valores Inteiros ou de ponto flutuante. Ao contrário dos outros tipos primitivos de JavaFX que tem classes base em java.lang.*, o tipo Duration tem como classe base uma classe JavaFX, javafx.lang.duration. (WEAVER et al., 2009, p. 57) Sequences: Segundo Anderson e Anderson, (2009, p. 21) Sequences são coleções de objetos que você pode acessar sequencialmente. O valor padrão de uma sequence é uma sequence vazia, e o tipo de uma sequence é o tipo dos seus elementos seguido por colchetes, um exemplo é Boolean[]. Não é possível ter elementos null no interior de uma sequence (WEAVER et al., 2009, p. 59). Segundo Weaver e outros (2009, p. 60) uma sequence pode ser criada usando uma declaração explicita, como usando expressões de extensão. Uma expressão de extensão é composta por um valor inicial e um valor final separados por ponto-ponto (..), e opcionalmente um valor de passo, e é delimitada por colchetes, exemplos no Quadro 10. Quadro 10: Expressões de extensão É importante ressaltar que este tipo de expressão é representada internamente de uma maneira eficiente por JavaFX, por exemplo, JavaFX não ira criar realmente uma sequence com 500 números para atribuir à variável f da Quadro 10, pois isso ocuparia muita memória (WEAVER et al., 2009, p. 60). Para manipularmos sequências, usamos uma sintaxe bem similar à sintaxe SQL, como podemos ver no Quadro 11. Quadro 11: manipulando sequences
36 35 Na instrução insert <valor> into <sequence>; o elemento é adicionado no final da sequence. Em insert <valor> before <sequence[indice]>; o valor é inserido na sequência na posição antes do valor do índice indicado, ou seja, se inserido apenas um objeto/valor ele passará a ocupar a posição indicada. Já em insert <valor> after <sequence[indice]>; o valor é inserido na sequência na posição após o valor do índice indicado (ANDERSON; ANDERSON, 2009, p. 57). Quando se insere uma sequence dentro de outra, a sequence não é aninhada, ela é planificada dentro da sequence que a recebe (WEAVER et al., 2009, p 66). Por exemplo, a saída para o comando print() do Quadro 11 é: [ 0, 2, 4, 6, 45, 46, 47, 8, 10, 12, 14 ] Percebe-se que os valores da sequence seq do quadro 11 não estão separados dos demais. Ao excluirmos elementos da sequence a sintaxe é similar: Quadro 12: excluindo elementos da sequence A sequence sequencia antes das manipulações de exclusão é formada por estes elementos: [ 0, 2, 4, 6, 45, 46, 47, 8, 10, 12, 14 ]. Após a primeira instrução delete, o elemento de índice 4 é excluído. delete sequencia[4]; [ 0, 2, 4, 6, 46, 47, 8, 10, 12, 14 ] A segunda instrução exclui os elementos de índice 2 ao 4 inclusive. delete sequencia[2..4]; [ 0, 2, 47, 8, 10, 12, 14 ] A terceira instrução exclui os elementos de índice 5 até o fim da sequence, já que um valor final não é declarado à expressão de extensão. delete sequencia[5..];
37 36 [ 0, 2, 47, 8, 10 ] A quarta instrução exclui os elementos de índice 2 até os elementos de índice menor que 4. delete sequencia[2..<4]; [ 0, 2, 10 ] Para demonstrar a próxima instrução é inserido o valor 2 à sequence insert 2 into sequencia; [ 0, 2, 10, 2 ] A sexta instrução exclui todos os valores 2 da sequece delete 2 from sequencia; [ 0, 10 ] A sétima instrução exclui todos os valores da sequência, mas não exclui a sequence em si, ou seja, a sequence agora está vazia. delete sequencia; [ ] É possível criar uma nova sequência a partir de uma já existente usando predicados (ANDERSON; ANDERSON, 2009, p. 59). A estrutura é a seguinte. sequenciafonte[variavel espressaologicarestritiva];, conforme o exemplo: def seq1 = [1..100]; def seq2 = seq[n (n*n) < 50]; // [1, 2, 3, 4, 5, 6, 7] Os elementos só são inseridos na nova sequence se forem compatíveis com a restrição, por exemplo, somente os números que quando multiplicados por eles mesmos forem menores que 50 serão adicionados à nova sequence Características especiais Binding: Uma das técnicas mais poderosas de JavaFX (ANDERSON; ANDERSON, 2009, p. 31) é o recurso de Binding, numa tradução livre, vinculação. Através da palavra-chave bind podemos vincular uma variável a uma outra variável ou a uma expressão ou função. Quando você atualiza algum valor da expressão que foi vinculada, o valor do objeto dependente é atualizado:
38 37 Quadro 13: Uso do bind No Quadro 13 cria-se as variáveis altura e largura, e uma constante área que torna-se vinculada ao resultado da expressão altura * largura pois antes da atribuição é usada a palavra-chave bind. Toda vez que um dos valores da expressão mudar a constante def é atualizada. Ao imprimir o conteúdo de área logo após a primeira atribuição temos com resultado 12.0, após atribuirmos o valor de 2.5 à variável largura, a variável área é atualizada de forma automática e transparente, então o valor da área agora é 7.5, atualizamos agora o valor da altura e área agora vale Se houver uma tentativa de manipular diretamente o valor de uma constante que usa bind, ocorre um erro de compilação, se área tivesse sido declarada como var e depois se tentasse atribuir um valor a ela ocorre um erro em tempo de execução pois não se pode atribuir valores diretamente a uma variável com bind, pois o compilador não consegue detectar em tempo de compilação as atribuições à variáveis com bind. (WEAVER et al., 2009, p.91). O bind também é usado com funções, se um dos parâmetros da função for alterado, a função é chamada novamente e o valor da variável vinculada é atualizado. No quadro 14 a variável hipotenusa tem a sua atribuição vinculada à função calculahipotenusa(), quando alteramos o valor de qualquer uma das variáveis que são passadas como argumento para a função calculahipotenusa(), a função é reavaliada, retornando um novo valor que então atualiza a variável hipotenusa. Quadro 14: Bind em funções
39 38 Os valores impressos são 5.0 após a atribuição inicial, e , quando alteramos o valor da base e 50.0 quando alteramos a altura. Quando se usa as palavras-chave with inverse após uma expressão de bind, toda vez que atualizarmos qualquer um dos lados da expressão, o outro lado será atualizado (Quadro 15), ao contrario de uma expressão com bind simples, a variável que usa bind with inverse tem que, necessariamente, ser declarada como var, já que ela é atualizável (ANDERSON; ANDERSON, 2009, p. 54). Quadro 15: Bind with inverse Expressões de Bloco: Conforme Anderson e Anderson (2009, p. 50), JavaFX é uma linguagem de expressão, o que significa que vários tipos de expressão em JavaFX retornam valores, que podem ser usados, por exemplo, em uma atribuição. Uma Expressão de Bloco nada mais é do que um conjunto de expressões delimitadas por colchetes ({ }). O tipo e o valor do retorno são o tipo e o valor da última expressão do bloco, se a última expressão do bloco não retornar valor, o bloco é do tipo Void, o bloco configura um novo escopo, variáveis declaradas dentro dele não são visíveis fora dele. O quadro 16 mostra um exemplo. Quadro 15: Expressões de Bloco Mesmo que a última expressão fosse atribuída à uma variável declarada na última linha, ou declarada anteriormente, o bloco retornaria o valor, pois a atribuição também é uma expressão em JavaFX. Expressão if: A expressão if também retorna valor, então pode-se associar o resultado de uma expressão if a uma variável, o retorno da expressão if é do mesmo tipo e valor do retorno da expressão then ou else, por exemplo: No quadro 17 a variável emaior recebe o retorno da expressão if que é do tipo
40 39 String, a palavra-chave then é opcional e se houver mais que uma instrução por clausula, deve-se delimitá-las por chaves ({ }). Quadro 16: Expressão If Expressão for: A expressão for é usada para fazer alguma ação um determinado numero de vezes. Pode-se usá-la assim, como no quadro 18: A expressão for acima chama o método facaalgo() cinco vezes, a variável i não precisa ser declarada, e em cada iteração, ela recebe um item da sequence que vem após a clausula in, que neste caso é uma sequence de um a cinco. Quadro 17: Expressão for Como uma expressão for retorna uma sequence, então é perfeitamente possível popular uma sequence como mostrado no Quadro 19: Quadro 18: Expressão For criando uma sequence Primeiro é criada uma sequence com três objetos da Classe Pessoa. Na expressão for, é declarada uma variável i que itera sobre uma sequence de 0 ao número de elementos da sequence pessoas menos um, no corpo do for, acessamos os elemento da sequence através de seu índice e concatenamos o valor da propriedades nome e sobrenome. A cada iteração este valor é adicionado a uma sequence nova, que é atribuída à variável nomesdaspessoas, o resultado do comando println() é uma sequence com nome e sobrenome concatenados: [ João da Silva, Maria de Oliveira, José Almeida ]. No quadro 19 é mostrada a expressão for na sintaxe JavaFX, mas sua
41 40 abordagem é de Java, uma abordagem de linguagem de Script é a mais indicada, portanto a melhor forma seria usar o for como no Quadro 20, abaixo. Quadro 19: Abordagem JavaFX para for Na expressão for é declarada uma variável de nome pessoa que a cada iteração recebe o objeto correspondente a esta iteração da sequence pessoas, dentro do corpo da expressão pode-se acessar propriedades deste objeto simplesmente referenciando a variável pessoa, então concatena-se o valor das propriedades nome e sobrenome. É possível ter mais de uma clausula in em uma expressão for, separando elas por vírgula (Quadro 21). Quando isto ocorre, a iteração ocorre como se fossem duas instruções for aninhadas, a variável da clausula mais a direita itera mais rapidamente. Quadro 20: Usando for com duas clausulas in O resultado do comando println é [ A1, A2, A3, B1, B2, B3, C1, C2, C3 ], ou seja, primeiro é feita a iteração de colunas, e depois de linhas. A expressão for permite o uso de clausulas where, que restringe alguns elementos da sequence da clausula in como vê-se no Quadro 22. Quadro 21: Clausula where em expressão for
42 41 O resultado da função println() é: Carlos aprovado com média 9.25 Morgana aprovado com média 7.75 Rebeca aprovado com média 7.75 Expressões while: Expressões while não retornam valor, elas atuam e tem sintaxe exatamente como no Java, palavra-chave while, seguida de uma expressão booleana entre parênteses e um bloco para ser executado enquanto a condição retornar true. Funções: Funções em JavaFX são criadas pela palavra-chave function, seguida do nome da função, e de um par de parênteses que delimitam os parâmetros que porventura existam, e por último, um bloco delimitado por chaves, como no Quadro 23. Quadro 22: criando funções em JavaFX Pode-se perceber nos três exemplos do quadro 23, como a Engine Inference pode agilizar o desenvolvimento, repare que no segundo exemplo os tipos do retorno e dos parâmetros, são inferidos, no terceiro exemplo a palavra-chave return faz o retorno de uma String. As funções também podem ser atribuídas à uma variável, o tipo da variável será a assinatura da função, como se percebe no quadro 24. Quadro 23: Função atribuída a uma variável Há duas maneiras de Vincular uma variável a uma função, através do uso da palavra-chave bind antes da chamada da função e da palavra-chave bound na criação da função. Funções com bind só serão reavaliadas se um dos parâmetros for
43 42 alterado, se é necessário reavaliar alguma função quando algum valor usado por ela, que não é passado como parâmetro for alterado, a função deve ser bound. Quadro 24: Funções Bound No quadro 25 são criadas duas funções, uma função normal e outra função com a palavra-chave bound, os parâmetros e o corpo das funções são iguais. Quando uma função é bound e uma variável é vinculada a esta função através do bind, a função é reavaliada quando há mudança em qualquer variável que faça parte da dependência da função, ou seja, que seja necessária para a função, sendo ela um parâmetro, ou não. O que é impresso pelo código do quadro 25 segue abaixo. Repare que nos últimos resultados, quando houve alteração em c, que não é parâmetro da função, é somente uma dependência de seu corpo, somente a função com bound foi reavaliada. valores iniciais a alterada c alterada
44 43 Modificadores de acesso: JavaFX tem modificadores de acesso diferentes de Java. Na Tabela 1 há uma lista dos modificadores primários, que são válidos para classes, funções, variáveis de script e variáveis de instancia de classe: Tabela 1 Modificadores de acesso primários Modificadores de acesso Primários (sem modificador de acesso) package protected public Fonte: (ANDERSON; ANDERSON, 2009, p. 89) script-private acessível somente dentro do script em que foi declarado (padrão). Pode ser lido e escrito. Acessível dentro do package em que foi declarado. Pode ser lido e escrito. Acessível às subclasses da classe em que foi declarado. Pode ser lido e escrito. Acessível de qualquer lugar. Pode ser lido e escrito. Como percebe-se, JavaFX não tem o modificador private, porém o modificador padrão é script-private, o que o torna acessível somente dentro do script em que foi declarado. Na tabela 2 estão listados os modificadores de acesso que são aplicáveis à variáveis. Pode-se usar package e protected juntamente com public-init e public-read para garantir maior controle sobre as permissões de escrita. Tabela 2 Modificadores de acesso de variáveis. Modificadores de acesso de variáveis public-read Só pode ser escrito dentro do próprio script, acessos externos tem permissão de leitura. public-init Dentro do script é possível ler e escrever a qualquer tempo. Fora do script, pode ser inicializado através de objeto-literal, após a inicialização, pode somente ser lido. protected Estende a permissão de escrita às subclasses. public Estende a permissão de escrita a componentes no mesmo pacote. Fonte: (ANDERSON; ANDERSON, 2009, p. 89) Triggers: Segundo Weaver e outros (2009, p.215) as triggers são uma parte opcional de uma declaração de variável. Ela é caracterizada pelo uso das palavraschave on replace seguido de um bloco de código a ser executado sempre que a
45 44 variável mude. No quadro 25 vemos um exemplo da implementação de uma trigger que monitora os valores de uma variável, porém uma trigger de uma variável pode também alterar outra variável, desde que tenha permissão de escrita para isso. Quadro 25: Trigger A saída destes comandos é esta: a variável triggered recebeu o valor 123. a variável triggered recebeu o valor -5. a variável triggered só pode conter valores entre 0 e 255, alterando o valor de -5 para 0 a variável triggered recebeu o valor 0. a variável triggered recebeu o valor 455. a variável triggered só pode conter valores entre 0 e 255, alterando o valor de 455 para 255 a variável triggered recebeu o valor 255. Percebe-se que a trigger é disparada já na inicialização da variável, já que todo tipo primitivo de JavaFX tem um valor default, a inicialização também é uma alteração de valor. Então a variável recebe o valor de -5, imprime a mensagem de mudança de valor e a mensagem de valor não aceito e muda o valor, o que repete a trigger, que imprime a mensagem de mudança de valor. Event Handlers: Os Nodes de JavaFX contém variáveis que armazenam funções que são chamadas quando determinado evento acontece, exemplos de event handlers são: onmousepressed, onkeytyped, onmouseentered.
46 45 3 DESENVOLVIMENTO DA APLICAÇÃO Como já mencionado, o stage é o principal container de JavaFX, e o scene armazena a parte gráfica da aplicação, na Fotografia 9, vemos a interface da aplicação, então analisaremos como ela foi desenhada. 1 2 Fotografia 9: Aplicação O atributo title de Stage é o título que aparecerá na Barra de títulos, height é a altura contando as decorações (bordas e barra de títulos), e width é a largura contando as decorações. O atributo scene recebe um objeto do tipo Scene cujo atributo content é uma sequence de Nodes como demonstrado no quadro 27. Quadro 26: Definição do Stage
47 CLASSE MAIN Começa-se a tela desenhando o fundo dela, através de um objeto Rectangle, de cor preta e tamanho variável acompanhando o tamanho da scene, conforme vemos no quadro 28. Quadro 27: Objeto Rectangle Analisando o quadro 28 percebe-se que este Rectangle foi atribuído a uma variável de nome Rectangle para posterior manipulação, altura e largura são atribuídas através de uma expressão bind que vincula as dimensões do Rectangle às dimensões da scene, o atributo fill (Preenchimento) recebe um Objeto javafx.scene.paint.color, e o atributo effect recebe um Objeto de javafx.scene.effect.lighting, que simula o efeito de uma luz sendo direcionada ao objeto. A renderização do scene ocorre na ordem em que é declarado (WEAVER et al., 2009, p. 253). É como se fossem colocados uns Retângulos sobre os outros, ou seja, o primeiro Rectangle declarado ficará em baixo dos outros. O Próximo Rectangle serve para aplicar um efeito de gradiente e é visto no quadro 29. A posição x é vinculada à posição x do Rectangle fundo, assim como a posição y, a altura (dividida por dois já que o gradiente só ocupa metade do tamanho da tela) e a largura, o que torna o gradiente flexível, acompanhando as mudanças de tamanho do scene, já que o tamanho dele é vinculado ao Rectangle fundo, que por sua vez é vinculado ao scene. O gradiente é composto de Stops que são posições relativas onde determinada cor está, JavaFX interpola o intervalo para fazer a transição entre as cores de um stop e outro.
Orientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia maisIniciação à Informática
Meu computador e Windows Explorer Justificativa Toda informação ou dado trabalhado no computador, quando armazenado em uma unidade de disco, transforma-se em um arquivo. Saber manipular os arquivos através
Leia maisProcedimentos para Reinstalação do Sisloc
Procedimentos para Reinstalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Criação de backups importantes... 3 3. Reinstalação do Sisloc... 4 Passo a passo... 4 4. Instalação da base de dados Sisloc...
Leia maisDicas para usar melhor o Word 2007
Dicas para usar melhor o Word 2007 Quem está acostumado (ou não) a trabalhar com o Word, não costuma ter todo o tempo do mundo disponível para descobrir as funcionalidades de versões recentemente lançadas.
Leia maisGuia de Início Rápido
Guia de Início Rápido O Microsoft Word 2013 parece diferente das versões anteriores, por isso criamos este guia para ajudar você a minimizar a curva de aprendizado. Barra de Ferramentas de Acesso Rápido
Leia maisCAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:
Leia maisGoogle Drive. Passos. Configurando o Google Drive
Google Drive um sistema de armazenagem de arquivos ligado à sua conta Google e acessível via Internet, desta forma você pode acessar seus arquivos a partir de qualquer dispositivo que tenha acesso à Internet.
Leia maisEDITORA FERREIRA MP/RJ_EXERCÍCIOS 01
EDITORA FERREIRA MP/RJ NCE EXERCÍCIOS 01 GABARITO COMENTADO 01 Ao se arrastar um arquivo da pasta C:\DADOS para a pasta D:\TEXTOS utilizando se o botão esquerdo do mouse no Windows Explorer: (A) o arquivo
Leia maisStatus. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna
O que é uma planilha eletrônica? É um aplicativo que oferece recursos para manipular dados organizados em tabelas. A partir deles pode-se gerar gráficos facilitando a análise e interpretação dos dados
Leia maisCURSO DE PROGRAMAÇÃO EM JAVA
CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro
Leia maisManual AGENDA DE BACKUP
Gemelo Backup Online DESKTOP Manual AGENDA DE BACKUP Realiza seus backups de maneira automática. Você só programa os dias e horas em que serão efetuados. A única coisa que você deve fazer é manter seu
Leia maisLógica de Programação
Lógica de Programação Unidade 4 Ambiente de desenvolvimento Java QI ESCOLAS E FACULDADES Curso Técnico em Informática SUMÁRIO A LINGUAGEM JAVA... 3 JVM, JRE, JDK... 3 BYTECODE... 3 PREPARANDO O AMBIENTE
Leia maisCriando um script simples
Criando um script simples As ferramentas de script Diferente de muitas linguagens de programação, você não precisará de quaisquer softwares especiais para criar scripts de JavaScript. A primeira coisa
Leia maisMicrosoft Office PowerPoint 2007
INTRODUÇÃO AO MICROSOFT POWERPOINT 2007 O Microsoft Office PowerPoint 2007 é um programa destinado à criação de apresentação através de Slides. A apresentação é um conjunto de Sides que são exibidos em
Leia maisAULA 4 VISÃO BÁSICA DE CLASSES EM PHP
AULA 4 VISÃO BÁSICA DE CLASSES EM PHP Antes de mais nada, vamos conhecer alguns conceitos, que serão importantes para o entendimento mais efetivos dos assuntos que trataremos durante a leitura desta apostila.
Leia maisDesenvolvendo Websites com PHP
Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.
Leia maisANIMAÇÕES WEB AULA 2. conhecendo a interface do Adobe Flash. professor Luciano Roberto Rocha. www.lrocha.com
ANIMAÇÕES WEB AULA 2 conhecendo a interface do Adobe Flash professor Luciano Roberto Rocha www.lrocha.com O layout do programa A barra de ferramentas (tools) Contém as ferramentas necessárias para desenhar,
Leia maisAlgoritmos e Programação Estruturada
Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.
Leia maisLinguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas
Linguagem de Programação JAVA Professora Michelle Nery Nomeclaturas Conteúdo Programático Nomeclaturas JDK JRE JEE JSE JME JVM Toolkits Swing AWT/SWT JDBC EJB JNI JSP Conteúdo Programático Nomenclatures
Leia maisAndroid e Bancos de Dados
(Usando o SQLite) Programação de Dispositivos Móveis Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do
Leia maisJava. Marcio de Carvalho Victorino www.dominandoti.eng.br
Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a
Leia maisAPOSTILA DE EXEMPLO. (Esta é só uma reprodução parcial do conteúdo)
APOSTILA DE EXEMPLO (Esta é só uma reprodução parcial do conteúdo) 1 Índice Aula 1 - Área de trabalho e personalizando o sistema... 3 A área de trabalho... 3 Partes da área de trabalho.... 4 O Menu Iniciar:...
Leia maisO que há de novo. Audaces Idea
O que há de novo Audaces Idea Com o propósito de produzir tecnologia de ponta, o principal requisito da Política de Qualidade da Audaces é buscar a melhoria contínua de seus produtos e serviços. Inovadora
Leia maisFramework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C#
Linguagem de Programação 3 Framework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C# Prof. Mauro Lopes 1-31 35 Objetivos Nesta aula iremos apresentar a tecnologia.net, o ambiente de desenvolvimento
Leia maisCADERNO DE QUESTÕES WINDOWS 8
CADERNO DE QUESTÕES WINDOWS 8 1) No sistema operacional Microsoft Windows 8, uma forma rápida de acessar o botão liga/desliga é através do atalho: a) Windows + A. b) ALT + C. c) Windows + I. d) CTRL +
Leia maisLidar com números e estatísticas não é fácil. Reunir esses números numa apresentação pode ser ainda mais complicado.
, ()! $ Lidar com números e estatísticas não é fácil. Reunir esses números numa apresentação pode ser ainda mais complicado. Uma estratégia muito utilizada para organizar visualmente informações numéricas
Leia maisPrática 6 ActionScript
Prática 6 ActionScript 1. Objetivos Se familiarizar com o ActionScript. Usar comandos e funções básicas. 2. Recursos Necessários Computador com o programa Macromedia Flash MX ou superior. 3. Conceitos
Leia maisNetBeans. Conhecendo um pouco da IDE
NetBeans Conhecendo um pouco da IDE Professor: Edwar Saliba Júnior Sumário Apresentação:...1 Criando Um Novo Projeto de Software:...1 Depurando Um Código-fonte:...4 Entendendo o Código-fonte:...7 Dica
Leia maisANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007
ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007 CURITIBA 2015 2 SUMÁRIO INTRODUÇÃO AO MICROSOFT POWERPOINT 2007... 3 JANELA PRINCIPAL... 3 1 - BOTÃO OFFICE... 4 2 - FERRAMENTAS DE ACESSO
Leia maisNovell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR
Novell Teaming - Guia de início rápido Novell Teaming 1.0 Julho de 2007 INTRODUÇÃO RÁPIDA www.novell.com Novell Teaming O termo Novell Teaming neste documento se aplica a todas as versões do Novell Teaming,
Leia maisManual do Usuário Android Neocontrol
Manual do Usuário Android Neocontrol Sumário 1.Licença e Direitos Autorais...3 2.Sobre o produto...4 3. Instalando, Atualizando e executando o Android Neocontrol em seu aparelho...5 3.1. Instalando o aplicativo...5
Leia maisO Windows 7 é um sistema operacional desenvolvido pela Microsoft.
Introdução ao Microsoft Windows 7 O Windows 7 é um sistema operacional desenvolvido pela Microsoft. Visualmente o Windows 7 possui uma interface muito intuitiva, facilitando a experiência individual do
Leia maisCurso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura
UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.
Leia mais2 echo "PHP e outros.";
PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento
Leia maisArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02
ArpPrintServer Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 1 Sumário INTRODUÇÃO... 3 CARACTERÍSTICAS PRINCIPAIS DO SISTEMA... 3 REQUISITOS DE SISTEMA... 4 INSTALAÇÃO
Leia mais1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.
1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. Editando um Artigo 4.3. Excluindo um Artigo 4.4. Publicar
Leia maisAMBIENTE DE PROGRAMAÇÃO PYTHON
Computadores e Programação Engª Biomédica Departamento de Física Faculdade de Ciências e Tecnologia da Universidade de Coimbra Ano Lectivo 2003/2004 FICHA 1 AMBIENTE DE PROGRAMAÇÃO PYTHON 1.1. Objectivos
Leia maisFeature-Driven Development
FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por
Leia mais1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO
1 ÍNDICE 1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO... 3 1.1 REQUISITOS BASICOS DE SOFTWARE... 3 1.2 REQUISITOS BASICOS DE HARDWARE... 3 2 EXECUTANDO O INSTALADOR... 3 2.1 PASSO 01... 3 2.2 PASSO
Leia maisIntrodução ao IDE Netbeans (Programação Java)
Universidade Federal do ABC (UFABC) Disciplina: Processamento da Informação (BC-0505) Assunto: Java e Netbeans Introdução ao IDE Netbeans (Programação Java) Conteúdo 1. Introdução... 1 1.1. Programas necessários...
Leia mais10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO
10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO UMA DAS GRANDES FUNÇÕES DA TECNOLOGIA É A DE FACILITAR A VIDA DO HOMEM, SEJA NA VIDA PESSOAL OU CORPORATIVA. ATRAVÉS DELA, ELE CONSEGUE
Leia maisAno III - Número 16. Versão 4.6.4
Versão 4.6.4 Sexta-feira, 08 de fevereiro de 2008 ÍNDICE 3 4 EDITORIAL NOVAS FUNCIONALIDADES 4 12 13 14 15 16 Novo Cronograma 4 5 5 6 7 8 8 9 9 10 10 Edição Rápida do Cronograma Recurso de Arrastar e Soltar
Leia maisAlgoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões
Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação Primeiro Programa em Java public class OlaPessoal
Leia maisAula 2. Objetivos Conceitos; Instalação do Text Pad; Entendendo o código java do AloMundo1 Codificação do AloMundo2,AloMundo3 e AloMundo4.
Aula 2 Objetivos Conceitos; Instalação do Text Pad; Entendendo o código java do AloMundo1 Codificação do AloMundo2,AloMundo3 e AloMundo4. Conceitos O software controla os computadores(freqüentemente conhecido
Leia maisNoções de. Microsoft SQL Server. Microsoft SQL Server
Noções de 1 Considerações Iniciais Basicamente existem dois tipos de usuários do SQL Server: Implementadores Administradores 2 1 Implementadores Utilizam o SQL Server para criar e alterar base de dados
Leia maisMQSeries Everyplace. Leia-me primeiro G517-7010-00
MQSeries Everyplace Leia-me primeiro G517-7010-00 MQSeries Everyplace Leia-me primeiro G517-7010-00 Primeira Edição (Junho de 2000) Esta edição se aplica ao MQSeries Everyplace Versão 1.0 e a todos os
Leia maisSumário 1. SOBRE O NFGoiana DESKTOP... 3 1.1. Apresentação... 3 1.2. Informações do sistema... 3 1.3. Acessando o NFGoiana Desktop... 3 1.4.
1 Sumário 1. SOBRE O NFGoiana DESKTOP... 3 1.1. Apresentação... 3 1.2. Informações do sistema... 3 1.3. Acessando o NFGoiana Desktop... 3 1.4. Interface do sistema... 4 1.4.1. Janela Principal... 4 1.5.
Leia maisJava Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da
Java Laboratório Aula 1 Programação orientada a objetos Profa. Renata e Cristiane Introdução a Plataforma Java O que é Java? Tecnologia Linguagem de Programação Ambiente de Execução (JVM) Tudo isso é a
Leia maisIntrodução à Programação
Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5
Leia maisProcedimentos para Instalação do Sisloc
Procedimentos para Instalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Instalação do Sisloc... 3 Passo a passo... 3 3. Instalação da base de dados Sisloc... 16 Passo a passo... 16 4. Instalação
Leia maisManual do Painel Administrativo
Manual do Painel Administrativo versão 1.0 Autores César A Miggiolaro Marcos J Lazarin Índice Índice... 2 Figuras... 3 Inicio... 5 Funcionalidades... 7 Analytics... 9 Cidades... 9 Conteúdo... 10 Referência...
Leia maisDOCUMENTAÇÃO DO FRAMEWORK - versão 2.0
DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 Índice 1 - Objetivo 2 - Descrição do ambiente 2.1. Tecnologias utilizadas 2.2. Estrutura de pastas 2.3. Bibliotecas já incluídas 3 - Características gerais 4 - Criando
Leia maisPROJETO INFORMÁTICA NA ESCOLA
EE Odilon Leite Ferraz PROJETO INFORMÁTICA NA ESCOLA AULA 1 APRESENTAÇÃO E INICIAÇÃO COM WINDOWS VISTA APRESENTAÇÃO E INICIAÇÃO COM WINDOWS VISTA Apresentação dos Estagiários Apresentação do Programa Acessa
Leia maisSISTEMA DE BANCO DE IMAGENS MANUAL DE USO
SISTEMA DE BANCO DE IMAGENS MANUAL DE USO Versão: BETA Última atualização: 24/06/2012 Índice O sistema de banco de imagens 03 Pesquisa de fotos 04 Pautas e eventos 08 Cadastro de fotos 09 Edição e indexação
Leia maisIntrodução ao Tableau Server 7.0
Introdução ao Tableau Server 7.0 Bem-vindo ao Tableau Server; Este guia orientará você pelas etapas básicas de instalação e configuração do Tableau Server. Em seguida, usará alguns dados de exemplo para
Leia maisAtualização deixa Java mais seguro, mas ainda é melhor desativar
Atualização deixa Java mais seguro, mas ainda é melhor desativar seg, 21/01/13 por Altieres Rohr Segurança Digital Se você tem alguma dúvida sobre segurança da informação (antivírus, invasões, cibercrime,
Leia maisTUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!
UNIVERSIDADE DE SÃO PAULO (USP) ESCOLA DE ARTES, CIÊNCIAS E HUMANIDADES (EACH) TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH! Autoria e revisão por: PET Sistemas
Leia maisManual AGENDA DE BACKUP
Gemelo Backup Online DESKTOP Manual AGENDA DE BACKUP Realiza seus backups de maneira automática. Você só programa os dias e horas em que serão efetuados. A única coisa que você deve fazer é manter seu
Leia maisINSTALAÇÃO DO SISTEMA CONTROLGÁS
INSTALAÇÃO DO SISTEMA CONTROLGÁS 1) Clique duas vezes no arquivo ControlGasSetup.exe. Será exibida a tela de boas vindas do instalador: 2) Clique em avançar e aparecerá a tela a seguir: Manual de Instalação
Leia maisPolycom RealPresence Content Sharing Suite Guia rápido do usuário
Polycom RealPresence Content Sharing Suite Guia rápido do usuário Versão 1.2 3725-69877-001 Rev.A Novembro de 2013 Neste guia, você aprenderá a compartilhar e visualizar conteúdos durante uma conferência
Leia maisAula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis
1. TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: As instruções, que
Leia maisINTRODUÇÃO AO WINDOWS
INTRODUÇÃO AO WINDOWS Paulo José De Fazzio Júnior 1 Noções de Windows INICIANDO O WINDOWS...3 ÍCONES...4 BARRA DE TAREFAS...5 BOTÃO...5 ÁREA DE NOTIFICAÇÃO...5 BOTÃO INICIAR...6 INICIANDO PROGRAMAS...7
Leia maisFluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção
Este procedimento corresponde ao fluxo de trabalho de Indexação de OCR com separação de código de correção no programa de treinamento do Capture Pro Software. As etapas do procedimento encontram-se na
Leia maisOneDrive: saiba como usar a nuvem da Microsoft
OneDrive: saiba como usar a nuvem da Microsoft O OneDrive é um serviço de armazenamento na nuvem da Microsoft que oferece a opção de guardar até 7 GB de arquivos grátis na rede. Ou seja, o usuário pode
Leia maisProgramação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza
Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem
Leia maisPHP Material de aula prof. Toninho (8º Ano)
Na aula anterior entendemos como se faz o acesso aos nossos arquivos PHP; Como construir um script em php. Nesta aula (3) vamos entender: Como roda o PHP Inserindo comentários Visualizando páginas a partir
Leia maisO Primeiro Programa em Visual Studio.net
O Primeiro Programa em Visual Studio.net Já examinamos o primeiro programa escrito em C que servirá de ponto de partida para todos os demais exemplos e exercícios do curso. Agora, aprenderemos como utilizar
Leia maisIntrodução ao PHP. Prof. Késsia Marchi
Introdução ao PHP Prof. Késsia Marchi PHP Originalmente PHP era um assíncrono para Personal Home Page. De acordo com convenções para atribuições de nomes recursivas do GNU foi alterado para PHP Hypertext
Leia mais2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10
1. TIPOS DE DADOS... 3 1.1 DEFINIÇÃO DE DADOS... 3 1.2 - DEFINIÇÃO DE VARIÁVEIS... 3 1.3 - VARIÁVEIS EM C... 3 1.3.1. NOME DAS VARIÁVEIS... 3 1.3.2 - TIPOS BÁSICOS... 3 1.3.3 DECLARAÇÃO DE VARIÁVEIS...
Leia maisGuião de Introdução ao Eclipse IDE Índice
Índice 1. Introdução... 2 1.1. O que é um ambiente de desenvolvimento (IDE)?... 2 1.2. Visão geral sobre o Eclipse IDE... 2 2. Iniciar o Eclipse... 3 2.1. Instalação... 3 2.2. Utilizar o Eclipse... 3 3.
Leia maisGerenciamento de Arquivos e Pastas. Professor: Jeferson Machado Cordini jmcordini@hotmail.com
Gerenciamento de Arquivos e Pastas Professor: Jeferson Machado Cordini jmcordini@hotmail.com Arquivo Todo e qualquer software ou informação gravada em nosso computador será guardada em uma unidade de disco,
Leia maisManual do Visualizador NF e KEY BEST
Manual do Visualizador NF e KEY BEST Versão 1.0 Maio/2011 INDICE SOBRE O VISUALIZADOR...................................................... 02 RISCOS POSSÍVEIS PARA O EMITENTE DA NOTA FISCAL ELETRÔNICA.................
Leia maisInstalando o J2SE 5.0 JDK no Windows 2000/XP
Instalando o J2SE 5.0 JDK no Windows 2000/XP Fabricio Leonard Leopoldino Descreve o processo de download, instalação e configuração do J2SE 5.0 JDK, no Windows 2000 e no Windows XP. 1 - Introdução Para
Leia maisManual SAGe Versão 1.2 (a partir da versão 12.08.01)
Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação
Leia maisNome N Série: Ferramentas
Nome N Série: Ferramentas Competências: Identificar e utilizar técnicas de modelagem de dados; Habilidades: Utilizar ferramentas de apoio ao desenvolvimento de software; Bases Tecnológicas: Metodologias
Leia maisCadastramento de Computadores. Manual do Usuário
Cadastramento de Computadores Manual do Usuário Setembro 2008 ÍNDICE 1. APRESENTAÇÃO 1.1 Conhecendo a solução...03 Segurança pela identificação da máquina...03 2. ADERINDO À SOLUÇÃO e CADASTRANDO COMPUTADORES
Leia maisPrática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva
1. O que são Serviços Web (Web Services)? Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva A ideia central dos Web Services parte da antiga necessidade
Leia maisProcedimentos para Instalação do SISLOC
Procedimentos para Instalação do SISLOC Sumário 1. Informações Gerais...3 2. Instalação do SISLOC...3 Passo a passo...3 3. Instalação da Base de Dados SISLOC... 11 Passo a passo... 11 4. Instalação de
Leia maisNota de Aula: Utilização da IDE Code::Blocks
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO CAMPUS SÃO LUÍS MONTE CASTELO DEPARTAMENTO ACADÊMICO DE INFORMÁTICA SISTEMAS DE INFORMAÇÃO DISCIPLINA: LINGUAGEM DE PROGRAMAÇÃO I PROFESSOR:
Leia maisMicrosoft Office Excel 2007
1 Microsoft Office Excel 2007 O Excel é um programa dedicado a criação de planilhas de cálculos, além de fornecer gráficos, função de banco de dados e outros. 1. Layout do Excel 2007 O Microsoft Excel
Leia maisQUESTÕES SOBRE WINDOWS 7
Informática Windows 7 QUESTÕES SOBRE WINDOWS 7 1) Considerando a figura exibida acima, ao repousar o ponteiro do mouse sobre o ícone doword, aparecerão três miniaturas, representando arquivos desse programa
Leia maisCOMO USAR DOIS MONITORES NO WINDOWS 8
COMO USAR DOIS MONITORES NO WINDOWS 8 Trabalhar com dois monitores no Windows tem diversas utilidades. Dentre elas podemos destacar a possibilidade de visualizar mais itens ao mesmo tempo, exibir o conteúdo
Leia maisCONVENÇÃO DE CÓDIGO JAVA
CONVENÇÃO DE CÓDIGO JAVA Eligiane Ceron - Abril de 2012 Versão 1.0 Conteúdo Considerações iniciais... 2 Introdução... 2 Extensão de arquivos... 2 Arquivos de código Java... 2 Comentários iniciais... 2
Leia maisPesquisa e organização de informação
Pesquisa e organização de informação Capítulo 3 A capacidade e a variedade de dispositivos de armazenamento que qualquer computador atual possui, tornam a pesquisa de informação um desafio cada vez maior
Leia maisJava Como Programar, 8/E
Capítulo 2 Introdução aos aplicativos Java Java Como Programar, 8/E (C) 2010 Pearson Education, Inc. Todos os 2.1 Introdução Programação de aplicativo Java. Utilize as ferramentas do JDK para compilar
Leia mais( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO DISPOSITIVOS MOVEIS ANDROID STUDIO
Serviço Nacional de Aprendizagem Comercial E.E.P. Senac Pelotas Centro Histórico Programa Nacional de Acesso ao Ensino Técnico e Emprego Curso Técnico em Informática ( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO
Leia maisProgramação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL
Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Prof. MSc. Hugo Souza Iniciando nossas aulas sobre
Leia maisComponentes da linguagem C++
Componentes da linguagem C++ C++ é uma linguagem de programação orientada a objetos (OO) que oferece suporte às características OO, além de permitir você realizar outras tarefas, similarmente a outras
Leia maisApostilas OBJETIVA Escrevente Técnico Judiciário TJ Tribunal de Justiça do Estado de São Paulo - Concurso Público 2015. Caderno 1.
Caderno 1 Índice MS-Windows 7: conceito de pastas, diretórios, arquivos e atalhos, área de trabalho, área de transferência, manipulação de arquivos e pastas, uso dos menus, programas e aplicativos, interação
Leia maismarcio@dsc.ufcg.edu.br priscillakmv@gmail.com
DSC/CEEI/UFCG marcio@dsc.ufcg.edu.br priscillakmv@gmail.com 1 Realiza atividades com ênfase em Ensino, Pesquisa e Extensão (Ensino) 2 Configurando o projeto Adicionando código ao arquivo com o código-fonte
Leia maisManual de Conversão para PDF Envio de Arquivos ao Diário Oficial
Manual de Conversão para PDF Manual de Conversão para PDF 3 Conversão para PDF Microsoft Office 2003 Instalação da impressora PDF O pacote de aplicativo Office 2003 não possui nativamente o recurso de
Leia maisCAPÍTULO 35 Como utilizar os componentes ColdFusion
CAPÍTULO 35 Como utilizar os componentes ColdFusion Os componentes ColdFusion (CFC) permitem ao usuário encapsular lógicas de aplicação e de negócios (business logic) em unidades auto-controladas reutilizáveis.
Leia mais&XUVRGH,QWURGXomRDR (GLWRUGH3ODQLOKDV([FHO
Universidade Federal de Viçosa Departamento de Informática &XUVRGH,QWURGXomRDR (GLWRUGH3ODQLOKDV([FHO Flaviano Aguiar Liziane Santos Soares Jugurta Lisboa Filho (Orientador) PROJETO UNESC@LA Setembro de
Leia maisIntrodução a listas - Windows SharePoint Services - Microsoft Office Online
Page 1 of 5 Windows SharePoint Services Introdução a listas Ocultar tudo Uma lista é um conjunto de informações que você compartilha com membros da equipe. Por exemplo, você pode criar uma folha de inscrição
Leia maisANDROID APPLICATION PROJECT
Criando um programa Abrindo o programa Eclipse, clique na opção [FILE], depois em [NEW], selecione a opção [PROJECT], uma janela de opção do tipo de projeto irá se abrir, escolha [ANDROID] logo depois
Leia maisAPOSTILA DE EXCEL 2007
APOSTILA DE EXCEL 2007 1. Introdução Quando você cria uma planilha nova, a tela do computador é dividida em linhas e colunas, formando uma grade. A interseção de uma linha e de uma coluna é chamada de
Leia maisManual de Utilização Autorizador
1) Acessando: 1-1) Antes de iniciar a Implantação do GSS, lembre-se de verificar os componentes de software instalados no computador do prestador de serviço: a) Sistema Operacional: nosso treinamento está
Leia maisFollow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade
do Sistema Índice Página 1. Como acessar o sistema 1.1 Requisitos mínimos e compatibilidade 03 2. Como configurar o Sistema 2.1 Painel de Controle 2.2 Informando o nome da Comissária 2.3 Escolhendo a Cor
Leia maisTUTORIAL DO ALUNO. Olá, bem vindo à plataforma de cursos a distância da Uniapae!!!
TUTORIAL DO ALUNO Olá, bem vindo à plataforma de cursos a distância da Uniapae!!! O Moodle é a plataforma de ensino a distância utilizada pela Uniapae sendo a unidade de ensino para rápida capacitação
Leia maisIntrodução à Linguagem
Introdução à Linguagem Curso de Nivelamento do PPGMNE Janeiro / 2011 Juliano J. Scremin jjscremin@jjscremin.t5.com.br Um pouco de história Um pouco de história: Nascimento do Python Um pouco de história:
Leia mais