SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

PDF
Desenvolvendo aplicações web com GWT
Synergia - Engenharia de Software e Sistemas
 
PPTX
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Giovanni Bassi
 
PPTX
Conhecendo o AKS, o azure container services com kubernetes
Giovanni Bassi
 
PDF
Dicas de otimização para aplicações Qt
Microsoft Mobile Developer
 
PPT
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
Cleber Dantas
 
ODP
Grails: O Java em Alta Produtividade
Cleórbete Santos
 
PDF
GWT - de iniciante a especialista
Danilo Reinert
 
PPTX
Grails
Alex Guido
 
Desenvolvendo aplicações web com GWT
Synergia - Engenharia de Software e Sistemas
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Giovanni Bassi
 
Conhecendo o AKS, o azure container services com kubernetes
Giovanni Bassi
 
Dicas de otimização para aplicações Qt
Microsoft Mobile Developer
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
Cleber Dantas
 
Grails: O Java em Alta Produtividade
Cleórbete Santos
 
GWT - de iniciante a especialista
Danilo Reinert
 
Grails
Alex Guido
 

Mais procurados (17)

PDF
Offline apps Using Ionic Framework and PouchDB
Alvaro Viebrantz
 
PDF
Spring boot
John Godoi
 
PPTX
Quasar Framework - Uma visão Geral
Patrick Monteiro
 
ODP
Conhecendo o Nodejs
Caio Cutrim
 
PDF
Secomp 2018 - DO Ruby ao Elixir
Rodrigo Long Chen Kashiwakura
 
PDF
GUJavaSC - Mini-curso Java EE
Rodrigo Cândido da Silva
 
PDF
Liferay com React - Boas práticas
Ricardo Monteiro
 
PDF
Node.js - #1 - Introdução - Rodrigo Branas
Rodrigo Branas
 
PDF
React Native na globo.com
Guilherme Heynemann Bruzzi
 
PDF
Entregando conteúdo em ambientes extremos na JVM
Rodrigo Zaccara
 
PDF
Meteor um overview sobre a plataforma
Caio Ribeiro Pereira
 
PPTX
Introdução ao NodeJS
Giovanni Bassi
 
PDF
React - Biblioteca Javascript para criação de UI
Cleiton Francisco
 
PDF
Gwt parte 01
Rafael Adriano
 
PDF
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Sergio Lima
 
PDF
Curso de Grails
Bruno Nascimento
 
PDF
Web2.0 e Ajax
Paulo César M Jeveaux
 
Offline apps Using Ionic Framework and PouchDB
Alvaro Viebrantz
 
Spring boot
John Godoi
 
Quasar Framework - Uma visão Geral
Patrick Monteiro
 
Conhecendo o Nodejs
Caio Cutrim
 
Secomp 2018 - DO Ruby ao Elixir
Rodrigo Long Chen Kashiwakura
 
GUJavaSC - Mini-curso Java EE
Rodrigo Cândido da Silva
 
Liferay com React - Boas práticas
Ricardo Monteiro
 
Node.js - #1 - Introdução - Rodrigo Branas
Rodrigo Branas
 
React Native na globo.com
Guilherme Heynemann Bruzzi
 
Entregando conteúdo em ambientes extremos na JVM
Rodrigo Zaccara
 
Meteor um overview sobre a plataforma
Caio Ribeiro Pereira
 
Introdução ao NodeJS
Giovanni Bassi
 
React - Biblioteca Javascript para criação de UI
Cleiton Francisco
 
Gwt parte 01
Rafael Adriano
 
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Sergio Lima
 
Curso de Grails
Bruno Nascimento
 
Web2.0 e Ajax
Paulo César M Jeveaux
 
Anúncio

Destaque (17)

PDF
BOWLMOR - BIG DATA BOWLING
BowlmorAMF
 
PDF
AMF - BIG DATA BOWLING
BowlmorAMF
 
PPT
Apresentacao rascunho
vitoriotomaz
 
PDF
Brunswick's - BIG DATA BOWLING
BowlmorAMF
 
PPTX
Youth Ideas - Halloween Bowling Party
Ken Sapp
 
PPTX
Halloween Party Ideas - Halloween Bowling Party
Ken Sapp
 
PDF
NED (Nonprofit Executive Directors) Program - Strategic Planning and Budgeting
Janice Dru
 
PPTX
2015 NYC Bowling for Breastcancer.org - March 19 @ Lucky Strikes Manhattan
Lori Crenny
 
PPTX
Kcsa marketing presentation 2.0
Cindy Miles, M.B.A.
 
PPSX
NEA & Partners Bowling Activity 2011
NEA_and_Partners
 
PDF
Client Presentation
Martin A. Smith CRPC®, AIFA®
 
PDF
Sharon Printy- Corporate Events
LadyGator
 
PPTX
Anson u4 let’s go bowling!
psychoticandhappy
 
PPT
Training presentation
joyofzoy
 
PPTX
Coddaire.bowling power point
mtenakasha10
 
PPTX
Bowling Game Kata C#
Dan Stewart
 
PPTX
Bowling presentation h diem 6_2015
Heidi Diem
 
BOWLMOR - BIG DATA BOWLING
BowlmorAMF
 
AMF - BIG DATA BOWLING
BowlmorAMF
 
Apresentacao rascunho
vitoriotomaz
 
Brunswick's - BIG DATA BOWLING
BowlmorAMF
 
Youth Ideas - Halloween Bowling Party
Ken Sapp
 
Halloween Party Ideas - Halloween Bowling Party
Ken Sapp
 
NED (Nonprofit Executive Directors) Program - Strategic Planning and Budgeting
Janice Dru
 
2015 NYC Bowling for Breastcancer.org - March 19 @ Lucky Strikes Manhattan
Lori Crenny
 
Kcsa marketing presentation 2.0
Cindy Miles, M.B.A.
 
NEA & Partners Bowling Activity 2011
NEA_and_Partners
 
Client Presentation
Martin A. Smith CRPC®, AIFA®
 
Sharon Printy- Corporate Events
LadyGator
 
Anson u4 let’s go bowling!
psychoticandhappy
 
Training presentation
joyofzoy
 
Coddaire.bowling power point
mtenakasha10
 
Bowling Game Kata C#
Dan Stewart
 
Bowling presentation h diem 6_2015
Heidi Diem
 
Anúncio

Semelhante a Mc56 gwt (20)

PDF
Google Web Toolkit
Felipe J. R. Vieira
 
PPT
Pyjamas: Uma Ferramenta Pythônica para Web
Nielson Santana
 
PDF
Desenvolvimento RIA com GWT e Spring
Eder Magalhães
 
PDF
JHipster - Produtividade e Maturidade em suas mãos
Thiago Soares
 
PDF
Apostilava Java EE 5 - 2007
Rafael Benevides
 
PPTX
Curso jsf
Miguel Vilaca
 
PDF
TDC2012: Apps RIA com Sencha GXT 3 e GWT
Loiane Groner
 
PPT
Gwt-Guice_TDC2009
Eder Magalhães
 
PPTX
Workshop - Ionic + firebase
Stefan Horochovec
 
PDF
Node.js e Express
Dan Vitoriano
 
PPT
GWT - RIA baseada em AJAX
MJV Tecnologia & Inovação
 
PDF
Criando uma grid para execução de testes paralelo com Appium
Elias Nogueira
 
ODP
Servlets e JSP
Glaucio Scheibel
 
PDF
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...
Rodrigo Peleias
 
PPTX
Microsoft Reactor Desenvolvimento serverless com azure function
Walter Coan
 
PDF
MC - Java Enterprise Edition 6 (Java EE)
Rodrigo Cândido da Silva
 
PDF
Intervalo Técnico - QG Mobile
Vitor Albuquerque
 
PDF
Curso AngularJS - Parte 1
Alvaro Viebrantz
 
PDF
GDG ABC Meetup #5 - Tendências 2015
Daniel Costa Gimenes
 
Google Web Toolkit
Felipe J. R. Vieira
 
Pyjamas: Uma Ferramenta Pythônica para Web
Nielson Santana
 
Desenvolvimento RIA com GWT e Spring
Eder Magalhães
 
JHipster - Produtividade e Maturidade em suas mãos
Thiago Soares
 
Apostilava Java EE 5 - 2007
Rafael Benevides
 
Curso jsf
Miguel Vilaca
 
TDC2012: Apps RIA com Sencha GXT 3 e GWT
Loiane Groner
 
Gwt-Guice_TDC2009
Eder Magalhães
 
Workshop - Ionic + firebase
Stefan Horochovec
 
Node.js e Express
Dan Vitoriano
 
GWT - RIA baseada em AJAX
MJV Tecnologia & Inovação
 
Criando uma grid para execução de testes paralelo com Appium
Elias Nogueira
 
Servlets e JSP
Glaucio Scheibel
 
Desenvolvimento de aplicações assíncronas, orientadas a eventos e poliglotas ...
Rodrigo Peleias
 
Microsoft Reactor Desenvolvimento serverless com azure function
Walter Coan
 
MC - Java Enterprise Edition 6 (Java EE)
Rodrigo Cândido da Silva
 
Intervalo Técnico - QG Mobile
Vitor Albuquerque
 
Curso AngularJS - Parte 1
Alvaro Viebrantz
 
GDG ABC Meetup #5 - Tendências 2015
Daniel Costa Gimenes
 

Último (7)

PPTX
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
PPTX
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
PDF
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
PDF
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
PPTX
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
PPTX
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
PPTX
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 

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