Академический Документы
Профессиональный Документы
Культура Документы
M
Marcelo
l EEmanoell B
B. Di
Diniz
i
PBJUG
PBJUG
Quem?
• Estudante
E t d t de
d Graduação
G d ã na UFCG
• Desenvolvedor JEE na Politec
• Contato: marcelo@gwt.com.br
• Bl
Blog: www.gwt.com.br
t b
PBJUG
O que é?
• Implementação em Java
• M
Mecanismo
i simples
i l d de RPC
• Debugg real
• Compatibilidade com os principais
navegadores
• Integração com JUnit
PBJUG
Vantagens
• Suporte a Internacionalização
• Possibilidade
P ibilid d d
de iintegração
t ã com
Javascript Puro
• Open Source
• Versões para Windows
Windows, Linux e Mac
• Integração com principais IDE’s
PBJUG
Como Funciona?
c r c r c r c r c r
h e h e h e h e h e
a s a s a s a s a s
m p m p m p m p m p
a o a o a o ... a o a o
d s d s d s d s d s
a t a t a t a t a t
a a a a a
Lado Servidor(Java)
PBJUG
Detalhando
• Objetos gráficos
• B tõ
Botões
• Paineis
• ComboBoxes
• Ch kB
CheckBoxes
• RadioButtons
• etc
PBJUG
Eventos e Listeners
• Click de botões
• P d /G h de
Perda/Ganho d ffoco
• Mudança ç de valor
• ClickListener
• F
FocusListener
Li t
• ChangeListener
• etc
PBJUG
Modos de Execução
• Hosted Mode
– Tomcat embutido
– Debug
– Script gerado on the fly
– Atualizações com refresh da página
– Aplicação em desenvolvimento
• Web Mode
– Tomcat externo
– Script compilado
– Atualizações requerem nova compilação
– Aplicação em produção
PBJUG
Primeiros Passos
• Download em
http://code google com/webtoolkit
http://code.google.com/webtoolkit
• ProjectCreator
• ApplicationCreator
• JunitCreator
• I18nCreator
PBJUG
Criando um projeto
projeto,
Hello World :)
• projectCreator -ant HelloWorld -eclipse HelloWorld
• SeuModulo.gwt.xml
• SeuModulo.ant.xml
S M d l t l
• Arquivos
q de configuração
g ç dos
frameworks que deseje utilizar
PBJUG
SeuModulo.gwt.xml
• Equivalente a:
public static void main(String[] args)
• Classe que implementa a interface
EntryPoint
• Possui o primeiro método chamado pela
aplicação.
li ã
public void onModuleLoad()
• Ponto de partida para o desenvolvimento.
PBJUG
RootPanel
• Assíncronas!
• I l
Implementação
t ã simples
i l
• 2 interfaces e 1 classe
• Mecanismo de Serialização
diferenciado
• Interface de marcação IsSerializable
PBJUG
PBJUG
Traduzindo o diagrama anterior
• Interface Service
• Interface
I t f ServiceAsync
S i A
• Classe q que estende
RemoteServiceServlet e implementa
a interface Service
PBJUG
Interfaces Service
• Estende RemoteService
• Declaração
D l ã normall
• Chamadas ao servidor
PBJUG
Interfaces ServiceAsync
• new AsyncCallback() {
public void onSuccess(Object
p ( j result)) {
//result é o retorno do método declarado na interface
//Service
//Códi d
//Código de sucesso!!
}
public void onFailure(Throwable caught) {
//Código de Falha
//caught é a exceção lançada na interface Service
}
• }
PBJUG
Implementação do Serviço
• Classe que reside no lado servidor da
aplicação
p ç
• Estende RemoteServiceServlet
• Implementa interface Service
• Ponto de partida no servidor
• Servlet
• Session
• Request
• Response
PBJUG
Exemplo
• public interface SpeechService extends RemoteService{
• public String digaAlgumaCoisaPara(String nome);
• }
PBJUG
Exemplo
• public interface SpeechServiceAsync{
• public void digaAlgumaCoisaPara(String nome,
A
AsyncCallback
C llb k callback);
llb k)
• }
PBJUG
Exemplo
• public class SpeechServiceImpl extends RemoteService
implements SpeechService{
• }
PBJUG
Configurando o Serviço
• SeuModulo.gwt.xml
– Incluir <servlet
l t path=“url-path”
th “ l th” class=“classname”/>
l “ l ”/
– Propósito de Testes
– Hosted Mode
PBJUG
Configurando o Serviço
• web.xml
– Declaração normal de um Servlet
<servlet>
<servlet-name>alias</servlet-name>
<servlet-class>nome
l t l completo
l t dda classe</servlet-class>
l / l t l
</servlet>
<servlet-mapping>
<servlet name>alias</servlet name>
<servlet-name>alias</servlet-name>
<url-pattern>url-path</url-pattern>
</servlet-mapping>
– Aplicação Pronta
– Web Mode
PBJUG
Execução de Chamadas à Serviços
• SpeechServiceAsync instance =
•
(SpeechServiceAsync)GWT create(SpeechService class);
(SpeechServiceAsync)GWT.create(SpeechService.class);
• return instance;;
• }
• }
•
• public String digaAlgumaCoisaPara(String nome);
• }
PBJUG
Executação de Chamadas à Serviços
• No cliente agora
SpeechServiceAsync serviço =
SpeechService Util getInstance();
SpeechService.Util.getInstance();
serviço.digaAlgumaCoisaPara(“Marcelo”, new
AsyncCallback(){
public void onSuccess(Object result) {
String resposta = (String) result;
System out println(result); //Só funciona no Hosted Mode
System.out.println(result);
}
public void onFailure(Throwable caught) {
Window.alert(caught.getMessage());
do a e t(caug t get essage());
}
});
PBJUG
Possibilidades Futuras
• Implementação de novas
funcionalidades
• Release 1.4 está aí...
PBJUG
Frameworks Existentes baseados em
GWT
• GWTx – Extensão da API emulada
• GWM – Gerenciador de Desktops
• GWings – Componentes Swing em GWT
• GWT-Widgets – Componentes Gráficos
• GWT Server Library – Integração com Spring
• GWT Tk – Componentes Gráficos
GWT-Tk
PBJUG
Referências e Exemplos
??
PBJUG
E agora?
?
•Mãos
Mã à obra!
b !