desenvolvimento ria com java
DESCRIPTION
Palestra apresentada na Semana de Engenharia de Software do Instituto Infnet.TRANSCRIPT
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
ApresentaçõesApresentações
• Armênio Cardoso.Armênio Cardoso.– Consultor e Arquiteto de Sistemas.Consultor e Arquiteto de Sistemas.– Professor das Formações Java do Instituto Infnet.Professor das Formações Java do Instituto Infnet.
• Tópicos da Palestra:Tópicos da Palestra:– Antecedentes.Antecedentes.– O Que é RIA?O Que é RIA?– Experiências.Experiências.– Perspectivas.Perspectivas.– Conclusões.Conclusões.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
AntecedentesAntecedentes
• Paradigmas Pré-web – evolução:Paradigmas Pré-web – evolução:
Redes deRedes deMicros eMicros e
EmuladoresEmuladores
7070 8080 9090
MainframeMainframe Cliente-ServidorCliente-Servidor
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
AntecedentesAntecedentes
• Paradigmas Pré-web - década de 90:Paradigmas Pré-web - década de 90:– Visual Basic.Visual Basic.– Delphi.Delphi.– Foxpro.Foxpro.– Oracle Forms.Oracle Forms.– PowerBuilder.PowerBuilder.– Centura.Centura.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
AntecedentesAntecedentes
• Paradigmas Pré-web - características:Paradigmas Pré-web - características:– Aplicações gráficas com componentes visuais Aplicações gráficas com componentes visuais
complexos “descendentes” do sistema complexos “descendentes” do sistema operacional.operacional.
– Fat-client: necessidade de instalação do módulo Fat-client: necessidade de instalação do módulo cliente em cada máquina.cliente em cada máquina.
– Base de dados centralizada.Base de dados centralizada.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
AntecedentesAntecedentes
• Nasce a Web.Nasce a Web.– Thin-client: aplicações usando HTML e alguma Thin-client: aplicações usando HTML e alguma
linguagem “embutida” no servidor web.linguagem “embutida” no servidor web.• Python (1991).Python (1991).• Ruby (1993).Ruby (1993).• Lua (1993).Lua (1993).• PHP (1995).PHP (1995).• Coldfusion (1995).Coldfusion (1995).• ASP (1996).ASP (1996).
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
AntecedentesAntecedentes
• HTML serve para construir telas de HTML serve para construir telas de aplicações?aplicações?
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
O Que é RIA?O Que é RIA?
• Rich Internet Application.Rich Internet Application.– São Aplicações Web que têm características e São Aplicações Web que têm características e
funcionalidades de softwares tradicionais do tipo funcionalidades de softwares tradicionais do tipo Desktop. Desktop.
– O termo RIA foi introduzido pela Macromedia em O termo RIA foi introduzido pela Macromedia em março de março de 20022002, embora o seu conceito já tenha , embora o seu conceito já tenha tido outras denominações anteriores.tido outras denominações anteriores.
– Remote Scripting, pela Microsoft, em Remote Scripting, pela Microsoft, em 1998.1998.– X Internet, pela Forrester Research em Outubro X Internet, pela Forrester Research em Outubro
de de 20002000..
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
O Que é RIA?O Que é RIA?
– RIA típicos transferem todo o processamento da RIA típicos transferem todo o processamento da interface para o navegador da internet, mantendo a interface para o navegador da internet, mantendo a maior parte dos dados no servidor de aplicação.maior parte dos dados no servidor de aplicação.
XX– Aplicações web tradicionais centralizam todo seu código Aplicações web tradicionais centralizam todo seu código
em torno de uma arquitetura cliente-servidor e um thin-em torno de uma arquitetura cliente-servidor e um thin-client baseado em telas HTML. client baseado em telas HTML.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
ExperiênciasExperiências
• Várias experiências foram feitas entre 1999 Várias experiências foram feitas entre 1999 e 2010:e 2010:– Applets Java.Applets Java.– YUI + DWR.YUI + DWR.– JQuery + DWR.JQuery + DWR.– JavaFX, GWT, Vaadin...JavaFX, GWT, Vaadin...
• Várias lições foram tiradas dessas Várias lições foram tiradas dessas experiências... experiências...
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
ExperiênciasExperiências
• Applets Java.Applets Java.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
ExperiênciasExperiências
• Lições Aprendidas:Lições Aprendidas:– Bom conjunto de componentes visuais.Bom conjunto de componentes visuais.
• AWT é muito básico, mas o Swing apresenta-se como uma AWT é muito básico, mas o Swing apresenta-se como uma biblioteca gráfica completa, com todos os componentes biblioteca gráfica completa, com todos os componentes desejáveis.desejáveis.
– Carga “Pesada” = demora para carregar.Carga “Pesada” = demora para carregar.– Depende de runtime.Depende de runtime.– Poucos editores visuais = trabalhoso.Poucos editores visuais = trabalhoso.– Excelente opção ainda hoje para problemas especiais:Excelente opção ainda hoje para problemas especiais:
• Impressão de código de barras.Impressão de código de barras.• Interface com webcam.Interface com webcam.• Assinatura Digital de Documentos.Assinatura Digital de Documentos.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
ExperiênciasExperiências
• DWR – Direct Web Remoting.DWR – Direct Web Remoting.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
ExperiênciasExperiências
• Arquivo XML para mapear as classes Java em objetos Arquivo XML para mapear as classes Java em objetos
JavaScriptJavaScript..
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
ExperiênciasExperiências
• Resultado: acesso remoto à classe Java através de objeto Resultado: acesso remoto à classe Java através de objeto JavaScript.JavaScript.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
ExperiênciasExperiências
• Problema encontrado: biblioteca de componentes visuais.Problema encontrado: biblioteca de componentes visuais.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
ExperiênciasExperiências
• Solução encontrada – Yahoo! User Interface Library.Solução encontrada – Yahoo! User Interface Library.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
ExperiênciasExperiências
• Yahoo! DataTable.Yahoo! DataTable.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
ExperiênciasExperiências
• Lições Aprendidas:Lições Aprendidas:– DWR – Framework altamente estável e DWR – Framework altamente estável e
funcional.funcional.– YUI – totalmente baseado em JavaScript = YUI – totalmente baseado em JavaScript =
muito trabalhoso, depuração difícil, editor muito trabalhoso, depuração difícil, editor incipiente.incipiente.
– Usuário Final muito feliz.Usuário Final muito feliz.– Equipe de Desenvolvimento exausta.Equipe de Desenvolvimento exausta.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
ExperiênciasExperiências
• JQuery – “projetado para mudar a forma JQuery – “projetado para mudar a forma com que você escreve JavaScript”.com que você escreve JavaScript”.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
ExperiênciasExperiências
• Lições Aprendidas:Lições Aprendidas:– JQuery realmente simplificou a programação JQuery realmente simplificou a programação
com JavaScript.com JavaScript.– Novos editores melhoraram a forma de codificar.Novos editores melhoraram a forma de codificar.– Firefox com Firebug: depuração mais fácil.Firefox com Firebug: depuração mais fácil.– Construção de aplicações híbridas = Struts + Construção de aplicações híbridas = Struts +
DWR + JQuery.DWR + JQuery.– Componentes visuais “espalhados” = não há um Componentes visuais “espalhados” = não há um
padrão.padrão.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
PerspectivasPerspectivas
• Quero o meu VB de volta!Quero o meu VB de volta!– Devido ao amadurecimento das técnicas de Devido ao amadurecimento das técnicas de
programação web, verifica-se uma enorme programação web, verifica-se uma enorme distância entre os “velhos” aplicativos gráficos e distância entre os “velhos” aplicativos gráficos e o que está se fazendo hoje em dia.o que está se fazendo hoje em dia.
– Busca-se uma solução “integrada” que combine Busca-se uma solução “integrada” que combine um bom conjunto de componentes visuais com um bom conjunto de componentes visuais com a chamada remota de classes Java.a chamada remota de classes Java.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
PerspectivasPerspectivas
• Pontos a se Considerar:Pontos a se Considerar:– Onipresença do JavaScript nos browsers.Onipresença do JavaScript nos browsers.– Plugin or not Plugin?Plugin or not Plugin?
• Applets Java.Applets Java.• JavaFx.JavaFx.• Adobe Flex.Adobe Flex.
– Produtividade na construção de telas.Produtividade na construção de telas.– Conjunto de componentes visuais completo.Conjunto de componentes visuais completo.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
PerspectivasPerspectivas
• Duas linhas se apresentam:Duas linhas se apresentam:– Plataformas que se baseiam em plugins e Java Plataformas que se baseiam em plugins e Java
no Servidor.no Servidor.• Applets são muito “pesados”.Applets são muito “pesados”.• Adobe Flex usa uma linguagem própria.Adobe Flex usa uma linguagem própria.• JavaFx tem uma proposta parecida com o Flex.JavaFx tem uma proposta parecida com o Flex.
– Plataformas que se baseiam em HTML e Plataformas que se baseiam em HTML e JavaScript e Java no Servidor.JavaScript e Java no Servidor.• A grande maioria dos browsers rodam JavaScript.A grande maioria dos browsers rodam JavaScript.• O desenvolvedor programa as telas em Java!O desenvolvedor programa as telas em Java!
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
PerspectivasPerspectivas
• O desenvolvedor programa as telas em O desenvolvedor programa as telas em Java!Java!– Client-centric Ajax Frameworks:Client-centric Ajax Frameworks:
• Google Web Toolkit.Google Web Toolkit.• SmartGWT.SmartGWT.
– Server-centric Ajax Frameworks:Server-centric Ajax Frameworks:• ZK Direct RIA.ZK Direct RIA.• Vaadin.Vaadin.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
PerspectivasPerspectivas
• Server X Client Centric Frameworks:Server X Client Centric Frameworks:– Server-centric: estado e lógica de controle ficam Server-centric: estado e lógica de controle ficam
no servidor – thin-client (189Kbytes).no servidor – thin-client (189Kbytes).
– Client-centric: compila código Java em Client-centric: compila código Java em JavaScript, criando um fat-client (825Kbytes >).JavaScript, criando um fat-client (825Kbytes >).
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
PerspectivasPerspectivas
• Vaadin.Vaadin.– O elemento central do Vaadin é a biblioteca O elemento central do Vaadin é a biblioteca
Java que é projetada para facilitar a criação e Java que é projetada para facilitar a criação e manutenção de interfaces web de alta manutenção de interfaces web de alta qualidade. qualidade.
– Todo o desenvolvimento se dá em Java puro = a Todo o desenvolvimento se dá em Java puro = a depuração é feita no servidor de aplicação e o depuração é feita no servidor de aplicação e o código cliente é mínimo.código cliente é mínimo.
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
PerspectivasPerspectivas
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
ConclusõesConclusões
• Resumo:Resumo: