desenvolvimento ria com java

29
Desenvolvimento RIA com Desenvolvimento RIA com Java Java

Upload: armenio-cardoso

Post on 19-Nov-2014

1.135 views

Category:

Technology


3 download

DESCRIPTION

Palestra apresentada na Semana de Engenharia de Software do Instituto Infnet.

TRANSCRIPT

Page 1: Desenvolvimento RIA com Java

Desenvolvimento RIA com JavaDesenvolvimento RIA com Java

Page 2: Desenvolvimento 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.

Page 3: Desenvolvimento RIA com Java

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

Page 4: Desenvolvimento RIA com Java

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.

Page 5: Desenvolvimento RIA com Java

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.

Page 6: Desenvolvimento RIA com Java

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).

Page 7: Desenvolvimento RIA com Java

Desenvolvimento RIA com JavaDesenvolvimento RIA com Java

AntecedentesAntecedentes

• HTML serve para construir telas de HTML serve para construir telas de aplicações?aplicações?

Page 8: Desenvolvimento RIA com Java

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

Page 9: Desenvolvimento RIA com Java

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.

Page 10: Desenvolvimento RIA com Java

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

Page 11: Desenvolvimento RIA com Java

Desenvolvimento RIA com JavaDesenvolvimento RIA com Java

ExperiênciasExperiências

• Applets Java.Applets Java.

Page 12: Desenvolvimento RIA com 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.

Page 13: Desenvolvimento RIA com Java

Desenvolvimento RIA com JavaDesenvolvimento RIA com Java

ExperiênciasExperiências

• DWR – Direct Web Remoting.DWR – Direct Web Remoting.

Page 14: Desenvolvimento RIA com Java

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

Page 15: Desenvolvimento RIA com Java

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.

Page 16: Desenvolvimento RIA com Java

Desenvolvimento RIA com JavaDesenvolvimento RIA com Java

ExperiênciasExperiências

• Problema encontrado: biblioteca de componentes visuais.Problema encontrado: biblioteca de componentes visuais.

Page 17: Desenvolvimento RIA com Java

Desenvolvimento RIA com JavaDesenvolvimento RIA com Java

ExperiênciasExperiências

• Solução encontrada – Yahoo! User Interface Library.Solução encontrada – Yahoo! User Interface Library.

Page 18: Desenvolvimento RIA com Java

Desenvolvimento RIA com JavaDesenvolvimento RIA com Java

ExperiênciasExperiências

• Yahoo! DataTable.Yahoo! DataTable.

Page 19: Desenvolvimento RIA com Java

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.

Page 20: Desenvolvimento RIA com Java

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”.

Page 21: Desenvolvimento RIA com Java

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.

Page 22: Desenvolvimento RIA com Java

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.

Page 23: Desenvolvimento RIA com 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.

Page 24: Desenvolvimento RIA com Java

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!

Page 25: Desenvolvimento RIA com 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.

Page 26: Desenvolvimento RIA com Java

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 >).

Page 27: Desenvolvimento RIA com Java

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.

Page 28: Desenvolvimento RIA com Java

Desenvolvimento RIA com JavaDesenvolvimento RIA com Java

PerspectivasPerspectivas

Page 29: Desenvolvimento RIA com Java

Desenvolvimento RIA com JavaDesenvolvimento RIA com Java

ConclusõesConclusões

• Resumo:Resumo: