SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
Mini-curso Gratuito
Agenda
• Cenário
• O que é e o que faz o GWT?
• Estrutura do GWT
• Configuração do Aplicativo GWT
• Demonstração do Aplicativo GWT
• RPC - GWT do lado servidor
• Usando JavaScript, CSS e i18n
• Extensões do GWT
• Teste Unitário
• Quem usa GWT?
• Tendências
• Perguntas
Apresentação da Agenda
Agenda
• Cenário
• O que é e o que faz o GWT?
• Estrutura do GWT
• Configuração do Aplicativo GWT
• Demonstração do Aplicativo GWT
• RPC - GWT do lado servidor
• Usando JavaScript, CSS e i18n
• Extensões do GWT
• Teste Unitário
• Quem usa GWT?
• Tendências
• Perguntas
Apresentação da Agenda
Cenário. Web de hoje em dia...
Introdução
Quanto tempo voce fica off-line?
Objetivo
• Construir aplicações Web Iterativas (RIA);
• Ponderar a espectativa sob “Rich” com a realidade /
necessidade do usuário;
• Navegação rápida, agradável e fácil;
• Produtividade na construção e manutenção de aplicações
web;
• Web “leve” – HTML + CSS + AJAX;
• Resolver eventuais incompatibilidades de navegodores.
Introdução
Google Web Toolkit, uma solução para RIA!
• Tornando desenvolvimento web mais produtivo.
• Construa aplicações web sem “tédio”.
Introdução
Agenda
• Cenário
• O que é e o que faz o GWT?
• Estrutura do GWT
• Configuração do Aplicativo GWT
• Demonstração do Aplicativo GWT
• RPC - GWT do lado servidor
• Usando JavaScript, CSS e i18n
• Extensões do GWT
• Teste Unitário
• Quem usa GWT?
• Tendências
• Perguntas
Apresentação da Agenda
O que é o GWT ?
• Tecnologia open-source para construção de aplicações
web utilizando Java;
• Vai além de um framework web;
• Kit composto por algumas ferramentas;
• Define um modelo de componentização para criação de
Interfaces Gráficas complexas;
Introdução
O Kit de ferramentas GWT
• Gerador de aplicações
• Emulador de execução(WebServer + Browser)
• Compilador / Gerador código JavaScript
• Emulador da JRE em JavaScript
• API
• Widgets
• Panels
Introdução
O que o GWT faz ?
• Compila código Java em JavaScript;
• Esconde a complexidade do Ajax;
• Resolve a incompatibilidade de browsers;
• Possui recursos comum de um framework web;
• Disponibiliza mecanismo RPC;
• Você codifica e "debuga" Java, mas "instala" JavaScript.
Introdução
Benefícios
• Concentre seus esforços no Java.
• Pare de sofrer com incompatibilidade de Navegadores.
• Use a abuse de Ajax sem se preocupar com JavaScript.
• Use componentes visuais.
• Suporte a teste unitários.
Introdução
Ecosistema
Introdução
Compilador
JRE
Emulador
JSNI
Widgets / Panel RPC / Http i18n JUnit Integration XML Parser
API
Utilitários
webAppCreator junitCreator i18nCreator
Agenda
• Cenário
• O que é e o que faz o GWT?
• Estrutura do GWT
• Configuração do Aplicativo GWT
• Demonstração do Aplicativo GWT
• RPC - GWT do lado servidor
• Usando JavaScript, CSS e i18n
• Extensões do GWT
• Teste Unitário
• Quem usa GWT?
• Tendências
• Perguntas
Apresentação da Agenda
Estrutura do GWT
Introdução
Pensando em MVC
• Apresentação
o Widgets / Panels
o Listeners
• Controle
o Serviço
• Modelo / Negócio
o EJB
o Spring
o Pojo ou qualquer outra framework Java.
Introdução
Componentes Visuais I
• Widgets
o Buttons, Dialogs, Label, TextBox, FileUpload, Tables,
Forms, Listbox, Popup e outros ;
Introdução
Label lbl = new Label(“Nome");
TextBox txt = new TextBox();
...
Componentes Visuais II
• Container / Panel
o RootPanel, HorizontalPanel, VerticalPanel, FlowPanel,
DialogBox, FormPanel e outros ;
Introdução
DialogBox box = new DialogBox();
box.setText("Popup GWT");
box.add(new Button("Fechar"));
...
Eventos
Tratamento de eventos com Listeners;
...
btnEnviar.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
Window.alert("Ola GWT");
}
});
...
Introdução
Compilador: o truque!
• Suporte a tipagem primitiva, String, array e Object;
• Suporta recursos do Java 5.
• Adota o AST (Abstract Syntax Tree);
• Prepara o conteúdo para o emulador JRE;
Introdução
Introdução
Emulador JRE
• Simula a Runtime do Java no JavaScript.
• Permite trabalhar com “tipos” do Java:
• String + Wrapper Classes
• Collections
• Alguma exceptions
• Data Objects: “trafegam” do Java para JavaScript e vice-
versa.
• Possui um mecanismo de serialização.
Hosted Mode
Introdução
Jetty / Web Server
Agilidade durante desenvolvimento
Fluxo de trabalho
Introdução
Desenvolvimento Produção
Agenda
• Cenário
• O que é e o que faz o GWT?
• Estrutura do GWT
• Configuração do Aplicativo GWT
• Demonstração do Aplicativo GWT
• RPC - GWT do lado servidor
• Usando JavaScript, CSS e i18n
• Extensões do GWT
• Teste Unitário
• Quem usa GWT?
• Tendências
• Perguntas
Apresentação da Agenda
Organização do Projeto GWT
Introdução
Plugin Google
para Eclipse
Configurações
do GWT
Código Java
no Servidor
Código
no Cliente (Browser)
Módulo
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='GlobalcodeGWT'>
<!-- biblioteca core do gwt -->
<inherits name='com.google.gwt.user.User' />
<!-- tema / estilo da aplicacao -->
<inherits name='com.google.gwt.user.theme.standard.Standard'/>
<!-- Ponto de entrada do aplicativo. -->
<entry-point class='br.com.globalcode.gwt.client.GlobalcodeGWT'/>
</module>
Introdução
Tema
• GWT adota o conceito de Skinnability;
• Padronização do visual da aplicação;
• Componentiza (esconde) o CSS;
<inherits name='com.google.gwt.user.theme.standard.Standard'/>
Introdução
Entry-Point
Ponto de partida para executar a aplicação
public class GlobalcodeGWT implements EntryPoint {
public void onModuleLoad() {
...
final Button btnEnviar = new Button("Enviar");
btnEnviar.addStyleName("sendButton");
RootPanel.get(“container").add(btnEnviar);
...
}
}
Introdução
Hosted HTML
<html>
<head> … </head>
<body>
<!– javascript do projeto -->
<script language=‘javascript‘ src=‘projeto.nocache.js‘> </script >
<!-- Include a history iframe to enable full GWT history support -->
<iframe src=“javascript:’’” id=“__gwt_historyFrame"
style =“width:0;height:0;border:0” > </iframe>
<!– Estrutura preenchida pelo GWT. -->
<div id=‘container'></div>
</body>
</html>
Introdução
Agenda
• Cenário
• O que é e o que faz o GWT?
• Estrutura do GWT
• Configuração do Aplicativo GWT
• Demonstração do Aplicativo GWT
• RPC - GWT do lado servidor
• Usando JavaScript, CSS e i18n
• Extensões do GWT
• Teste Unitário
• Quem usa GWT?
• Tendências
• Perguntas
Apresentação da Agenda
Demo – executando projeto GWT
Introdução
Agenda
• Cenário
• O que é e o que faz o GWT?
• Estrutura do GWT
• Configuração do Aplicativo GWT
• Demonstração do Aplicativo GWT
• RPC - GWT do lado servidor
• Usando JavaScript, CSS e i18n
• Extensões do GWT
• Teste Unitário
• Quem usa GWT?
• Tendências
• Perguntas
Apresentação da Agenda
No Servidor: Serviço
• Acesso aos componentes da camada de negócio;
• Todas as chamadas são assíncronas;
• Formas de acesso:
o GWT RPC - Remote Procedure Call
o Http
Introdução
Serviço RPC
• Etapas para criação:
o Definir um contrato especificando as funcionalidades do
serviço;
o Implementar o Serviço;
o Definir proxy para requisição assíncrona;
• O serviço é um Servlet.
Introdução
Serviço RPC
Introdução
Demo GWT com RPC...
Introdução
Etapas da execução
Introdução
Service
Clientes
DAO
Service
Async
View
Widgets
Async
Callback
onload
new
getClientes(callback) getClientes()
Cliente
getAll()
new
for
onSuccess()
grid.add(clientes)
JavaScript / Cliente Java / Servidor
Serviço Http
• Outra opção de integração;
• Client faz a requisição http;
• Server retorna XML, JSON e/ou JSNI;
• Solução para REST e/ou WebService;
Introdução
Exemplo usando Serviço Http
String url = "http://www.globalcode.com.br/getMCursos?semana=40";
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET,
URL.encode(url));
try {
Request request = builder.sendRequest(null, new RequestCallback() {
...
public void onResponseReceived(Request request, Response response) {
if (200 == response.getStatusCode()) {
// resposta finalizada
}
}
});
} catch (RequestException e) {
//não foi possivel conectar ao server
}
Na configuração do módulo: <inherits name='com.google.gwt.http.Http/>
Introdução
Agenda
• Cenário
• O que é e o que faz o GWT?
• Estrutura do GWT
• Configuração do Aplicativo GWT
• Demonstração do Aplicativo GWT
• RPC - GWT do lado servidor
• Usando JavaScript, CSS e i18n
• Extensões do GWT
• Teste Unitário
• Quem usa GWT?
• Tendências
• Perguntas
Apresentação da Agenda
JNSI - JavaScript Native Integration
• Criando código JavaScript nativo no Java.
public native static void alert(String msg) /* {
--codigo javascript
$wnd.alert(msg);
}*/ ;
Introdução
Customização Estilo
Exemplo 1, css:
.sendButton {
display: block;
font-size: 16pt;
}
Java:
cliqueButton.addStyleName("sendButton"); //vinculando style por class (Button)
Exemplo 2, css:
#closeButton {
display: block;
font-size: 16pt;
}
Java:
closeButton.getElement().setId("closeButton"); //vinculando style por selector (Button)
Introdução
Internacionalização
Introdução
#arquivo properties
clienteNome=Nome
clienteCpf=CPF
public interface Rotulos implements Constants {
String clienteCpf();
String clienteNome();
}
//Entry point
Rotulos i18n = (Rotulos) GWT.create(Rotulos.class);
Label lblNome = new Label(i18n.clienteNome());
…
Label lblCpf = new Label(i18n.clienteCpf());
…
Agenda
• Cenário
• O que é e o que faz o GWT?
• Estrutura do GWT
• Configuração do Aplicativo GWT
• Demonstração do Aplicativo GWT
• RPC - GWT do lado servidor
• Usando JavaScript, CSS e i18n
• Extensões do GWT
• Teste Unitário
• Quem usa GWT?
• Tendências
• Perguntas
Apresentação da Agenda
Extensões
• Aumente a produtividade com GWT
• Aproveite Widgets terceirizados:
o Ext GWT
http://extjs.com/examples/explorer.html#overview
o SmartClient GWT
http://www.smartclient.com/smartgwt/showcase/
o Advanced Components
http://advanced-gwt.sourceforge.net/demo/index.html
o GWT Ext
http://www.gwt-ext.com/demo/
Introdução
Agenda
• Cenário
• O que é e o que faz o GWT?
• Estrutura do GWT
• Configuração do Aplicativo GWT
• Demonstração do Aplicativo GWT
• RPC - GWT do lado servidor
• Usando JavaScript, CSS e i18n
• Extensões do GWT
• Teste Unitário
• Quem usa GWT?
• Tendências
• Perguntas
Apresentação da Agenda
Teste Unitário - JUnit
Introdução
Modulo
+boolean validaCpf(String)
EntryPoint
public class ValidaCpfTest extends GWTTestCase
{
public String clienteCpf() {
return “br.com.globalcode.cliente.Modulo";
}
public void test() {
Modulo m = new Modulo();
assertTrue(m.validaCpf(“29988798705”));
…
}
…
}
Agenda
• Cenário
• O que é e o que faz o GWT?
• Estrutura do GWT
• Configuração do Aplicativo GWT
• Demonstração do Aplicativo GWT
• RPC - GWT do lado servidor
• Usando JavaScript, CSS e i18n
• Extensões do GWT
• Teste Unitário
• Quem usa GWT?
• Tendências
• Perguntas
Apresentação da Agenda
Quem usa GWT?
• Google:
• Docs
• Gmail
• Wave
• StudyBlue: foco educacional, “sala virtual”.
• ContactOffice: suite colaborativa para escritório.
• Citrix TV: Vídeos relacionados a Citrix.
Veja mais em http://gwtgallery.appspot.com
Introdução
Um pouco do Histórico...
Introdução
Mai. 2006 1.0 Lançamento do GWT.
Ago. 2006 1.1 Suporte a injeção de CSS.
Nov. 2006 1.2 Disponível para Mac OSX.
Jan. 2007 1.3 Completamente Open Source.
Mar. 2008 1.4 Mais de 1 milhão de downloads.
Out. 2008 1.5 Suporte a recursos do Java 5.
Abr. 2009 1.6 Versão atual, diversas melhorias.
Agenda
• Cenário
• O que é e o que faz o GWT?
• Estrutura do GWT
• Configuração do Aplicativo GWT
• Demonstração do Aplicativo GWT
• RPC - GWT do lado servidor
• Usando JavaScript, CSS e i18n
• Extensões do GWT
• Teste Unitário
• Quem usa GWT?
• Tendências
• Perguntas
Apresentação da Agenda
Tendências
• GWT 2.0
• Debug (Java) direto no navegador;
• Compilador mais rápido;
• Melhorias Binding;
• Scripts JS e CSS menores;
• Google Wave
• Google App Engine
Introdução
Links
http://code.google.com/intl/pt-BR/webtoolkit
http://www.ongwt.com
http://www.gwtsite.com
http://groups.google.com/group/Google-Web-Toolkit?hl=en&pli=1
http://www.gwtapps.com/
http://wave.google.com/
http://code.google.com/intl/pt-BR/appengine/
Introdução
Perguntas
Introdução

Contenu connexe

Tendances

Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
Giovanni Bassi
 

Tendances (17)

Offline apps Using Ionic Framework and PouchDB
Offline apps  Using Ionic Framework and PouchDBOffline apps  Using Ionic Framework and PouchDB
Offline apps Using Ionic Framework and PouchDB
 
Spring boot
Spring bootSpring boot
Spring boot
 
Quasar Framework - Uma visão Geral
Quasar Framework - Uma visão GeralQuasar Framework - Uma visão Geral
Quasar Framework - Uma visão Geral
 
Conhecendo o Nodejs
Conhecendo o NodejsConhecendo o Nodejs
Conhecendo o Nodejs
 
Secomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao ElixirSecomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao Elixir
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
Liferay com React - Boas práticas
Liferay com React - Boas práticasLiferay com React - Boas práticas
Liferay com React - Boas práticas
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
React Native na globo.com
React Native na globo.comReact Native na globo.com
React Native na globo.com
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
 
Meteor um overview sobre a plataforma
Meteor   um overview sobre a plataformaMeteor   um overview sobre a plataforma
Meteor um overview sobre a plataforma
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
React - Biblioteca Javascript para criação de UI
React - Biblioteca Javascript para criação de UIReact - Biblioteca Javascript para criação de UI
React - Biblioteca Javascript para criação de UI
 
Gwt parte 01
Gwt   parte 01Gwt   parte 01
Gwt parte 01
 
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
 
Curso de Grails
Curso de GrailsCurso de Grails
Curso de Grails
 
Web2.0 e Ajax
Web2.0 e AjaxWeb2.0 e Ajax
Web2.0 e Ajax
 

En vedette

Apresentacao rascunho
Apresentacao rascunhoApresentacao rascunho
Apresentacao rascunho
vitoriotomaz
 
Anson u4 let’s go bowling!
Anson u4 let’s go bowling!Anson u4 let’s go bowling!
Anson u4 let’s go bowling!
psychoticandhappy
 
Training presentation
Training presentationTraining presentation
Training presentation
joyofzoy
 
Coddaire.bowling power point
Coddaire.bowling power pointCoddaire.bowling power point
Coddaire.bowling power point
mtenakasha10
 

En vedette (17)

BOWLMOR - BIG DATA BOWLING
BOWLMOR - BIG DATA BOWLING BOWLMOR - BIG DATA BOWLING
BOWLMOR - BIG DATA BOWLING
 
AMF - BIG DATA BOWLING
AMF - BIG DATA BOWLING AMF - BIG DATA BOWLING
AMF - BIG DATA BOWLING
 
Apresentacao rascunho
Apresentacao rascunhoApresentacao rascunho
Apresentacao rascunho
 
Brunswick's - BIG DATA BOWLING
Brunswick's - BIG DATA BOWLING Brunswick's - BIG DATA BOWLING
Brunswick's - BIG DATA BOWLING
 
Youth Ideas - Halloween Bowling Party
Youth Ideas - Halloween Bowling PartyYouth Ideas - Halloween Bowling Party
Youth Ideas - Halloween Bowling Party
 
Halloween Party Ideas - Halloween Bowling Party
Halloween Party Ideas - Halloween Bowling PartyHalloween Party Ideas - Halloween Bowling Party
Halloween Party Ideas - Halloween Bowling Party
 
NED (Nonprofit Executive Directors) Program - Strategic Planning and Budgeting
NED (Nonprofit Executive Directors) Program - Strategic Planning and BudgetingNED (Nonprofit Executive Directors) Program - Strategic Planning and Budgeting
NED (Nonprofit Executive Directors) Program - Strategic Planning and Budgeting
 
2015 NYC Bowling for Breastcancer.org - March 19 @ Lucky Strikes Manhattan
2015 NYC Bowling for Breastcancer.org - March 19 @ Lucky Strikes Manhattan2015 NYC Bowling for Breastcancer.org - March 19 @ Lucky Strikes Manhattan
2015 NYC Bowling for Breastcancer.org - March 19 @ Lucky Strikes Manhattan
 
Kcsa marketing presentation 2.0
Kcsa marketing presentation 2.0Kcsa marketing presentation 2.0
Kcsa marketing presentation 2.0
 
NEA & Partners Bowling Activity 2011
NEA & Partners Bowling Activity 2011NEA & Partners Bowling Activity 2011
NEA & Partners Bowling Activity 2011
 
Client Presentation
Client PresentationClient Presentation
Client Presentation
 
Sharon Printy- Corporate Events
Sharon Printy- Corporate EventsSharon Printy- Corporate Events
Sharon Printy- Corporate Events
 
Anson u4 let’s go bowling!
Anson u4 let’s go bowling!Anson u4 let’s go bowling!
Anson u4 let’s go bowling!
 
Training presentation
Training presentationTraining presentation
Training presentation
 
Coddaire.bowling power point
Coddaire.bowling power pointCoddaire.bowling power point
Coddaire.bowling power point
 
Bowling Game Kata C#
Bowling Game Kata C#Bowling Game Kata C#
Bowling Game Kata C#
 
Bowling presentation h diem 6_2015
Bowling presentation h diem 6_2015Bowling presentation h diem 6_2015
Bowling presentation h diem 6_2015
 

Similaire à Mc56 gwt

Similaire à Mc56 gwt (20)

Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Pyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para WebPyjamas: Uma Ferramenta Pythônica para Web
Pyjamas: Uma Ferramenta Pythônica para Web
 
Desenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e SpringDesenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e Spring
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
 
GWT
GWTGWT
GWT
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
TDC2012: Apps RIA com Sencha GXT 3 e GWT
TDC2012: Apps RIA com Sencha GXT 3 e GWTTDC2012: Apps RIA com Sencha GXT 3 e GWT
TDC2012: Apps RIA com Sencha GXT 3 e GWT
 
Gwt-Guice_TDC2009
Gwt-Guice_TDC2009Gwt-Guice_TDC2009
Gwt-Guice_TDC2009
 
Workshop - Ionic + firebase
Workshop - Ionic + firebaseWorkshop - Ionic + firebase
Workshop - Ionic + firebase
 
Node.js e Express
Node.js e ExpressNode.js e Express
Node.js e Express
 
GWT - RIA baseada em AJAX
GWT - RIA baseada em AJAXGWT - RIA baseada em AJAX
GWT - RIA baseada em AJAX
 
Criando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com AppiumCriando uma grid para execução de testes paralelo com Appium
Criando uma grid para execução de testes paralelo com Appium
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...
 
Microsoft Reactor Desenvolvimento serverless com azure function
Microsoft Reactor Desenvolvimento serverless com azure functionMicrosoft Reactor Desenvolvimento serverless com azure function
Microsoft Reactor Desenvolvimento serverless com azure function
 
MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)MC - Java Enterprise Edition 6 (Java EE)
MC - Java Enterprise Edition 6 (Java EE)
 
Intervalo Técnico - QG Mobile
Intervalo Técnico - QG MobileIntervalo Técnico - QG Mobile
Intervalo Técnico - QG Mobile
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
 
GDG ABC Meetup #5 - Tendências 2015
GDG ABC Meetup #5 - Tendências 2015GDG ABC Meetup #5 - Tendências 2015
GDG ABC Meetup #5 - Tendências 2015
 

Dernier

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Dernier (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

Mc56 gwt

  • 2. Agenda • Cenário • O que é e o que faz o GWT? • Estrutura do GWT • Configuração do Aplicativo GWT • Demonstração do Aplicativo GWT • RPC - GWT do lado servidor • Usando JavaScript, CSS e i18n • Extensões do GWT • Teste Unitário • Quem usa GWT? • Tendências • Perguntas Apresentação da Agenda
  • 3. Agenda • Cenário • O que é e o que faz o GWT? • Estrutura do GWT • Configuração do Aplicativo GWT • Demonstração do Aplicativo GWT • RPC - GWT do lado servidor • Usando JavaScript, CSS e i18n • Extensões do GWT • Teste Unitário • Quem usa GWT? • Tendências • Perguntas Apresentação da Agenda
  • 4. Cenário. Web de hoje em dia... Introdução Quanto tempo voce fica off-line?
  • 5. Objetivo • Construir aplicações Web Iterativas (RIA); • Ponderar a espectativa sob “Rich” com a realidade / necessidade do usuário; • Navegação rápida, agradável e fácil; • Produtividade na construção e manutenção de aplicações web; • Web “leve” – HTML + CSS + AJAX; • Resolver eventuais incompatibilidades de navegodores. Introdução
  • 6. Google Web Toolkit, uma solução para RIA! • Tornando desenvolvimento web mais produtivo. • Construa aplicações web sem “tédio”. Introdução
  • 7. Agenda • Cenário • O que é e o que faz o GWT? • Estrutura do GWT • Configuração do Aplicativo GWT • Demonstração do Aplicativo GWT • RPC - GWT do lado servidor • Usando JavaScript, CSS e i18n • Extensões do GWT • Teste Unitário • Quem usa GWT? • Tendências • Perguntas Apresentação da Agenda
  • 8. O que é o GWT ? • Tecnologia open-source para construção de aplicações web utilizando Java; • Vai além de um framework web; • Kit composto por algumas ferramentas; • Define um modelo de componentização para criação de Interfaces Gráficas complexas; Introdução
  • 9. O Kit de ferramentas GWT • Gerador de aplicações • Emulador de execução(WebServer + Browser) • Compilador / Gerador código JavaScript • Emulador da JRE em JavaScript • API • Widgets • Panels Introdução
  • 10. O que o GWT faz ? • Compila código Java em JavaScript; • Esconde a complexidade do Ajax; • Resolve a incompatibilidade de browsers; • Possui recursos comum de um framework web; • Disponibiliza mecanismo RPC; • Você codifica e "debuga" Java, mas "instala" JavaScript. Introdução
  • 11. Benefícios • Concentre seus esforços no Java. • Pare de sofrer com incompatibilidade de Navegadores. • Use a abuse de Ajax sem se preocupar com JavaScript. • Use componentes visuais. • Suporte a teste unitários. Introdução
  • 12. Ecosistema Introdução Compilador JRE Emulador JSNI Widgets / Panel RPC / Http i18n JUnit Integration XML Parser API Utilitários webAppCreator junitCreator i18nCreator
  • 13. Agenda • Cenário • O que é e o que faz o GWT? • Estrutura do GWT • Configuração do Aplicativo GWT • Demonstração do Aplicativo GWT • RPC - GWT do lado servidor • Usando JavaScript, CSS e i18n • Extensões do GWT • Teste Unitário • Quem usa GWT? • Tendências • Perguntas Apresentação da Agenda
  • 15. Pensando em MVC • Apresentação o Widgets / Panels o Listeners • Controle o Serviço • Modelo / Negócio o EJB o Spring o Pojo ou qualquer outra framework Java. Introdução
  • 16. Componentes Visuais I • Widgets o Buttons, Dialogs, Label, TextBox, FileUpload, Tables, Forms, Listbox, Popup e outros ; Introdução Label lbl = new Label(“Nome"); TextBox txt = new TextBox(); ...
  • 17. Componentes Visuais II • Container / Panel o RootPanel, HorizontalPanel, VerticalPanel, FlowPanel, DialogBox, FormPanel e outros ; Introdução DialogBox box = new DialogBox(); box.setText("Popup GWT"); box.add(new Button("Fechar")); ...
  • 18. Eventos Tratamento de eventos com Listeners; ... btnEnviar.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { Window.alert("Ola GWT"); } }); ... Introdução
  • 19. Compilador: o truque! • Suporte a tipagem primitiva, String, array e Object; • Suporta recursos do Java 5. • Adota o AST (Abstract Syntax Tree); • Prepara o conteúdo para o emulador JRE; Introdução
  • 20. Introdução Emulador JRE • Simula a Runtime do Java no JavaScript. • Permite trabalhar com “tipos” do Java: • String + Wrapper Classes • Collections • Alguma exceptions • Data Objects: “trafegam” do Java para JavaScript e vice- versa. • Possui um mecanismo de serialização.
  • 21. Hosted Mode Introdução Jetty / Web Server Agilidade durante desenvolvimento
  • 23. Agenda • Cenário • O que é e o que faz o GWT? • Estrutura do GWT • Configuração do Aplicativo GWT • Demonstração do Aplicativo GWT • RPC - GWT do lado servidor • Usando JavaScript, CSS e i18n • Extensões do GWT • Teste Unitário • Quem usa GWT? • Tendências • Perguntas Apresentação da Agenda
  • 24. Organização do Projeto GWT Introdução Plugin Google para Eclipse Configurações do GWT Código Java no Servidor Código no Cliente (Browser)
  • 25. Módulo <?xml version="1.0" encoding="UTF-8"?> <module rename-to='GlobalcodeGWT'> <!-- biblioteca core do gwt --> <inherits name='com.google.gwt.user.User' /> <!-- tema / estilo da aplicacao --> <inherits name='com.google.gwt.user.theme.standard.Standard'/> <!-- Ponto de entrada do aplicativo. --> <entry-point class='br.com.globalcode.gwt.client.GlobalcodeGWT'/> </module> Introdução
  • 26. Tema • GWT adota o conceito de Skinnability; • Padronização do visual da aplicação; • Componentiza (esconde) o CSS; <inherits name='com.google.gwt.user.theme.standard.Standard'/> Introdução
  • 27. Entry-Point Ponto de partida para executar a aplicação public class GlobalcodeGWT implements EntryPoint { public void onModuleLoad() { ... final Button btnEnviar = new Button("Enviar"); btnEnviar.addStyleName("sendButton"); RootPanel.get(“container").add(btnEnviar); ... } } Introdução
  • 28. Hosted HTML <html> <head> … </head> <body> <!– javascript do projeto --> <script language=‘javascript‘ src=‘projeto.nocache.js‘> </script > <!-- Include a history iframe to enable full GWT history support --> <iframe src=“javascript:’’” id=“__gwt_historyFrame" style =“width:0;height:0;border:0” > </iframe> <!– Estrutura preenchida pelo GWT. --> <div id=‘container'></div> </body> </html> Introdução
  • 29. Agenda • Cenário • O que é e o que faz o GWT? • Estrutura do GWT • Configuração do Aplicativo GWT • Demonstração do Aplicativo GWT • RPC - GWT do lado servidor • Usando JavaScript, CSS e i18n • Extensões do GWT • Teste Unitário • Quem usa GWT? • Tendências • Perguntas Apresentação da Agenda
  • 30. Demo – executando projeto GWT Introdução
  • 31. Agenda • Cenário • O que é e o que faz o GWT? • Estrutura do GWT • Configuração do Aplicativo GWT • Demonstração do Aplicativo GWT • RPC - GWT do lado servidor • Usando JavaScript, CSS e i18n • Extensões do GWT • Teste Unitário • Quem usa GWT? • Tendências • Perguntas Apresentação da Agenda
  • 32. No Servidor: Serviço • Acesso aos componentes da camada de negócio; • Todas as chamadas são assíncronas; • Formas de acesso: o GWT RPC - Remote Procedure Call o Http Introdução
  • 33. Serviço RPC • Etapas para criação: o Definir um contrato especificando as funcionalidades do serviço; o Implementar o Serviço; o Definir proxy para requisição assíncrona; • O serviço é um Servlet. Introdução
  • 35. Demo GWT com RPC... Introdução
  • 36. Etapas da execução Introdução Service Clientes DAO Service Async View Widgets Async Callback onload new getClientes(callback) getClientes() Cliente getAll() new for onSuccess() grid.add(clientes) JavaScript / Cliente Java / Servidor
  • 37. Serviço Http • Outra opção de integração; • Client faz a requisição http; • Server retorna XML, JSON e/ou JSNI; • Solução para REST e/ou WebService; Introdução
  • 38. Exemplo usando Serviço Http String url = "http://www.globalcode.com.br/getMCursos?semana=40"; RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(url)); try { Request request = builder.sendRequest(null, new RequestCallback() { ... public void onResponseReceived(Request request, Response response) { if (200 == response.getStatusCode()) { // resposta finalizada } } }); } catch (RequestException e) { //não foi possivel conectar ao server } Na configuração do módulo: <inherits name='com.google.gwt.http.Http/> Introdução
  • 39. Agenda • Cenário • O que é e o que faz o GWT? • Estrutura do GWT • Configuração do Aplicativo GWT • Demonstração do Aplicativo GWT • RPC - GWT do lado servidor • Usando JavaScript, CSS e i18n • Extensões do GWT • Teste Unitário • Quem usa GWT? • Tendências • Perguntas Apresentação da Agenda
  • 40. JNSI - JavaScript Native Integration • Criando código JavaScript nativo no Java. public native static void alert(String msg) /* { --codigo javascript $wnd.alert(msg); }*/ ; Introdução
  • 41. Customização Estilo Exemplo 1, css: .sendButton { display: block; font-size: 16pt; } Java: cliqueButton.addStyleName("sendButton"); //vinculando style por class (Button) Exemplo 2, css: #closeButton { display: block; font-size: 16pt; } Java: closeButton.getElement().setId("closeButton"); //vinculando style por selector (Button) Introdução
  • 42. Internacionalização Introdução #arquivo properties clienteNome=Nome clienteCpf=CPF public interface Rotulos implements Constants { String clienteCpf(); String clienteNome(); } //Entry point Rotulos i18n = (Rotulos) GWT.create(Rotulos.class); Label lblNome = new Label(i18n.clienteNome()); … Label lblCpf = new Label(i18n.clienteCpf()); …
  • 43. Agenda • Cenário • O que é e o que faz o GWT? • Estrutura do GWT • Configuração do Aplicativo GWT • Demonstração do Aplicativo GWT • RPC - GWT do lado servidor • Usando JavaScript, CSS e i18n • Extensões do GWT • Teste Unitário • Quem usa GWT? • Tendências • Perguntas Apresentação da Agenda
  • 44. Extensões • Aumente a produtividade com GWT • Aproveite Widgets terceirizados: o Ext GWT http://extjs.com/examples/explorer.html#overview o SmartClient GWT http://www.smartclient.com/smartgwt/showcase/ o Advanced Components http://advanced-gwt.sourceforge.net/demo/index.html o GWT Ext http://www.gwt-ext.com/demo/ Introdução
  • 45. Agenda • Cenário • O que é e o que faz o GWT? • Estrutura do GWT • Configuração do Aplicativo GWT • Demonstração do Aplicativo GWT • RPC - GWT do lado servidor • Usando JavaScript, CSS e i18n • Extensões do GWT • Teste Unitário • Quem usa GWT? • Tendências • Perguntas Apresentação da Agenda
  • 46. Teste Unitário - JUnit Introdução Modulo +boolean validaCpf(String) EntryPoint public class ValidaCpfTest extends GWTTestCase { public String clienteCpf() { return “br.com.globalcode.cliente.Modulo"; } public void test() { Modulo m = new Modulo(); assertTrue(m.validaCpf(“29988798705”)); … } … }
  • 47. Agenda • Cenário • O que é e o que faz o GWT? • Estrutura do GWT • Configuração do Aplicativo GWT • Demonstração do Aplicativo GWT • RPC - GWT do lado servidor • Usando JavaScript, CSS e i18n • Extensões do GWT • Teste Unitário • Quem usa GWT? • Tendências • Perguntas Apresentação da Agenda
  • 48. Quem usa GWT? • Google: • Docs • Gmail • Wave • StudyBlue: foco educacional, “sala virtual”. • ContactOffice: suite colaborativa para escritório. • Citrix TV: Vídeos relacionados a Citrix. Veja mais em http://gwtgallery.appspot.com Introdução
  • 49. Um pouco do Histórico... Introdução Mai. 2006 1.0 Lançamento do GWT. Ago. 2006 1.1 Suporte a injeção de CSS. Nov. 2006 1.2 Disponível para Mac OSX. Jan. 2007 1.3 Completamente Open Source. Mar. 2008 1.4 Mais de 1 milhão de downloads. Out. 2008 1.5 Suporte a recursos do Java 5. Abr. 2009 1.6 Versão atual, diversas melhorias.
  • 50. Agenda • Cenário • O que é e o que faz o GWT? • Estrutura do GWT • Configuração do Aplicativo GWT • Demonstração do Aplicativo GWT • RPC - GWT do lado servidor • Usando JavaScript, CSS e i18n • Extensões do GWT • Teste Unitário • Quem usa GWT? • Tendências • Perguntas Apresentação da Agenda
  • 51. Tendências • GWT 2.0 • Debug (Java) direto no navegador; • Compilador mais rápido; • Melhorias Binding; • Scripts JS e CSS menores; • Google Wave • Google App Engine Introdução