UNIVERSIDADE DO OESTE DE SANTA CATARINA UNOESC DANIEL RODRIGUES CONSTRUINDO APLICAÇÕES DE INTERFACE RICA COM JAVAFX

Tamanho: px
Começar a partir da página:

Download "UNIVERSIDADE DO OESTE DE SANTA CATARINA UNOESC DANIEL RODRIGUES CONSTRUINDO APLICAÇÕES DE INTERFACE RICA COM JAVAFX"

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.

Esse update é 10: Novos applets e JavaFX

Esse update é 10: Novos applets e JavaFX Esse update é 10: Novos applets e JavaFX Jorge Diz Instrutor Globalcode Objetivos Objetivos: Mostrar o que vem por ai no desktop/ browsertop Ver se os applets agora vão pegar Onde está JavaFX? Agenda >Applets:

Leia mais

Introdução ao IDE Netbeans (Programação Java)

Introduçã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 mais

Java Como Programar, 8/E

Java 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

Atualização deixa Java mais seguro, mas ainda é melhor desativar

Atualizaçã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 mais

Estudo comparativo entre tecnologias Java: Applet e JWS.

Estudo comparativo entre tecnologias Java: Applet e JWS. Estudo comparativo entre tecnologias Java: Applet e JWS. Clara Aben-Athar B. Fernandes¹, Carlos Alberto P. Araújo¹ 1 Centro Universitário Luterano de Santarém Comunidade Evangélica Luterana (CEULS/ULBRA)

Leia mais

Dominando Action Script 3

Dominando Action Script 3 Dominando Action Script 3 Segunda Edição (2014) Daniel Schmitz Esse livro está à venda em http://leanpub.com/dominandoactionscript3 Essa versão foi publicada em 2014-05-02 This is a Leanpub book. Leanpub

Leia mais

Microsoft Visual Studio Express 2012 for Windows Desktop

Microsoft Visual Studio Express 2012 for Windows Desktop Microsoft Visual Studio Express 2012 for Windows Desktop Apresentação da ferramenta Professor: Danilo Giacobo Página pessoal: www.danilogiacobo.eti.br E-mail: danilogiacobo@gmail.com 1 Introdução Visual

Leia mais

Aula 1 - Introdução e configuração de ambiente de desenvolvimento

Aula 1 - Introdução e configuração de ambiente de desenvolvimento Aula 1 - Introdução e configuração de ambiente de desenvolvimento Olá, seja bem-vindo à primeira aula do curso para desenvolvedor de Android, neste curso você irá aprender a criar aplicativos para dispositivos

Leia mais

4 Criação de macros e introdução à linguagem VBA

4 Criação de macros e introdução à linguagem VBA 4 Criação de macros e introdução à linguagem VBA Vinicius A. de Souza va.vinicius@gmail.com São José dos Campos, 2011. 1 Sumário Tópicos em Microsoft Excel 2007 Introdução à criação de macros...3 Gravação

Leia mais

Lógica de Programação

Ló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 mais

Prof. Esp. Adriano Carvalho

Prof. Esp. Adriano Carvalho Prof. Esp. Adriano Carvalho Um arquivo contendo uma sequência de comandos em uma linguagem de programação especifica Esses comandosrespeitam regras de como serem escritos e quais são as palavras que podem

Leia mais

Manual do Usuário. Sistema Financeiro e Caixa

Manual do Usuário. Sistema Financeiro e Caixa Manual do Usuário Sistema Financeiro e Caixa - Lançamento de receitas, despesas, gastos, depósitos. - Contas a pagar e receber. - Emissão de cheque e Autorização de pagamentos/recibos. - Controla um ou

Leia mais

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Linguagem 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 mais

PHP() é uma linguagem de integração de servidor que permite a criação de paginas dinâmicas. Como todas

PHP() é uma linguagem de integração de servidor que permite a criação de paginas dinâmicas. Como todas O que é PHP? Acrônimo de PHP: Hipertext Language PostProcessor Inicialmente escrita para o desenvolvimento de aplicações Web Facilidade para iniciantes e recursos poderosos para programadores profissionais

Leia mais

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br

Linguagens de. Aula 02. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação III Aula 02 Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagens de Programação Técnica de comunicação padronizada para enviar instruções a um computador. Assim

Leia mais

DESENVOLVIMENTO DE SOFTWARE

DESENVOLVIMENTO DE SOFTWARE VARIAÁ VEL Antes de iniciarmos os comandos referentes a Banco de Dados, precisamos de uma breve descrição técnica sobre Variáveis que serão uma constante em programação seja qual for sua forma de leitura.

Leia mais

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Java 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 mais

1. Instalando o Java 7 JavaFX e o Netbeans

1. Instalando o Java 7 JavaFX e o Netbeans 1. Instalando o Java 7 JavaFX e o Netbeans Faça o download do Java 7 que inclui JavaFX no site do Oracle: http://www.oracle.com/technetwork/java/javase /downloads/index.html. Clique no License Agreement

Leia mais

Capítulo 7 O Gerenciador de Arquivos

Capítulo 7 O Gerenciador de Arquivos Capítulo 7 O Gerenciador de Arquivos Neste capítulo nós iremos examinar as características da interface do gerenciador de arquivos Konqueror. Através dele realizaremos as principais operações com arquivos

Leia mais

Algoritmos em Javascript

Algoritmos em Javascript Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays

Leia mais

TEORIA BÁSICA SOBRE LINGUAGEM PHP

TEORIA BÁSICA SOBRE LINGUAGEM PHP PHP - Introdução Vantagens do Uso do PHP O php é uma linguagem de programação para ambiente web ou seja com ela, você pode desenvolver aplicações que possam ser acessadas via browser (netscape,internet

Leia mais

CURSO DE PROGRAMAÇÃO EM JAVA

CURSO 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 mais

Linguagens de programação

Linguagens de programação Prof. André Backes Linguagens de programação Linguagem de Máquina Computador entende apenas pulsos elétricos Presença ou não de pulso 1 ou 0 Tudo no computador deve ser descrito em termos de 1 s ou 0 s

Leia mais

Android e Bancos de Dados

Android 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 mais

Ambientes Visuais. Ambientes Visuais

Ambientes Visuais. Ambientes Visuais Ambientes Visuais Inicialmente, apenas especialistas utilizavam os computadores, sendo que os primeiros desenvolvidos ocupavam grandes áreas e tinham um poder de processamento reduzido. Porém, a contínua

Leia mais

( JUDE Community 5.1 2006/2007 ) Por Denize Terra Pimenta Outubro/2007

( JUDE Community 5.1 2006/2007 ) Por Denize Terra Pimenta Outubro/2007 Tutorial JUDE ( JUDE Community 5.1 2006/2007 ) Por Denize Terra Pimenta Outubro/2007 Ferramenta CASE UML Índice Introdução... 2 Download e Instalação... 2 Apresentação da Ferramenta... 2 Salvando o Projeto...

Leia mais

FBV - Linguagem de Programação II. Um pouco sobre Java

FBV - Linguagem de Programação II. Um pouco sobre Java FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base

Leia mais

Linguagem de Programação Visual

Linguagem de Programação Visual Linguagem de Programação Visual Unidade 1 Ambiente de desenvolvimento Curso Técnico em Informática SUMÁRIO INTRODUÇÃO... 3 SOBRE O JAVA... 3 AMBIENTE DE DESENVOLVIMENTO... 5 RECURSOS DA FERRAMENTA NETBEANS...

Leia mais

EMENTA DO CURSO. Tópicos:

EMENTA DO CURSO. Tópicos: EMENTA DO CURSO O Curso Preparatório para a Certificação Oracle Certified Professional, Java SE 6 Programmer (Java Básico) será dividido em 2 módulos e deverá ter os seguintes objetivos e conter os seguintes

Leia mais

Universidade Federal do Rio de Janeiro NCE/PGTIAE. Tutorial SweetHome3D

Universidade Federal do Rio de Janeiro NCE/PGTIAE. Tutorial SweetHome3D Universidade Federal do Rio de Janeiro NCE/PGTIAE Tutorial SweetHome3D Trabalho apresentado ao Prof. Carlo na Disciplina de Software Livre no curso Pós Graduação em Tecnologia da Informação Aplicada a

Leia mais

APOSTILA PHP PARTE 1

APOSTILA PHP PARTE 1 APOSTILA PHP PARTE 1 1. Introdução O que é PHP? PHP significa: PHP Hypertext Preprocessor. Realmente, o produto foi originalmente chamado de Personal Home Page Tools ; mas como se expandiu em escopo, um

Leia mais

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP AGRUPAMENTO DE ESCOLAS DE SANTA COMBA DÃO CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS 2012-2015 PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO MÓDULO 2 Mecanismos de Controlo de

Leia mais

PROGRAMAÇÃO PARA INTERNET RICA RICH INTERNET APPLICATIONS

PROGRAMAÇÃO PARA INTERNET RICA RICH INTERNET APPLICATIONS PROGRAMAÇÃO PARA INTERNET RICA RICH INTERNET APPLICATIONS Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o que é uma Aplicação Rica para Internet Contextualizar tais aplicações na Web e os desafios

Leia mais

Programação Elementar de Computadores Jurandy Soares

Programação Elementar de Computadores Jurandy Soares Programação Elementar de Computadores Jurandy Soares Básico de Computadores Computador: dispositivos físicos + programas Dispositivos físicos: hardware Programas: as instruções que dizem aos dispositivos

Leia mais

Conectando Bancos de Dados Microsoft Access no BrOffice.org Base. fornecido pelo Projeto de Documentação do BrOffice.org

Conectando Bancos de Dados Microsoft Access no BrOffice.org Base. fornecido pelo Projeto de Documentação do BrOffice.org Conectando Bancos de Dados Microsoft Access no BrOffice.org Base fornecido pelo Projeto de Documentação do BrOffice.org Índice 1 Introdução...2 1.1 Versão... 2 1.2 Licenciamento...2 1.3 Mensagem do Projeto

Leia mais

Instituto Federal do Sertão-PE. Curso de PHP. Professor: Felipe Correia

Instituto Federal do Sertão-PE. Curso de PHP. Professor: Felipe Correia Instituto Federal do Sertão-PE Curso de PHP Professor: Felipe Correia Conteúdo Parte I Parte II Introdução Funções de strings Instalação Constantes Sintaxe Operadores Variáveis if else elseif Echo/Print

Leia mais

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo:

Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo: Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade

Leia mais

Adobe Flex. Cainã Fuck dos Santos Thiago Vieira Puluceno Jonathan Kuntz Fornari Gustavo Nascimento Costa

Adobe Flex. Cainã Fuck dos Santos Thiago Vieira Puluceno Jonathan Kuntz Fornari Gustavo Nascimento Costa Adobe Flex Cainã Fuck dos Santos Thiago Vieira Puluceno Jonathan Kuntz Fornari Gustavo Nascimento Costa O que é Flex? Estrutura de Código aberto para a criação de aplicativos Web Utiliza o runtime do Adobe

Leia mais

Guião de Introdução ao Eclipse IDE Índice

Guiã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 mais

Oracle PL/SQL Overview

Oracle PL/SQL Overview Faculdades Network Oracle PL/SQL Overview Prof. Edinelson PL/SQL Linguagem de Programação Procedural Language / Structured Query Language Une o estilo modular de linguagens de programação à versatilidade

Leia mais

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider

Ferramenta: Spider-CL. Manual do Usuário. Versão da Ferramenta: 1.1. www.ufpa.br/spider Ferramenta: Spider-CL Manual do Usuário Versão da Ferramenta: 1.1 www.ufpa.br/spider Histórico de Revisões Data Versão Descrição Autor 14/07/2009 1.0 15/07/2009 1.1 16/07/2009 1.2 20/05/2010 1.3 Preenchimento

Leia mais

BCValidador VALIDAÇÃO DE ARQUIVOS XML RECEBIDOS PELO BANCO CENTRAL DO BRASIL

BCValidador VALIDAÇÃO DE ARQUIVOS XML RECEBIDOS PELO BANCO CENTRAL DO BRASIL BCValidador VALIDAÇÃO DE ARQUIVOS XML RECEBIDOS PELO BANCO CENTRAL DO BRASIL Deinf/Dine4 Versão 1.3 20/05/2013 Histórico de Revisão Data Versão Descrição Autor 06/11/2007 1.0 Elaboração da primeira versão

Leia mais

Framework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C#

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

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

Programação para Android

Programação para Android Programação para Android Aula 01: Visão geral do android, instalação e configuração do ambiente de desenvolvimento, estrutura básica de uma aplicação para Android Objetivos Configurar o ambiente de trabalho

Leia mais

Curso de Iniciação ao Access Basic (I) CONTEÚDOS

Curso de Iniciação ao Access Basic (I) CONTEÚDOS Curso de Iniciação ao Access Basic (I) CONTEÚDOS 1. A Linguagem Access Basic. 2. Módulos e Procedimentos. 3. Usar o Access: 3.1. Criar uma Base de Dados: 3.1.1. Criar uma nova Base de Dados. 3.1.2. Criar

Leia mais

Início Rápido Desktop. 2015 Release 1 Xojo, Inc.

Início Rápido Desktop. 2015 Release 1 Xojo, Inc. Início Rápido Desktop 2015 Release 1 Xojo, Inc. Capítulo 1 Introdução Bem-vindo ao Xojo, O jeito mais fácil de criar aplicativos multi-plataforma para Desktop e Web. Seção 1 Sobre o Início Rápido para

Leia mais

Centro de Computação - Unicamp Gerência de Atendimento ao Cliente (e-mail:apoio@turing.unicamp.br) Sumário

Centro de Computação - Unicamp Gerência de Atendimento ao Cliente (e-mail:apoio@turing.unicamp.br) Sumário Sumário Conceitos Microsoft Access 97... 01 Inicialização do Access... 02 Convertendo um Banco de Dados... 03 Criando uma Tabela... 06 Estrutura da Tabela... 07 Propriedades do Campo... 08 Chave Primária...

Leia mais

Primeiro programa em Java (compilação e execução)

Primeiro programa em Java (compilação e execução) Universidade Federal do ABC Disciplina: Linguagens de Programação (BC-0501) Assunto: Primeiro programa em Java (compilação e execução) Primeiro programa em Java (compilação e execução) Introdução Este

Leia mais

Minicurso introdutório de desenvolvimento para dispositivos Android. Cristiano Costa

Minicurso introdutório de desenvolvimento para dispositivos Android. Cristiano Costa Minicurso introdutório de desenvolvimento para dispositivos Android Cristiano Costa Desenvolvimento da interface estática Sobre mim Graduando em Engenharia Eletrônica - UNIFEI Trabalhou em desenvolvimento

Leia mais

JSP - ORIENTADO A OBJETOS

JSP - ORIENTADO A OBJETOS JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...

Leia mais

Instalação do IBM SPSS Modeler Server Adapter

Instalação do IBM SPSS Modeler Server Adapter Instalação do IBM SPSS Modeler Server Adapter Índice Instalação do IBM SPSS Modeler Server Adapter............... 1 Sobre a Instalação do IBM SPSS Modeler Server Adapter................ 1 Requisitos de

Leia mais

INFORMÁTICA APLICADA AULA 02 LINGUAGEM DE PROGRAMAÇÃO C++

INFORMÁTICA APLICADA AULA 02 LINGUAGEM DE PROGRAMAÇÃO C++ UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: Bacharelado em Ciências e Tecnologia INFORMÁTICA APLICADA AULA 02 LINGUAGEM DE PROGRAMAÇÃO C++ Profª ª Danielle Casillo COMPILADORES Toda linguagem de programação

Leia mais

Introdução ao PHP. Prof. Késsia Marchi

Introduçã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 mais

Aula 01: Linguagens de Programação e Introdução ao Visual C# Express

Aula 01: Linguagens de Programação e Introdução ao Visual C# Express Aula 01: Linguagens de Programação e Introdução ao Visual C# Express EMENTA: Introdução ao Visual C#. Fundamentos da Linguagem. Estruturas de decisão e repetição. Modularização de Programas: Funções. Arrays

Leia mais

Conhecendo o Visual FoxPro 8.0 Parte 3

Conhecendo o Visual FoxPro 8.0 Parte 3 AULA Conhecendo o Visual FoxPro 8.0 Parte 3 Continuando nossa saga pelas ferramentas do Visual FoxPro 8.0, hoje vamos conhecer mais algumas. A Ferramenta Class Designer A Class Designer é a ferramenta

Leia mais

Digifort Mobile Manual Version 1.0 Rev. A

Digifort Mobile Manual Version 1.0 Rev. A Digifort Mobile Manual Version 1.0 Rev. A 2 Digifort Mobile - Versão 1.0 Índice Parte I Bem vindo ao Manual do Digifort Mobile 1.0 5 1 Screen... Shots 5 2 A quem... se destina este manual 5 3 Como utilizar...

Leia mais

PROJETO DE ACESSIBILIDADE VIRTUAL DO IFRS Manual Rápido do NVDA. Sumário

PROJETO DE ACESSIBILIDADE VIRTUAL DO IFRS Manual Rápido do NVDA. Sumário PROJETO DE ACESSIBILIDADE VIRTUAL DO IFRS Manual Rápido do NVDA Sumário O que são leitores de Tela?... 1 O NVDA - Non Visual Desktop Access... 1 Procedimentos para Download e Instalação do NVDA... 2 Iniciando

Leia mais

Java Básico. Aula 1 por Thalles Cezar

Java Básico. Aula 1 por Thalles Cezar + Java Básico Aula 1 por Thalles Cezar + Histórico Green Project (1991) Desenvolver plataforma para eletrodomésticos inteligentes Tentaram usar C++ Mas resolveram desenvolver uma linguagem própria Oak

Leia mais

Nome N Série: Ferramentas

Nome 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 mais

2 Orientação a objetos na prática

2 Orientação a objetos na prática 2 Orientação a objetos na prática Aula 04 Sumário Capítulo 1 Introdução e conceitos básicos 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2 Objetos 1.4.3 Métodos e atributos 1.4.4 Encapsulamento 1.4.5 Métodos

Leia mais

Introdução ao C# . Visão geral do.net Framework

Introdução ao C# . Visão geral do.net Framework Introdução ao C# Microsoft.NET (comumente conhecido por.net Framework - em inglês: dotnet) é uma iniciativa da empresa Microsoft, que visa uma plataforma única para desenvolvimento e execução de sistemas

Leia mais

Google Web Toolkit* Clério Damasceno Soares, Daniel da Silva Filgueiras e Fábio Figueiredo da Silva

Google Web Toolkit* Clério Damasceno Soares, Daniel da Silva Filgueiras e Fábio Figueiredo da Silva Google Web Toolkit* Clério Damasceno Soares, Daniel da Silva Filgueiras e Fábio Figueiredo da Silva Universidade Federal de Juiz de Fora UFJF-MG Campo Universitário Bairro Marmelos Juiz de Fora MG Brasil

Leia mais

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura

Curso: 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 mais

MANUAL DO NVDA Novembro de 2013

MANUAL DO NVDA Novembro de 2013 MANUAL DO NVDA Novembro de 2013 PROJETO DE ACESSIBILIDADE VIRTUAL Núcleo IFRS Manual do NVDA Sumário O que são leitores de Tela?... 3 O NVDA - Non Visual Desktop Access... 3 Procedimentos para Download

Leia mais

19/05/2009. Módulo 1

19/05/2009. Módulo 1 ASP.NET Módulo 1 Objetivo Mostrar os conceitos fundamentais da plataforma Microsoft.Net e suas ferramentas; Apresentar os conceitos fundamentais de aplicações web e seus elementos; Demonstrar de forma

Leia mais

Parte I Introdução ActionScript_30_01.indd 1 5/11/2010 08:29:29

Parte I Introdução ActionScript_30_01.indd 1 5/11/2010 08:29:29 Parte I Introdução ActionScript_30_01.indd 1 5/11/2010 08:29:29 ActionScript_30_01.indd 2 5/11/2010 08:29:34 Aprendendo uma nova linguagem... ActionScript é uma linguagem e, como um novo idioma ou a linguagem

Leia mais

Criando um script simples

Criando 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 mais

Introdução a lógica de programação. Aula 02: Linguagens de Programação e Introdução ao Visual C# Express

Introdução a lógica de programação. Aula 02: Linguagens de Programação e Introdução ao Visual C# Express Introdução a lógica de programação Aula 02: Linguagens de Programação e Introdução ao Visual C# Express Roteiro da aula Linguagem de Programação Visual C#: Introdução a C# através de comandos de entrada

Leia mais

Java Linguagem de programação

Java Linguagem de programação NASA INFORMÁTICA Pág. 1 O ambiente Java Como foi comentado anteriormente, o Java é uma linguagem independente de plataforma. Tal característica torna-se possível com o uso de um formato intermediário,

Leia mais

Introdução ao Javascript

Introdução ao Javascript Programação WEB I Introdução ao Javascript Apresentação da Disciplina,Introdução a linguagem Javascript Objetivos da Disciplina Apresentar os principais conceitos da linguagem Javascript referente à programação

Leia mais

Programação WEB. Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP

Programação WEB. Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP Programação WEB Prof. André Gustavo Duarte de Almeida andre.almeida@ifrn.edu.br docente.ifrn.edu.br/andrealmeida Aula III Introdução PHP Introdução PHP PHP=Hypertext Pre-Processor Linguagem de script open

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel A linguagem JAVA A linguagem Java O inicio: A Sun Microsystems, em 1991, deu inicio ao Green Project chefiado por James Gosling. Projeto que apostava

Leia mais

Programação de Computadores II: Java. / NT Editora. -- Brasília: 2014. 82p. : il. ; 21,0 X 29,7 cm.

Programação de Computadores II: Java. / NT Editora. -- Brasília: 2014. 82p. : il. ; 21,0 X 29,7 cm. Autor José Jesse Gonçalves Graduado em Licenciatura em Matemática pela Universidade Estadual de São Paulo - UNESP, de Presidente Prudente (1995), com especialização em Análise de Sistemas (1999) e mestrado

Leia mais

DEFINIÇÃO DE MÉTODOS

DEFINIÇÃO DE MÉTODOS Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 2 DEFINIÇÃO DE MÉTODOS Todo o processamento que um programa Java faz está definido dentro dos

Leia mais

Apostila Básica de Lógica e Programação para Game Maker por Giosepe Luiz 1

Apostila Básica de Lógica e Programação para Game Maker por Giosepe Luiz 1 Apostila Básica de Lógica e Programação para Game Maker por Giosepe Luiz 1 Sumário 1. Introdução a Lógica... 03 2. Verdadeiro e Falso... 03 3. Conectivo E e OU... 03 4. Negação... 04 5. Introdução a Programação...

Leia mais

Resumo da Matéria de Linguagem de Programação. Linguagem C

Resumo da Matéria de Linguagem de Programação. Linguagem C Resumo da Matéria de Linguagem de Programação Linguagem C Vitor H. Migoto de Gouvêa 2011 Sumário Como instalar um programa para executar o C...3 Sintaxe inicial da Linguagem de Programação C...4 Variáveis

Leia mais

O conjunto é composto por duas seções: o App Inventor Designer e o App Inventor Blocks Editor, cada uma com uma função específica.

O conjunto é composto por duas seções: o App Inventor Designer e o App Inventor Blocks Editor, cada uma com uma função específica. Google App Inventor: o criador de apps para Android para quem não sabe programar Por Alexandre Guiss Fonte: www.tecmundo.com.br/11458-google-app-inventor-o-criador-de-apps-para-android-para-quem-naosabe-programar.htm

Leia mais

http://www.activedelphi.com.br/print.php?sid=439

http://www.activedelphi.com.br/print.php?sid=439 Page 1 of 9 Criando Instaladores Com Inno Setup e ISTool Data: Monday, November 27 @ 17:30:54 Tópico Artigos A maioria dos programadores gosta de ter uma aplicação bonita e fácil de instalar, ao invés

Leia mais

INTRODUÇÃO AO DESENVOLVIMENTO DE JOGOS COM LIBGDX. Vinícius Barreto de Sousa Neto

INTRODUÇÃO AO DESENVOLVIMENTO DE JOGOS COM LIBGDX. Vinícius Barreto de Sousa Neto INTRODUÇÃO AO DESENVOLVIMENTO DE JOGOS COM LIBGDX Vinícius Barreto de Sousa Neto Libgdx é um framework multi plataforma de visualização e desenvolvimento de jogos. Atualmente ele suporta Windows, Linux,

Leia mais

Receita de bolo para instalar MinGW-GCC e Netbeans em Windows

Receita de bolo para instalar MinGW-GCC e Netbeans em Windows Receita de bolo para instalar MinGW-GCC e Netbeans em Windows Hae Yong Kim 13/08/2014 Este documento explica como fiz para instalar compilador MinGW-GCC e ambiente de desenvolvimento Netbeans em Windows.

Leia mais

Início Rápido Web. 2015 Release 1 Xojo, Inc.

Início Rápido Web. 2015 Release 1 Xojo, Inc. Início Rápido Web 2015 Release 1 Xojo, Inc. Capítulo 1 Introdução Bem-vindo ao Xojo, O jeito mais fácil de criar aplicativos multi-plataforma para Desktop e Web. Seção 1 Sobre o Início Rápido Web INICIANDO

Leia mais

Introdução a Linguagem

Introdução a Linguagem Introdução a Linguagem Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 03 Introdução a Linguagem Java 1 Conteúdo Máquina Virtual (JVM) Histórico de Java Case Sensitive Tipos Primitivos Tipo String

Leia mais

ModusOne. ModusOne Client. Version: 5.2

ModusOne. ModusOne Client. Version: 5.2 ModusOne ModusOne Client Version: 5.2 Written by: Product Documentation, R&D Date: February 2013 2012 Perceptive Software. All rights reserved ModusOne é uma marca registrada da Lexmark International Technology

Leia mais

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem.

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem. 1 - O que é JAVASCRIPT? É uma linguagem de script orientada a objetos, usada para aumentar a interatividade de páginas Web. O JavaScript foi introduzido pela Netscape em seu navegador 2.0 e posteriormente

Leia mais

Centro Federal de Educação Tecnológica da Bahia Curso Excel Avançado Índice

Centro Federal de Educação Tecnológica da Bahia Curso Excel Avançado Índice Índice Apresentação...2 Barra de Título...2 Barra de Menus...2 Barra de Ferramentas Padrão...2 Barra de Ferramentas de Formatação...3 Barra de Fórmulas e Caixa de Nomes...3 Criando um atalho de teclado

Leia mais

Características do PHP. Começando a programar

Características do PHP. Começando a programar PHP Introdução Olá pessoal. Desculpe o atraso na publicação da aula. Pude perceber pelas respostas (poucas) ao fórum que a realização da atividade do módulo I foi relativamente tranquila. Assistam ao vídeo

Leia mais

É uma das linguagens de programação que fazem parte da Plataforma.NET (em inglês: dotnet) criada pela Microsoft (Microsoft.NET).

É uma das linguagens de programação que fazem parte da Plataforma.NET (em inglês: dotnet) criada pela Microsoft (Microsoft.NET). C ( C-Sharp ) LPI 1. A Plataforma.NET (em inglês: dotnet) Visão Geral C é uma linguagem de programação. É uma das linguagens de programação que fazem parte da Plataforma.NET (em inglês: dotnet) criada

Leia mais

0DQLSXODQGR9tGHRVHP&ODULRQXVDQGRR:LQGRZV 0HGLD3OD\HU

0DQLSXODQGR9tGHRVHP&ODULRQXVDQGRR:LQGRZV 0HGLD3OD\HU 0DQLSXODQGR9tGHRVHP&ODULRQXVDQGRR:LQGRZV 0HGLD3OD\HU Quando o instalador do Windows instala este Sistema Operacional na nossa máquina, ou mesmo quando uma atualização do Windows é realizada, o Windows

Leia mais

Tutorial para acesso ao Peticionamento Eletrônico e Visualização de Processos Eletrônicos

Tutorial para acesso ao Peticionamento Eletrônico e Visualização de Processos Eletrônicos Tutorial para acesso ao Peticionamento Eletrônico e Visualização de Processos Eletrônicos Este tutorial visa preparar o computador com os softwares necessários para a utilização dos sistemas de visualização

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 07 Nomes, Vinculações, Escopos e Tipos de Dados Edirlei Soares de Lima Introdução Linguagens de programação imperativas são abstrações

Leia mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

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

Fundamentos de Programação II. Introdução à linguagem de programação C++

Fundamentos de Programação II. Introdução à linguagem de programação C++ Fundamentos de Programação II Introdução à linguagem de programação C++ Prof. Rafael Henrique D. Zottesso Material cedido por Prof. Msc. Everton Fernando Baro Agenda IDE HelloWorld Variáveis Operadores

Leia mais

EDITORA FERREIRA MP/RJ_EXERCÍCIOS 01

EDITORA 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 mais

Universidade Federal de Minas Gerais Escola de Engenharia Departamento de Engenharia Eletrônica

Universidade Federal de Minas Gerais Escola de Engenharia Departamento de Engenharia Eletrônica Universidade Federal de Minas Gerais Escola de Engenharia Departamento de Engenharia Eletrônica Disciplina: Automação em Tempo Real (ELT012) Data: 17/04/2008 Professor: Luiz T. S. Mendes Guia prático para

Leia mais

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES w w w. i d e a l o g i c. c o m. b r INDICE 1.APRESENTAÇÃO 2.ESPECIFICAÇÃO DOS RECURSOS DO SOFTWARE SAXES 2.1. Funcionalidades comuns a outras ferramentas similares 2.2. Funcionalidades próprias do software

Leia mais

Adobe Acrobat Connect Pro 7 Notas de lançamento

Adobe Acrobat Connect Pro 7 Notas de lançamento Adobe Acrobat Connect Pro 7 Notas de lançamento Bem-vindo ao Adobe Acrobat Connect Pro 7. Este documento contém informações de última hora sobre produtos que não foram mencionadas na documentação do Connect

Leia mais

ANIMAÇÕ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 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 mais

Fundamentos de Java. Prof. Marcelo Cohen. 1. Histórico

Fundamentos de Java. Prof. Marcelo Cohen. 1. Histórico Fundamentos de Java Prof. Marcelo Cohen 1. Histórico 1990 linguagem Oak; desenvolvimento de software embutido para eletrodomésticos S.O. para o controle de uma rede de eletrodomésticos o surgimento da

Leia mais