Google Web Toolkit: criando aplicações web usando a poderosa engine baseada na Java Virtual Machine
Apresenta a poderosa ferramenta GWT, que abstrai a linguagem JavaScript usando a linguagem Java, oferendo maior confiabilidade para aplicações que rodam no lado servidor
Toolkit (GWT) é um conjunto de ferramentas de desenvolvimento para construir e otimizar complexas aplicações web. GWT é usado por muitos produtos no Google, incluindo Google AdWords e Orkut. É open source, completamente livre, e usado por milhares de desenvolvedores no mundo. fonte: https://developers.google.com/web-toolkit/
Java bytecode para produzir código cliente e servidor ∙ Biblioteca nativa de componentes visuais ∙ Código JavaScript otimizado de acordo com o browser – Deferred binding ∙ Suporte JavaScript nativo - JSNI ∙ Suporte de chamada de procedimento remoto (RPC) ∙ Internacionalização i18n ∙ Inicialização sob demanda – Code Splitting ∙ Gerador integrado de código
Suporte parcial da Java Virtual Machine JavaScript não suporta aplicações concorrentes (Multithreading) JavaScript não suporta operações de I/O JavaScript não suporta acesso a banco de dados ∙ Por causa dessas restrições, a arquitetura do GWT foi desenhada de tal forma que determinados pacotes contivessem somente classes Java que pudessem ser compiladas para JavaScript Nota: https://developers.google.com/web-toolkit/doc/latest/RefJreEmulation para saber quais artefatos Java podem ser compilados para JavaSript
A partir da linha de comando, digite >> webAppCreator -out App br.com.app.AppEntryPoint App src/br/com/app/AppEntryPoint.gwt.xml src/br/com/app/client/GreetingService.java src/br/com/app/client/GreetingServiceAsync.java src/br/com/app/client/AppEntryPoint.java src/br/com/app/server/GretingServiceImpl.java src/br/com/app/shared/FieldVerifier.java war/WEB-INF/web.xml war/AppEntryPoint.css war/AppEntryPoint.html war/favicon.ico .classpath .project AppEntryPoint.launch README.txt build.xml Nota: para fins de exemplificação, foi gerada uma aplicação cujo nome é App. No entanto, sinta-se livre para escolher o nome que lhe convier
projeto Eclipse IDE >> webAppCreator -out App br.com.app.AppEntryPoint App src/br/com/app/AppEntryPoint.gwt.xml src/br/com/app/client/GreetingService.java src/br/com/app/client/GreetingServiceAsync.java src/br/com/app/client/AppEntryPoint.java src/br/com/app/server/GretingServiceImpl.java src/br/com/app/shared/FieldVerifier.java war/WEB-INF/web.xml war/AppEntryPoint.css war/AppEntryPoint.html war/favicon.ico .classpath .project AppEntryPoint.launch README.txt build.xml Nota: os arquivos .classpath e .project identificam sua aplicação como um projeto reconhecido pelo Eclipse IDE
encoding="UTF-8"?> <module rename-to='<MODULE_NAME>'> <inherits name='com.google.gwt.user.User'/> <inherits name='com.google.gwt.user.theme.clean.Clean'/> <entry-point class='br.com.app.client.AppEntryPoint'/> <source path='client'/> <source path='shared'/> </module> Gera apenas 1 arquivo para a sua aplicação <html> <head> ... <script src="<MODULE_NAME>/<MODULE_NAME>.nocache.js"></script> </head> </html> Nota: por padrão, o arquivo gerado pelo módulo GWT é armazenado no diretório cujo nome é o mesmo do módulo
o código da sua aplicação <?xml version="1.0" encoding="UTF-8"?> <module rename-to='<MODULE_NAME>'> <inherits name='com.google.gwt.user.User'/> <inherits name='com.google.gwt.user.theme.clean.Clean'/> <entry-point class='br.com.app.client.AppEntryPoint'/> <source path='client'/> <source path='shared'/> </module> public class AppEntryPoint implements EntryPoint { public void onModuleLoad() { Window.alert("Aqui, o código da sua aplicação é executado!!!"); } }
HTML public class HTMLEntryPoint implements EntryPoint { public void onModuleLoad() { Anchor.wrap(DOM.getElementById("eventoAnchor")).addClickHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { Window.alert("Formulário submetido"); } }); } }
GWT Widgets public class GWTWidgetEntryPoint implements EntryPoint { public void onModuleLoad() { final FormPanel form = new FormPanel(); final VerticalPanel panel = new VerticalPanel(); form.setWidget(panel); panel.add(new Label("Evento")); final TextBox eventoField = new TextBox(); eventoField.setName("evento"); panel.add(eventoField); … /** * Adicione o objeto form ao elemento da página cujo id é container */ RootPanel.get("container").add(form); } }
GWT Widgets Se você quiser, pode inserir HTML public class GWTWidgetEntryPoint implements EntryPoint { public void onModuleLoad() { final FormPanel form = new FormPanel(); final VerticalPanel panel = new VerticalPanel(); form.setWidget(panel); panel.add(new HTML("<h1>Cadastro de eventos</h1>")); … RootPanel.get("container").add(form); } }
excelente plugin do GWT para o Eclipse IDE para melhorar consideravelmente a produtividade Para informações sobre a instalação, acesse: https://developers.google.com/web-toolkit/download ∙ Lembre-se que o compilador Java – JavaScript só funcionará se os artefatos Java (pacotes, classes, métodos) forem suportados pelo JavaScript. Caso contrário, o compilador gerará erros informando que não foi possível realizar a conversão ∙ Como definido pela própria home do GWT, este é um conjunto de ferramentas. Aqui, o principal objetivo foi explorar o máximo de informação para que você use com sucesso a ferramenta. Caso queira aprofundar-se ainda mais, não deixe de explorar o conteúdo do site do GWT, acessível a partir da URL https://developers.google.com/web-toolkit