segunda-feira, 23 de agosto de 2010

Você sabe o que é "RIA"?

Bom Dia meus Caros,

Muito se fala sobre RIA - Rich Internet Aplications, mas você já sabe do que se trata?

Resolvi postar uma pesquisa feita por um aluno meu, do Curso de Sistemas de Informação do ILES/Ulbra, Marco Túlio.

Segue o artigo.

Boa Leitura!

---------


Ferramentas e Conceitos sobre RIA

Marco Túlio Oliveira Souto¹, Daniel Humberto Carrara de Azevedo²

¹Aluno do Instituo Luterano de Ensino Superior – ILES/ULBRA – Itumbiara-GO
² Professor do Instituo Luterano de Ensino Superior – ILES/ULBRA – Itumbiara-GO



Resumo

Este trabalho apresenta a atualidade do desenvolvimento Web mediante a Aplicativos Ricos para Internet (RIA – Rich Internet Applications). O artigo cita conceitos de RIA, seu funcionamento e aplicação. São citadas também algumas das ferramentas para o desenvolvimento destas aplicações. O artigo é baseado em trabalhos de autores internacionais e tem por finalidade apresentar de forma resumida o funcionamento das RIAs no contexto WEB. As ferramentas de desenvolvimento aqui apresentadas são desenvolvidas pela Microsoft, Adobe, Laszlo e Java, e suas referências podem ser encontradas nos devidos sites destas empresas.


Palavras chaves: Rich Internet Applications, Microsoft Silver Light, Adobe Flash.


1. Introdução

O uso da Internet está mudando, permitindo que usuários reconsiderem as experiências de uso da WEB. No princípio, os usuários da Internet deveriam ter um alto nível de conhecimento, principalmente em programação, porém, atualmente o perfil destes usuários mudou, e agora possuem um nível diversificado com entendimento técnico e experiências no uso da Internet. Dessa forma, o que é utilizável para um desenvolvedor, não é sempre tão utilizável para um usuário.
A Usabilidade tem se tornado o centro das concorrências entre desenvolvedores de software, e mais ainda, para os aplicativos da Internet. Segundo MULLET (2003), os modelos de networking estritamente controlados têm historicamente feito com que, proporcionar a usabilidade melhorada, se torne uma tarefa mais formidável. E complementa, “o objetivo das melhorias nas experiências na Internet é trazer os usuários o mais perto possível dos produtos ou atividades sem estar fisicamente em um evento ou em um showroom.
Rich Internet Applications (RIA), têm se tornadas altamente importantes e populares. Estasquais têm muitas das características e funcionalidades dos softwares de desktop mesmo sendo executadas on-line,.
RIAs fazem com que programas executados na Internet se tornem mais fáceis de usar e mais funcionais, e também superam os problemas tradicionais dos aplicativos WEB, como por exemplo, a baixa performance, e interatividade limitada.
Segundo David Temkin, administrador técnico chefe da plataforma Laszlo System RIA, estes programas são mais práticos de serem desenvolvidos do que as aplicações tradicionais. Existem várias aplicações na WEB altamente utilizadas hoje em dia, como o correio eletrônico (e-mail), comércio eletrônico, transações financeiras, e até mesmo a educação, não se esquecendo das músicas, vídeos, emissoras de rádio e televisão que também estão fortemente presentes na WEB.
Surgem então grandes visões sobre o futuro do uso a Internet como também grandes problemas. A migração para aplicativos na WEB mantendo os requisitos de usabilidade das aplicações cliente-servidor é uma exigência e um desafio para estes novos aplicativos. Interfaces amigáveis, segurança e eficiência são alguns requisitos destes novos aplicativos.
Segundo ROCHA, dados disponíveis mostram que em 1998 aproximadamente três bilhões de dólares deixaram de ser ganhos na WEB norte-americana por causa de design mal feito de páginas, que dificultava a compra em vez de facilitar.
O termo RIA (Rich Internet Application) usado pela Adobe ou pela Microsoft (Rich Interative Application) mantém as características das aplicações desktop porem sendo utilizadas na WEB e mantidas em servidores de internet, sem a necessidade de instalação da aplicação, porém seus plug-in deve estar disponíveis no navegador.
Este artigo prove uma breve explicação sobre os tipos de RIAs, suas características e funcionamento, e ferramenta de desenvolvimento.


2. Rich Internet Applications

Esta nova tecnologia é conhecida como RIA. Estas são tecnologias emergentes, assíncronas, possivelmente não cliente-servidor e em plug-in presentes para permitir que os aplicativos sejam executados. Segundo BOZZON (2006), consequentemente, o processo de desenvolvimento é mais complexo e introduz mais variáveis em seus processos.
BOZZON (2006) também explica que a característica comum entre as tecnologias RIA é a habilidade de alavancar a renderização e o poder de comunicação entre os mecanismos de script que requerem dados necessários a execução, tudo isso para atualizar a interface do usuário. Isso proporciona melhora significante da interface e facilita a intuitividade das aplicações melhoradas. Por exemplo, estes tipos de aplicações podem prover aos usuários um feedback de qualquer ação que eles executem.
Além disso, embora o ambiente da aplicação é frequentemente onde execuções rápidas são ressaltadas a fim de preservar a característica de real time das aplicações, a natureza assíncrona das RIAs podem também ser usada para atualizar os status dos processos longos que estão sendo executados.
Devido ao fato de que as aplicações apenas enviam dados pertinentes ao servidor e apenas recebem pequenas quantidades de informações que são trocadas, o volume de trafico na rede que está sendo gerado é fortemente reduzido. A aplicação continua comunicando-se com o servidor, porém de forma fracionada, diferente das páginas tradicionais.
Segundo Mullet, esta característica proporciona pequenas atualizações incrementadas que refletem as ações dos usuários, chegando a uma interface resultante muito fina e permitindo interfaces com única página para as aplicações. Isso sugere que até mesmo os usuários com baixa largura de banda (exemplo, conexão discada) sejam capazes de aproveitar ao máximo as grandes riquezas destas aplicações.


3. Tipos de RIA

RIAs podem ser organizadas em três tipos diferentes conforme suas funções, como são desenvolvidas e implantadas.

3.1. Baseadas em Plug-in

O primeiro tipo de RIA são as baseadas em plug-in, que envolve a criação de aplicações em uma plataforma dedicada, ou em um ambiente dedicado, e então implantando-as tanto em soluções embarcadas ou em aplicações autônomas, executadas pelo navegador. Um exemplo de característica embarcada é a tecnologia do Adobe Flex2, o qual usa uma linguagem de marcação XML, chamada de MXML, para declarativamente criar Flash baseados em aplicações. Estes podem então ser incluídos à páginas HTML usando padrões de identificação HTML.
Um exemplo de aplicação autônoma é o Java Web Start, que utiliza o Java Network Launch Protocol (JNLP) para executar uma definida aplicação Java no navegador. Fazendo isso através do navegador, desenvolvedores podem assegurar que a versão especificada esteja sempre disponível.
A grande vantagem de uma aplicação baseada em plug-in é a simplicidade para ser desenvolvida. Normalmente referida como “Sandbox”, e permite que os desenvolvedores tenham uma estável e conhecida plataforma de desenvolvimento, e provê seguranças que serão executadas da mesma forma entre as variadas formas de plataformas, considerando que os plug-in estejam disponíveis.
De fato, aplicações Java estão entre as primeiras RIA já criadas para WEB. Outros exemplos de ferramentas para desenvolvimento de RIA com suporte baseado em plug-in incluem o Microsoft Windows Smart Client e o Open Laszlo.



3.2. Baseadas em Script

O segundo tipo de RIA é o mais conhecido. Criadas com a tecnologia Ajax são referidas como RIA Baseadas em Script. Estas aplicações empregam uma combinação de tecnologias para alcançar seus resultados, tipicamente incluindo XHTML/HTML, CSS, DOM, e JavaScript. A idéia é usar CSS e HTML para estilizar e apresentar a interface, usar JavaScript para fazer requisições assíncronas ao servidor, e finalmente usar DOM Scripting para realizar rederizações “on-the-fly”.
Esta estratégia dá à aplicação um rastro mínimo e não requer softwares para ser pré-instalada. Contudo, algumas das tecnologias têm problemas de compatibilidade documentados, referente a plataformas e navegadores. Por causa das incompatibilidades, os desenvolvedores devem ter cautela a fim de prevenir instancias de recursos “mortos”. A melhor técnica de sucesso para o desenvolvimento de aplicações em estilo Ajax é assegurar que o navegador dos usuários não tenham acesso ao JavaScript.
Uma aplicação é primeiramente desenvolvida usando modelos tradicionais para aplicações normais de Internet. Então o JavaScript é utilizado para conferir sua própria existência e modificar componentes das páginas, se necessário. Isso é particularmente um processo longo e difícil que requer profundo conhecimento de incompatibilidades que existem, e como dar suporte aos vários processos que existem nos navegadores mais antigos.
Por causa desta complexidade, uma variedade de frameworks têm sido criados para aliviar as questões de compatibilidade com navegadores. Dois dos mais populares são Prototype e o Dojo. Frameworks são conjunto de instruções reunidas em grupos denominados “bibliotecas”.


3.3. Baseadas em Navegadores de WEB

O terceiro e último tipo de RIA são as Baseadas em Navegadores, que geralmente incorporam uma linguagem de interface do usuário, construídas em XML, que permite aos desenvolvedores especificarem os elementos necessários e suas interações em um formato declarativo. Um exemplo é a linguagem XUL da Mozilla Foundation.
A principal vantagem desta categoria é a base de normas existentes no XML, apoiadas pelo W3C, como CSS1 e CSS2, DOM nível 1 e 2, e o JavaScript 1.5 + XUL, que são desenhados para serem independentes de plataformas, assim permitem a portabilidade entre estas plataformas.


4. Funcionalidade


Figura 1 – Tradicional v. Rich Internet Application. Fonte: Arquivo próprio.

Em toda RIA, há uma sequência consistente de eventos conduzidos pelas chamadas assíncronas e a recuperação de dados, conforme mostra a imagem 1. Conforme Heilmann (2006), mesmo no modelo de comunicação Ajax, o navegador ainda carrega a interface normalmente. Durante essa etapa, o JavaScript é usado para habilitar as funcionalidades requeridas pela página.
Não há nenhum tipo de detecção envolvida, se o JavaScript não estiver disponível, simplesmente nada é executado; a página com a suposição de que o JavaScript está ativo, porém nenhuma modificação pode ser feita nesta página. Por outro lado, se o JavaScript estiver disponível, este é usado para adicionar os manipuladores dos eventos e configura os vários métodos para facilitar o processo Ajax.
No Estágio Inicial, é criado um objeto chamado XML http Request, com função de dar suporte ao envio e o recebimento de dados entre o usuário e o servidor. A combinação de funções anônimas e nomeadas são registradas para os eventos de enviar dados e manipular solicitações de retorno. Conforme Heilmann (2006), quando uma solicitação de retorno é recebida, o JavaScript é usado para manipular o Documento Object Model (DOM), atualizando a interface do usuário para refletir o resultado da ação.
Ao criar RIA, um dos principais objetivos é manter a sincronização de dados, e permitir a interface do usuário ser atualizada em resposta as ações do usuário. Por exemplo, se o usuário deletar um determinado item de uma lista, este item deve visivelmente desaparecer da tela. Esta funcionalidade deve ser reforçada como um efeito de enfraquecimento, criando uma impressão ao usuário que o item está sendo deletado em tempo real.
No entanto, alguns usuários não notam quando uma atualização ocorreu. Sendo assim, as RIA devem também prover alguma forma de notificar quando uma tarefa ou processo foi completado. Os usuários podem também ser direcionados para um conteúdo mais importante, ou apresentar notas coloridas ou ainda sugestões visuais.
Usuários são sensíveis a respostas relativas e perceptíveis. Os processos não devem demorar tanto quanto os usuários podem aguardar enquanto são completados. Uma das principais razões do uso de RIA é para criar uma impressão ao usuário de que as tarefas estão sendo realizadas no instante em que a requisição do usuário é iniciada.
Uma execução longa de um processo facilmente frustrará o usuário se ele estiver aguardando uma resposta rápida. Neste caso, a RIA deve prover um meio de mostrar o progresso da operação, e indicar aproximadamente quando tempo irá demorar. As RIA devem suportar desfazer ou refazer as tarefas. Quando se pretende emular uma aplicação desktop, é necessário prover um tipo de componente e funcionalidade que os usuários possam se familiarizar e entender de forma fácil.


5. Modelo Para Construção de Aplicação

Aplicações que serão desenvolvidas para serem usadas na WEB terão que observar os princípios da usabilidade das aplicações desktop, tais como, visibilidade, feedback, facilidade de aprendizado, eficiência, satisfação subjetiva, facilidade de navegação, simplicidade, tempo suportável e foco no usuário.

5.1. Microsoft SilverLight

É um projeto desenvolvido pela Microsoft para a construção RIA para uso na WEB. Suporta Ajax, Python, Ruby e as linguagens .Net, Visual Basic e C#. O Microsoft SilverLigth é composto por um run time (programa necessário para executar aplicativos da Microsoft), um SDK (Software Development Kit ou pacote para desenvolvimento dos aplicativos) e ferramentas de desenvolvimento e design. A linguagem utilizada para o design é, segundo a Microsoft, a mesma utilizada para o desenvolvimento da interface do Windows Vista, o XAML.

5.2. Adobe Flex 2

O Adobe Flex 2 é um pacote de ferramentas e tecnologias para a construção de RIA, é desenvolvido pela Adobe e está composto pelo Adobe Flex 2 SDK, Builder 2, Data Services 2, Charting 2.
O Adobe Flex 2 SDK é a base da tecnologia e consiste de um conjunto de classes (framework), compilador, debugger, duas linguagens de programação MXML e ActionScript.

5.3. Laszlo

É um projeto chamado OpenLaszlo, pois possui código aberto, porém é distribuído sob a proteção de uma OSI de autoria da IBM. É composto pela linguagem LZX, um servidor, um compilador e run times. O OpenLaszlo Server é um servidor implementado com um servlet Java e roda dentro de um servlet container, ou um servidor J2EE compatível e é independente de sistemas operacionais.

5.4. Java Web Start

É um sistema desenvolvido pela Sun Microsystens para distribuir aplicações J2SE pela internet. Essas aplicações usam em sua interface objetos da biblioteca Swing ou AWT. São componentes desenvolvidos para aplicações desktop. As aplicações distribuídas via Java Web Start são na verdade aplicações com interface de desktop e estão associadas a um navegador WEB.
Assim que o usuário acessa uma página que contenha um link para um tipo de arquivo JNLP, o navegador lança o Java Web Start, que por sua vez transfere a aplicação pela rede, coloca na memória e executa a aplicação.


6. Conclusões

Com esse trabalho foi possível obter conhecimento sobre os novos conceitos que abordam a WEB e seus aplicativos. Pode-se concluir que os Aplicativos Ricos para Internet, desenvolvidos por ferramentas específicas, podem mudar o conceito de aplicações WEB, possibilitando a estas possuírem características de programas desktop.
Conforme apresentado no trabalho é possível diferenciar os modelos de sites e aplicativos WEB atuais com os novos modelos que estão a surgir.
Possibilitou também conhecer as novas ferramentas que proporcionam a criação das RIAs.


7. Referências

BOZZON, A, Comai, S. Fraternali, P. and Carughi, G. Conceptual Modeling and Code Generation for Rich Internet Applicationss. ACM International Conference Proceedings Series (2006).

HEILMANN, Christian. Beginning JavaScript with DOM Scripting an Ajax. New York: Apress Publishing, 2006.

MULLET, KEVIN. The Essence of Effective Rich Internet Applications. Macromédia Whitepapers, 2003.

ROCHA, H. V.; BARANAUSKAS, M. C. Design e Avaliação de Interfaces Humano-Computador. Núcleo de Informática Aplicada à Educação Unicamp. Disponível em: < http://pan.nied.unicamp.br/>. Acesso em abril 2010.

Smart Client Software Factory - http://msdn.microsoft.com/en-us/library/aa480482.aspx

Open Laszlo - http://www.openlaszlo.org/

Mozilla Foundation - http://www.mozilla.org/