JavaFX Noite

O JavaFX e a criação de RIA

JavaFX_IconeNovo

Introdução

A crescente expectativa na satisfação das necessidades de consumo tornou o computador, representado nas soluções propostas pela internet, como o trampolim do desenvolvimento tecnológico mundial, nas relações existentes e definindo os termos da globalização. Por conseguinte, estes itens fizeram com que este segmento fosse obrigado a se moldar à dinâmica da vida moderna. Agora a necessidade de uma internet mais interativa e com melhor tempo de resposta se torna algo exigível, em face, por exemplo, às relações comerciais entre os países, ou até a relação de amizade entre pessoas que moram em pólos diferentes do planeta.

JavaFX_Xicara

Esta alavanca foi puxada há alguns anos e os profissionais da área de TI tiveram que criar ferramentas que tornassem este novo modelo possível.

Inicialmente, as tentativas de expansão do modelo síncrono de pedido e resposta das aplicações web passaram pelas tecnologias conhecidas como iframes e Java applets. Estas não se mostraram suficientes para trazer a interatividade desejada e novas tecnologias tiveram de ser criadas. Hoje, experimentamos o que está sendo comercialmente chamado de “Web 2.0”, ou seja, a web como plataforma de serviços e com a colaboração do usuário. Essa nova web baseia-se essencialmente num modelo assíncrono de pedido e resposta, o que a traz mais próxima da interatividade das interfaces desktop.

webDoisPontoZero

Esta nova corrente traz novas oportunidades para os usuários desenvolverem atividades baseadas nas ferramentas disponíveis, através de um dispositivo abrangente e sem fronteiras e que estes dados estejam guardados, intactos e disponíveis para acesso a qualquer momento em qualquer lugar, inferindo em continuidade e manutenção.

web_Evolucao

A tendência é fazer com que os usuários se libertem do conceito de computador único, estático e limitado, com dados e informações gravados em unidades de armazenamento, ou ainda com preocupação de gravar num CD ou transferir por e-mail, para que confluam para o armazenamento on line, onde seja possível o acesso de casa, do escritório, de uma lan house ou aparelho móvel, transferindo a funcionalidade comum da máquina como acontece nos desktop, no seu uso com todos os programas que rodam localmente, para a rede e sem prejuízo de desempenho ou retorno no que é pedido.

Aplicações web tradicionais centralizam todo seu código em torno de uma arquitetura de Cliente-servidor. Todo o processamento é realizado no servidor, e o cliente apenas utiliza uma tela estática (neste caso em HTML). A grande desvantagem deste sistema é que a interação com a aplicação deve ser feita através do servidor, onde os dados são enviados a ele, são respondidos e a página é recarregada no cliente como resposta. Utilizando uma tecnologia uma aplicação-cliente que possa executar instruções no computador do usuário, RIAs podem reduzir significativamente o número de sincronizações e aumentar a interatividade com o cliente.

AplicacaoDesktop

Mas o que é RIA?

Abreviação de Rich Internet Applications ou Aplicações Ricas para Internet. É uma aplicação que distribui o processamento de informações entre o servidor (trabalho mais pesado) e os navegadores dos clientes (trabalho mais leve), provendo uma nova classe de websites interativos com interface gráfica e funcionalidades de aplicações desktop.

AplicacaoRIA

Características:

• roda em um navegador e não requer a instalação de programas adicionais;
• roda localmente em um ambiente seguro chamado sandbox (Esse é o conceito de segurança do Java centrado na sandbox: Uma aplicação, seja qual for o ambiente, tem um Set de permissões. Cada ambiente tem a sua “caixa de areia” específica, com suas permissões).

As RIAs concentram-se essencialmente na camada de apresentação, oferecendo suporte para comunicação com a camada imediatamente inferior (a camada de negócio).

Todos as RIAs introduzem uma camada intermediária de código, chamada de client engine, entre o usuário e o servidor. Este client engine é normalmente carregado no início da aplicação, e pode ser acrescido de outras atualizações do código que são baixadas enquanto a aplicação ainda está rodando. O client engine atua como uma extensão do navegador, e é responsável pela renderização da interface de aplicação do usuário e a comunição com o servidor.

O termo RIA foi usado pela primeira vez em 2001 pela Macromedia (recentemente adquirida pela Adobe Systems).

GraficoInterseccaoRIA

Vantagens na utilização de RIAs

• Riqueza. Há a possibilidade de oferecer diversas funcionalidades à interface do usuário, que não podem ser obtidas com o html existente nas aplicações web padrão, como um simples arrastar-soltar.

• Interatividade próxima a do desktop. Como a interface responde melhor às solicitações do usuário do que em aplicações web padrão, tendo em vista a constante interação com um servidor remoto, o usuário fica com a sensação de estar utilizando uma aplicação desktop.

• Equilibrio entre Cliente/Servidor. O processamento de informações não é realizado pelo servidor e posteriormente enviado para o cliente. Há uma divisão da carga de processamento, possibilitando inclusive que o servidor possa atender a requisições de outros clientes ao mesmo tempo.

• Comunicação assíncrona entre o client engine e o servidor. Uma ação na interface realizada pelo usuário, como um simples clique em um botão, pode não necessitar esperar por uma resposta do servidor, tendo em vista que a partir de uma solicitação, alguns dados já são antecipadamente carregados no cliente, de modo a acelerar uma posterior resposta.

• Otimização da rede. Devido ao client engine possuir melhor capacidade, que um navegador web padrão, de decidir quais os dados que precisam ser trocados com os servidores, há uma redução do tráfego na rede, visto que alguns dados já são previamente carregados no cliente.

Desvantagens na utilização de RIAs

• Execução no ambiente Sandbox. O fato das RIAs serem executados dentro do Sandbox, restringe a utilização de recursos do cliente. Se as configurações de acesso aos recursos estão incorretas, os RIAs podem falhar ou não funcionar corretamente.

• Scripts desabilitados. Se o usuário desativar a execução de scripts em seu navegador, a RIA poderá não funcionar corretamente, na maior parte das vezes.

• Velocidade de processamento no cliente. Para que as aplicações do lado do cliente tenham independência de plataforma, muitas vezes elas são escritas em linguagens interpretadas, como por exemplo JavaScript, que reduzem sensivelmente a velocidade de processamento no cliente.

• Tempo de carregamento da aplicação. Embora as aplicações não necessitem de serem instaladas, toda a inteligência do lado cliente (ou client engine) deve ser baixada do servidor para o cliente. Dependendo do tamanho ou do tipo de solicitação, o carregamento do script pode ser muito longo.

• Perda de visibilidade por Sites de Busca. Sites de busca podem não serem capazes de indexar os textos de um RIA.

• Dependência de uma conexão com a Internet. Enquanto numa aplicação desktop os usuários não estão obrigados a se conectarem à internet para utilizá-la, numa RIA a conexão à rede é imprescindível.

Tecnologias RIA

Dentre as tecnologias RIA, destacam-se: AJAX, Flash, Silverlight, Flex e JavaFX.

AJAX (Asynchronous Javascript And XML) está mais próximo de um conceito do que uma tecnologia em si. Ele propõe uma forma de trazer mais interatividade com o usuário através de controles de interface já existentes na linguagem HTML. Suas principais características são a comunicação assíncrona entre a interface cliente e o servidor de aplicações e o fluxo de processamento, baseado nos dados trafegados na rede. A desvantagem do AJAX está na dependência dos navegadores e na baixa produtividade de codificação, o que está sendo minimizado com o aparecimento de API's e frameworks com suporte a essa tecnologia.

Flash é uma tecnologia desenvolvida pela Macromedia (recentemente adquirida pela Adobe Systems). Ele destaca-se principalmente pela sua capacidade gráfica para melhorar a interatividade dos controles de interface com o usuário. Uma desvantagem é que o usuário precisa ter instalado em seu browser um plug-in para conseguir executar a interface.

As vantagens do Flash é que ele roda em várias plataformas, porém tem algum problemas.

Silverlight é uma tecnologia desenvolvida recentemente pela Microsoft, para concorrer com o Flash. É focado basicamente em transmissão multimídia e pode utilizar diversas linguagens de apoio à codificação como .NET e Javascript. O Silverlight vem com a vantagem de se poder usar qualquer linguagem disponível no framework .NET. A desvantagem é que o Silverlight não está disponível para Linux.

Flex é outra tecnologia recentemente lançada pela Adobe, no intuito de resolver alguns dos problemas encontrados no Flash. O código gerado pela tecnologia Flex é compilado em formato SWF e interpretado em qualquer browser que já possua o plug-in Flash Player instalado.

Por fim, para não ficar atrás na concorrência das tecnologias RIA, a empresa americana Sun lançou a sua tecnologia chamada de JavaFX.

JavaFX

Marca_SUN
MascoteJavaFX

Desenhada para ser uma família de produtos, lançando inicialmente o JavFX Script, similar ao Flex e baseada na linguagem Java, e o JavaFX móbile, voltada para dispositivos móveis e similar à API gráfica Swing da própria plataforma Java. O código implementado em JavaFX é compilado em bytecodes Java e interpretado em qualquer Java Virtual Machine (JVM). Por ser baseada na plataforma Java, essa tecnologia compatibiliza-se com diversos equipamentos hoje no mercado que possuem internamente suporte ao Java.

O JavaFx é um pouco diferente, para começar da forma que ele roda. Como um sistema web ele deveria rodar diretamente no browser como um site, porém, ele roda como se fosse um programa, faz um download normal e executa fora do navegador. Como as outras aplicações desenvolvidas como Java, este também não é tão leve, o que pode dificultar também em um primeiro momento. Ele também precisa do seu plugin, nesse caso o JVM (Java Virtual Machine).

MascoteJavaFX_Nome

A grande vantagem é o que o JavaFX é open-source e existe uma grande integração com outros aplicativos da linha como o J2ME, J2EE e J2SE, o que facilitaria o trabalho e distribuição do sistema, além de aproveitamente de código.

O JAVAFX Script permitirá que os programadores desenvolvam mais rapidamente e mais facilmente aplicações RIA e novos serviços que podem ser usados virtualmente em qualquer dispositivo – dos navegadores nos desktops, aos celulares, nos set-top boxes e nos DVDs baseados em Blu-ray – com segurança e sem a necessidade de uma instalação local.

A tecnologia Java já domina o desenvolvimento de aplicações nos smartphones e você começa a entender porque a Sun está apostando no JavaFX como uma maneira de expandir os limites do Java.
Porém, o JavaFX é GPL, isso já melhora, pois software livres podem ser implementados e portados com mais facilidade.

JavaFX_Variaveis

Ferramentas de desenvolvimento

NetBeans;
Eclipse;
JavaFX Pad;
JavaFXBuilder;

Instalação no NetBeans

Pré-Requisitos:

• NetBeans 5.5 ou Superior;
• JDK 5.0 ou superior – J2SE;
• Configuração do plugin através do menu Tools conforme figura abaixo:

ImagemCodigo1

Selecionar os arquivos:

• JavaFXScript;
• JavaFXWeather Sample ;

Click em Install e Next duas vezes, será necessário que o computador esteja conectado para que possa ser feita as atualizações;

Terminado o download, reinicie o NetBeans.

Exemplo de código em JavaFX:

• Menu File
• New Project

Na próxima janela selecione em categories JavaFX – Projects JavaFX Script Application;

ImagemCodigo2

• Next;
• Informe o nome desejado para o seu projeto finalizando essa primeira etapa;

Digite o seguinte código:

import javafx.ui.*;
Frame{
title:"meu programa em Java FX"
width:1000
height:500
content:Label{
text:"Ola mundo"
}
visible:true
}

Seu programa deve aparecer dessa maneira:

ImagemCodigo3

Relação com a disciplina compiladores:

Java é uma linguagem de programação que concentra fortemente o conceito de portabilidade e não-dependência de uma plataforma de máquina específica. Sendo assim, o compilador Java traduz o código fonte da linguagem para um código pré-compilado - poderíamos pensar num front end, que é o código compreensível pela JVM. Este código (byte codes) poderá manejar a máquina virtual de Java (JVM – Java Virtual Machine) e traduzir para a linguagem da plataforma em que o programa está sendo rodado. Cada sistema operativo dispõe de uma Maquina Virtual de Java que pode interpretar os Byte Codes e transformá-los em sentenças no sistema em questão.

Há uma inclinação mais significativa da tecnologia FX para a implementação de interface gráfica do usuário (GUI) de forma simples e limpa, facilitando o trabalho do programador.

O passo seguinte é feito pelos navegadores que dão suporte a Java, traduzindo o programa. Neste caso fazendo um trabalho de interpretação – um dos processos de tradução que não é considerado compilação, traduzindo e executando o código ao carregar as páginas na rede, processo este que vimos acima está sendo descentralizado pelas aplicações ricas que assumem ou este ou parte deste processamento com a nova tecnologia.

3java

Referências:

http://java.sun.com/developer/technicalArticles/scripting/javafx/ria_1/
http://www.henry.eti.br/pagina.php?IdPagina=258
http://pt.wikipedia.org/wiki/RIA
http://pt.wikipedia.org/wiki/Internet_rica#JavaFX
http://www.garotosdeweb.com/index.php/javafx/primeiras-impressoes-do-javafx/
http://idgnow.uol.com.br/computacao_corporativa/voce/idgcoluna.2007-09-19.0923553398/
http://br-net.org/post/flash-silverlight-e-javafx
http://ceticocritico.blogspot.com/2007_07_01_archive.html
http://riacenter.com/blog/?m=200612
http://www.simonwhatley.co.uk/rich-internet-applications-a-background
http://web2.0br.com.br/conceito-web20/
http://wnews.uol.com.br/site/noticias/materia_especial.php?id_secao=17&id_conteudo=352
http://marciorosa.com/rich-internet-applications/

Pesquisa realizada pelos estudantes

• Daniel Bispo
• José Peçanha
• Paulo Reis

Disciplina Compiladores
Turma: T05 - Noturno – 2008.1
Universidade Católica do Salvador

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License