CURSO SUPERIOR DE TECNOLOGIA EM ANLISE E DESENVOLVIMENTO DE
SISTEMAS
RODOLFO SEFFRIN
COMPARATIVO ENTRE OS FRAMEWORKS DE DESENVOLVIMENTO WEB VAADIN E GWT UTILIZANDO A BIBLIOTECA SMARTGWT.
TRABALHO DE DIPLOMAO
MEDIANEIRA 2013
RODOLFO SEFFRIN
COMPARATIVO ENTRE OS FRAMEWORKS DE DESENVOLVIMENTO WEB VAADIN E UTILIZANDO A BIBLIOTECA SMARTGWT.
Trabalho de Diplomao apresentado disciplina de Trabalho de Diplomao, do Curso Superior de Tecnologia em Anlise e Desenvolvimento de Sistemas COADS da Universidade Tecnolgica Federal do Paran UTFPR, como requisito parcial para obteno do ttulo de Tecnlogo.
Orientador: Prof Fernando Schtz, M.Sc.
MEDIANEIRA 2013
Ministrio da Educao Universidade Tecnolgica Federal do Paran Diretoria de Graduao e Educao Profissional Curso Superior de Tecnologia em Anlise e Desenvolvimento de Sistemas
TERMO DE APROVAO
COMPARATIVO ENTRE OS FRAMEWORKS DE DESENVOLVIMENTO WEB VAADIN E GWT UTILIZANDO A BIBLIOTECA SMARTGWT. Por Rodolfo Seffrin
Este Trabalho de Diplomao (TD) foi apresentado s 08:30 h do dia 27 de maro de 2013 como requisito parcial para a obteno do ttulo de Tecnlogo no Curso Superior de Tecnologia em Anlise e Desenvolvimento de Sistemas, da Universidade Tecnolgica Federal do Paran, Cmpus Medianeira. Os acadmicos foram arguidos pela Banca Examinadora composta pelos professores abaixo assinados. Aps deliberao, a Banca Examinadora considerou o trabalho aprovado com louvor e mrito.
Prof. Me. Fernando Schtz UTFPR Cmpus Medianeira (Orientador)
Prof. Me. Everton Coimbra de Araujo UTFPR Cmpus Medianeira (Convidado)
Prof. Me. Juliano Rodrigo Lamb UTFPR Cmpus Medianeira (Convidado)
Prof. Me. Juliano Rodrigo Lamb UTFPR Cmpus Medianeira (Responsvel pelas atividades de TCC)
RESUMO
SEFFRIN, Rodolfo. Comparativo entre os frameworks de desenvolvimento Web Vaadin e GWT Utilizando a biblioteca SmartGWT. Trabalho de Diplomao do Curso Superior de Tecnologia em Anlise e Desenvolvimento de Sistemas. Universidade Tecnolgica Federal do Paran. Medianeira, 2012.
Com o crescimento da Internet nos ltimos anos e aplicativos Web cada vez mais robustos, surgiu necessidade da utilizao de frameworks que auxiliam no desenvolvimento de aplicaes Web RIA (Rich Internet Application). Assim, o presente trabalho realizou uma anlise comparativa entre dois frameworks RIA de desenvolvimento Web: Vaadin e GWT (Google Web Toolkit). Com GWT foi utilizado a biblioteca de componentes SmartGWT para auxilio na construo da interface grfica. Tanto Vaadin como GWT utilizam como elemento principal para desenvolvimento da aplicao a linguagem Java, e se assemelham muito com o estilo de desenvolvimento desktop. Para demonstrar o funcionamento de ambos foi desenvolvida uma aplicao para acompanhamento no crescimento de uma criana, em que o ciclo inicia no seu nascimento, terminando quando sua fase de crescimento inicial estiver concluda. Os resultados da avaliao concluram que o Framework Vaadin o mais indicado para a utilizao, devido a sua arquitetura de programao ser produtiva e ter componentes agradveis para o usurio final.
Palavras-chaves: RIA, Aplicaes Webs, Java.
RESUMO EM LINGUA ESTRANGEIRA
SEFFRIN, Rodolfo. Comparative between Web frameworks Vaadin and GWT Using The Library SmartGWT. Trabalho de Concluso do Curso Superior de Tecnologia em Anlise e Desenvolvimento de Sistemas. Universidade Tecnolgica Federal do Paran. Medianeira, 2012.
With the growth of the Internet in recent years, Web applications and increasingly robust, the need arose the use of frameworks that help in developing web applications RIA (Rich Internet Application)., This study conducted a comparative analysis between two frameworks RIA Web Development: Vaadin and GWT (Google Web Toolkit). With was used SmartGWT component library for assistance in building the graphical interface. Vaadin uses GWT as far as the main element for application development language Java, and closely resemble the style of desktop development. To demonstrate the operation of both an application was developed for monitoring the growth of a child, where the cycle begins at birth, when ending its initial growth phase is complete. The evaluation results indicated that the Vaadin Framework is the most appropriate for use, due to its programming architecture components to be productive and have enjoyable for the end user.
Keywords: RIA, Applications Webs, Java.
LISTAS DE FIGURAS
Figura 1 - Modelo de interao de uma aplicao Web tpica .................................................. 16 Figura 2 - Modelo de aplicao Web utilizando AJAX ............................................................ 16 Figura 3 - Arquitetura de uma aplicao Web baseada em Frameworks ................................. 18 Figura 4 - Framework Horizontal ............................................................................................. 20 Figura 5 - Framework Vertical ................................................................................................. 20 Figura 6 - Arquitetura Geral do Vaadin.................................................................................... 22 Figura 7 - Arquitetura Vaadin .................................................................................................. 24 Figura 9 - Classe Exemplo ....................................................................................................... 26 Figura 10 - Aplicao sendo executada .................................................................................... 27 Figura 11 - Web.xml Vaadin .................................................................................................... 27 Figura 12 - Sada gerada pelo compilador ................................................................................ 30 Figura 13 - Estrutura Projeto GWT .......................................................................................... 33 Figura 14 - Mdulo GWT ......................................................................................................... 34 Figura 15 - Arquivo HTML ...................................................................................................... 35 Figura 16 - Classe EntryPoint ................................................................................................... 36 Figura 17 - Chamada Remota ................................................................................................... 37 Figura 18 - Interface Assncrona .............................................................................................. 38 Figura 19 - Interface no Lado do Servidor ............................................................................... 39 Figura 20 - Diagrama de Casos de Uso .................................................................................... 42 Figura 21 - Digrama de Sequncia Cadastrar Consulta ............................................................ 46 Figura 22 - Diagrama de Sequncia Editar Consulta ............................................................... 47 Figura 23 - Diagrama de Sequncia Excluir Consulta ............................................................. 47 Figura 24 - Diagrama de Classes .............................................................................................. 48 Figura 25 - Diagrama de Contedo .......................................................................................... 49 Figura 26 - NSU da aplicao................................................................................................... 50 Figura 27 - Wireframe Aplicao ............................................................................................. 51 Figura 28 - Estrutura Aplicao GWT ao lado esquerdo, ao lado direito estrutura da aplicao no Vaadin .................................................................................................................................. 52 Figura 29 - BeanItem Classe Crianca ................................................................................... 54 Figura 30 - Formulrio de cadastro Criana ............................................................................. 54 Figura 31 - Formulrio Vaadin ................................................................................................. 55 Figura 32 - Formulrio SmartGWT .......................................................................................... 56 Figura 33 - Formulrio SmartGWT .......................................................................................... 57 Figura 34 - BeanItemContainer Vaadin.................................................................................... 58 Figura 35 - Formatando Campo Data Vaadin .......................................................................... 58 Figura 36 - Tabela de Consulta ................................................................................................ 59 Figura 37 - Exemplo Tabela Vaadin......................................................................................... 59 Figura 38 - Classe ListGridRecord ........................................................................................... 60 Figura 39 - Tabela de Consulta SmartGWT ............................................................................. 60 Figura 40 - Tabela SmartGWT ................................................................................................. 61 Figura 41 - Validao Usurio.................................................................................................. 61
Figura 42 - Validando e Customizando Campos Vaadin ......................................................... 62 Figura 43 - Validao Cadastro de Usurio.............................................................................. 63 Figura 44 - Validao SmartGWT............................................................................................ 64 Figura 45 - Validando Formulrio SmartGWT ........................................................................ 65 Figura 46 - Grfico Altura Vaadin ........................................................................................... 66 Figura 47 - Exemplo Grfico Vaadin ....................................................................................... 66 Figura 48 Exemplo de Cdigo SmartGWT ........................................................................... 67 Figura 49 - Grfico Altura SmartGWT .................................................................................... 67 Figura 50 - Classe Application Vaadin..................................................................................... 68 Figura 51 - Interface Sncrona .................................................................................................. 68 Figura 52 - Classe GreetingServiceImpl .................................................................................. 69 Figura 53 - Interface Assncrona .............................................................................................. 70 Figura 54 - Instalando Vaadin .................................................................................................. 78 Figura 55 - Selecionando o pluguin .......................................................................................... 78 Figura 56 - Criando um Projeto Vaadin ................................................................................... 78 Figura 57 - Configurao Projeto ............................................................................................. 79 Figura 58 - Web Module ........................................................................................................... 80 Figura 59 - Configurao Especfica ........................................................................................ 81 Figura 60 - Instalando GWT ..................................................................................................... 82 Figura 61 - Selecionando pluguin GWT................................................................................... 82 Figura 62 - Criando um Projeto GWT ...................................................................................... 83 Figura 63 - Configura a Aplicao GWT ................................................................................. 84 Figura 64 - Aplicao de Exemplo ........................................................................................... 85
LISTA DE QUADROS Quadro 1 - Manter Usurio ....................................................................................................... 43 Quadro 2 - Manter Criana ....................................................................................................... 44 Quadro 3 - Manter Consulta ..................................................................................................... 45 Quadro 4 - Gerar Grfico Peso ................................................................................................. 45 Quadro 5 - Gerar Grfico Altura .............................................................................................. 46 Quadro 6 - Descrio dos Valores na Criao de um Projeto Vaadin ...................................... 79 Quadro 7 - Descrio dos Valores Web Module ...................................................................... 80 Quadro 8 - Configurao Especfica ........................................................................................ 81 Quadro 9 - Configurando a aplicao GWT ............................................................................. 84
SUMRIO
1 INTRODUO .................................................................................................................... 10 1.1 OBJETIVO GERAL ........................................................................................................... 11 1.2 OBJETIVOS ESPECFICOS ............................................................................................. 12 1.3 JUSTIFICATIVA ............................................................................................................... 12 1.4 ESTRUTURA DO TRABALHO ....................................................................................... 13 2 REFERENCIAL TERICO .............................................................................................. 14 2.1 APLICAES WEB .......................................................................................................... 14 2.2 FRAMEWORKS ................................................................................................................ 17 2.2.1 Definio .......................................................................................................................... 17 2.2.2 Construo ....................................................................................................................... 18 2.2.3 Classificao .................................................................................................................... 19 2.2.4 Vantagens e Desvantagens da Utilizao de Frameworks .............................................. 21 2.3 ESCOLHA DOS FRAMEWORKS ..................................................................................... 21 2.4 FRAMEWORK VAADIN .................................................................................................. 22 2.4.1 Arquitetura do Vaadin ..................................................................................................... 23 2.4.2 Criao de um Projeto que Utilize Vaadin ...................................................................... 26 2.4.3 Estrutura do Projeto ......................................................................................................... 26 2.5 FRAMEWORK GWT (GOOGLE WEB TOOLKIT) .......................................................... 28 2.5.1 Arquitetura GWT ............................................................................................................. 29 2.5.2 Criao de um Projeto que Utilize GWT ......................................................................... 32 2.5.3 Estrutura do Projeto ......................................................................................................... 32 2.5.4 SmartGWT ....................................................................................................................... 39 3 MATERIAL E MTODOS ................................................................................................ 41 3.1 DESCRIO DO PROJETO ............................................................................................. 41 3.2 REQUISITOS FUNCIONAIS ............................................................................................ 41 3.3 CASOS DE USO ................................................................................................................ 42 3.3.1 DESCRIO DOS CASOS DE USO ............................................................................ 42 3.4 DIAGRAMA DE SEQUNCIA ........................................................................................ 46 3.5 DIAGRAMA DE CLASSES .............................................................................................. 47 3.6 DIAGRAMA DE CONTEDO (RVORE DE DADOS) ................................................ 48 3.7 NSU .................................................................................................................................... 49
3.8 WIREFRAME .................................................................................................................... 50 3.9 ESTRUTURA DA APLICAO ...................................................................................... 51 4 RESULTADOS E DISCUSSES ....................................................................................... 53 4.1 FATORES ANLISADOS PARA O COMPARATIVO .................................................. 53 4.2 DESENVOLVIMENTO DO FORMULRIO ................................................................... 53 4.2.1 Vaadin .............................................................................................................................. 54 4.2.2 SmartGWT ....................................................................................................................... 55 4.3 DESENVOLVIMENTO DE TABELA .............................................................................. 57 4.3.1 Vaadin .............................................................................................................................. 57 4.3.2 SmartGWT ....................................................................................................................... 59 4.4 VALIDAO DE DADOS ............................................................................................... 61 4.4.1 Vaadin .............................................................................................................................. 61 4.4.2 SmartGWT ....................................................................................................................... 63 4.5 CRIAO DE GRFICO ................................................................................................. 65 4.5.1 Vaadin .............................................................................................................................. 65 4.5.2 SmartGWT ....................................................................................................................... 66 4.6 DIFERENAS ENTRE VAADIN E GWT ....................................................................... 67 4.7 LICENA DOS FRAMEWORKS ..................................................................................... 70 4.8 DOCUMENTAO E ATUALIZAES ....................................................................... 71 4.9 COMPONENTES DISPONIVEIS ..................................................................................... 71 5 CONSIDERAES FINAIS .............................................................................................. 73 5.1 CONCLUSO .................................................................................................................... 73 5.2 TRABALHOS FUTUROS/CONTINUAO DO TRABALHO ..................................... 73 6 REFERNCIAS BIBLIOGRFICAS............................................................................... 75 10
1 INTRODUO O crescimento da Web nos ltimos anos criou a necessidade de servios mais rpidos e instantneos, alm disso, as aplicaes desenvolvidas esto se tornando mais complexas e geis devido as suas novas caractersticas de negcio. Com este crescimento surgiu o conceito Web 2.0. Segundo a definio de O'Reilly (2004), Web 2.0 Web 2.0 a mudana para uma Internet como plataforma, e um entendimento das regras para obter sucesso nesta nova plataforma. Entre outras, a regra mais importante desenvolver aplicativos que aproveitem os efeitos de rede para se tornarem melhores quanto mais so usados pelas pessoas, aproveitando a inteligncia coletiva. E uma das principais caractersticas desta nova mudana que as paginas Webs passaram a se tornar interativas, e com a evoluo dos equipamentos de acesso a Internet, torna-se possvel o processamento de certas informaes no prprio cliente, fazendo com que a comunicao de requisio e resposta seja assncrona, ou seja, no mais necessrio atualizar toda a aplicao para refletir uma pequena atualizao na pgina. (GONALVES e VAHL, 2010) Por Meio disto, as aplicaes Webs passaram a ter as mesmas funcionalidades que as desktop. Surge ento o conceito de RIA (Rich Internet Application), que so Aplicaes Ricas para Internet que descreve um novo conceito de interface para as aplicaes Web. Macromedia, (2003), descreve algumas das principais caractersticas do termo RIA: Alta performance em tempo de execuo, contedo e comunicao, fazendo com que o contedo se torne mais dinmico, pois a comunicao entre o cliente e o servidor acontece de forma assncrona, sem precisar atualizar toda a pgina para se obter uma atualizao. Integrao, em um mesmo ambiente de interface, comunicao e contedo. Em aplicaes Web 1.0 era necessrio baixar o contedo para a mquina cliente, sendo que na Web 2.0 executado na prpria pgina HTML, utilizando plugins 1 para o navegador. Multiplataforma: as aplicaes tem que ser desenvolvidas para suportar interfaces de celulares, podcasts e smartphones, por exemplo.
1 Segundo PRADA, (2008) plug-in todo programa, ferramenta ou extenso que se encaixa a outro programa principal para adicionar mais funes e recursos a ele. 11
Assim, muitos scripts 2 foram desenvolvidos para serem executados no lado cliente, no intuito de melhorar o processamento e deixar mais geis os sistemas Webs. Outro fator que facilitou no desenvolvimento de aplicaes Webs RIA, por utilizarem o melhor do conceito da WEB 2.0, foram os frameworks. (GONALVES e VAHL, 2010) Existem inmeros frameworks para serem usados na criao de aplicaes Webs, a maioria com o objetivo de abstrair trabalhos repetidos, como a criao de componentes e desenvolvimento da parte grfica da aplicao. Outro exemplo a facilidade de aplicar padres de projeto, pois o framework j oferece uma estrutura pr-desenvolvida para isso. Para a linguagem Java existem diversos Frameworks com este intuito, alguns exemplos so: JSF (Java Server Faces), PrimeFaces, RichFaces, VRaptor, Vaadin, GWT (Google Web Toolkit). A diferena entre eles o modo como trabalham. Por exemplo, Vaadin e GWT utilizam um conceito diferente que os demais Frameworks citados, sua arquitetura de programao baseada apenas na linguagem Java, no utilizam a maneira tradicional de desenvolvimento de aplicaes Webs, se assemelham mais ao estilo de desenvolvimento Desktop. O framework Vaadin j vem com uma estrutura diferenciada de componentes para serem utilizados no desenvolvimento da aplicao. GWT oferece varias extenses para serem usadas, como: SmartGWT, GXT, GWT-EXT, todas com o mesmo objetivo oferecer componentes para integrar na aplicao. No presente trabalho foi utilizado a biblioteca SmartGWT que uma estrutura baseada em GWT que oferece diversos recursos para facilitar e aperfeioar o processo de desenvolvimento. Assim esse trabalho tem o intuito de fazer uma anlise comparativa entre os frameworks Vaadin e GWT. Nesta comparao pretende-se destacar os principais elemento que diferenciam o desenvolvimento da aplicao em um e outro framework, abstraindo assim o melhor de cada um.
1.1 OBJETIVO GERAL Comparar os frameworks Vaadin e GWT (Google Web Toolkit), utilizando como estudo experimental uma aplicao para acompanhar o desenvolvimento/crescimento de uma criana.
2 Terra, (2007) Script uma lista de comandos que podem ser executados sem interao do usurio; 12
1.2 OBJETIVOS ESPECFICOS Realizar um estudo bibliogrfico das tecnologias de desenvolvimento para Web, frameworks e linguagens a serem utilizadas; Modelar e desenvolver uma aplicao com o objetivo de controlar todo o histrico de desenvolvimento de uma criana, com os frameworks Vaadin e GWT (Google Web Toolkit); Elaborar o comparativo com as vantagens e desvantagens da utilizao desses frameworks, por intermdio de testes na aplicao e demonstrativo de cdigos; 1.3 JUSTIFICATIVA Para acompanhar a evoluo dos sistemas Web, diversas tcnicas e tecnologias foram desenvolvidas nos ltimos anos. Alguns exemplos so: HTML verso 5, XHTML, CSS verso 3, XPath, Javascript, JQuery, JSF, JSP, Facelets, JSON, Ajax. Portanto o desenvolvedor tem acesso a diversos processos de desenvolvimento, porm precisa realizar, muitas vezes, o trabalho de vrios profissionais, pois envolve implementao de linguagens e tecnologias diferentes. Este trabalho pretende analisar quais so as vantagens de utilizar um framework com conceito diferente no desenvolvimento de uma aplicao Web. Vaadin e GWT se assemelham na maneira como trabalham, utilizam apenas a linguagem Java para a construo de toda a aplicao, por este motivo foram escolhidos para a comparao. E como parmetro para o comparativo ser desenvolvida uma aplicao que tem o intuito de controlar o desenvolvimento de uma criana. Nesta aplicao o mdico informara para o sistema o que foi abstrado da consulta, assim sendo ter o controle de todas as informaes das consultas que foram realizadas pela criana, no qual poder observar como foi sua evoluo, ter a opo de gerar grficos para saber como foi seu desenvolvimento no seu nascimento at h ultima consulta realizada, podendo ento ter informaes importantes durante o perodo de consultas que a criana realizou. 13
1.4 ESTRUTURA DO TRABALHO O presente trabalho est dividido em cinco captulos: No primeiro captulo ser abordada uma introduo e justificativa sobre o assunto do trabalho proposto, alm de serem especificados os objetivos especficos e gerais do projeto. No segundo capitulo abordado o assunto por meio de um referencial terico. No terceiro capitulo feita a documentao da aplicao a ser desenvolvida, como: requisitos funcionais, diagramas e estrutura do trabalho. No quarto capitulo ser abordado comparao entre os dois frameworks estudados. O quinto capitulo contm as consideraes finais do trabalho.
14
2 REFERENCIAL TERICO Neste captulo ser abordado o referencial terico das tecnologias utilizadas no trabalho. 2.1 APLICAES WEB Inicialmente, a Internet era uma plataforma para que os usurios pudessem compartilhar informaes. Por exemplo, publicar documentos e por meio de hiperlinks 3 fazer referncia cruzada entre eles. A partir do momento que a Web foi se popularizando, os usurios comearam a ter softwares em suas mquinas que permitiam interagir com toda esta estrutura. (SMEETS, BONESS e BANKRAS, 2009) Com sua popularizao, a Web deixou de apenas usar documentos HTML estticos, e permitiu que fossem disponibilizados documentos dinmicos, assim sendo nasceu o conceito de aplicao Web. Uma Aplicao Web a que est disponvel em um servidor central e oferece servios para qualquer pessoa que tenha acesso Internet. (SMEETS, BONESS e BANKRAS, 2009) Com a Internet disponibilizando servios robustos, as aplicaes passaram a terem a necessidade de desenvolver aplicaes RIA (Rich Internet Application). A razo disso, o fato de dependerem de interaes assncronas com o servidor. Por exemplo, uma aplicao do tipo planilha para Web se torna um problema se cada vez que o usurio modificar dados em uma clula tenha que carregar toda a aplicao para refletir o calculo efetuado. Com isto a Internet ganhou um novo termo, chamado de WEB 2.0. (SMEETS, BONESS e BANKRAS, 2009) Segundo GONALVES E VAHL (2010) apud O'Relly, algumas caractersticas que marcam os aplicativos na WEB 2.0 podem ser tidas como: Web Como Plataforma: A WEB passou a ser vista como uma plataforma e no apenas como meio de comunicao cliente e servidor. Ou seja, qualquer
3 Segundo Google (2010) Um hiperlink um link para uma publicao. Quando clica no link, o destino vinculado aberto. O destino geralmente outra pgina da Web, mas tambm pode ser uma imagem, um endereo de email ou um programa. O hiperlink propriamente dito pode ser um texto, uma imagem ou uma forma. Hiperlink ou hiperligao qualquer elemento de um hiper texto (pginas web) que faam referncia a outro texto ou a outra parte deste texto. Ou seja, qualquer rea clicvel de uma pgina web um hiperlink. 15
equipamento que tenha acesso a Internet pode acessar uma aplicao WEB, independente de sistema operacional; Uso da Inteligncia Coletiva: Os Usurios passaram a fazer parte das aplicaes Webs. Um exemplo disso a Wikipdia, uma enciclopdia online onde qualquer pessoa pode colocar e editar algum contedo; Beta perptuo: Os softwares passam a ser disponibilizados como servios e no mais como verses. Ou seja, no e mais preciso instalar um software na mquina local. Basta acessar algum servio na Internet; Modelo de programao mais leve: As aplicaes devem ser simples de ser utilizadas; Experincias ricas do usurio: Com a evoluo dos equipamentos de acesso a Internet, parte do processamento das aplicaes pode ser feito no prprio cliente. O modelo de comunicao das aplicaes passou a ser assncrona, no sendo necessrio atualizar toda a aplicao para refletir uma pequena atualizao. As pginas se assemelham com as aplicaes Desktop; Uma das tecnologias que contriburam para que o modelo de comunicao cliente e servidor passassem a ser assncrono, com maior interao entre o usurio e a pgina, tornado as aplicaes Webs parecidas com as Desktop, foi o conjunto de tecnologias AJAX (Asynchronous Javascript and XML). Para CAELUM (2011) AJAX um conjunto de tcnicas de desenvolvimento Web para executar tarefas do lado do cliente, por exemplo, modificar pedaos de uma pgina sem ter que carregar ela inteira. Na verdade o mecanismo muito simples. De acordo com alguma ao um Javascript envia uma requisio ao servidor como se fosse em background. Na resposta dessa requisio vem um XML que o Javascript processa e modifica a pgina segundo essa resposta. A diferena entre as aplicaes AJAX com as que no fazem o seu uso, pode ser ilustrada na Figura 1, o cliente faz uma requisio, o servidor processa essa requisio e devolve o resultado para a pgina, sendo ento disponibilizada para o usurio. O problema disso que o usurio s pode fazer um nmero limitado de interaes com a pgina, ou seja, ele ter que esperar um tempo at o servidor devolver a resposta, nesse tempo, o usurio no pode interagir com a aplicao, este o chamado modelo sncrono de interao com a pgina. 16
Figura 1 - Modelo de interao de uma aplicao Web tpica Fonte: (SMEETS, BONESS e BANKRAS, 2009) Dependendo do tipo da aplicao, utilizar este modelo de programao invivel. nesse sentido que entra o modelo de programao assncrono, permitindo que o usurio possa interagir com a aplicao de maneira agradvel, enquanto alguma ao feita anteriormente processada no servidor, este modelo pode ser visto na Figura 2.
Figura 2 - Modelo de aplicao Web utilizando AJAX Fonte: (SMEETS, BONESS e BANKRAS, 2009) Com este novo modelo de programao foi quebrado o modelo clssico da Web de solicitao da pgina por HTTP pelo HTML. A maneira que feito isso com o AJAX engine, que uma camada de interao entre o usurio e o servidor, isso tudo roda dentro do 17
navegador e gerencia as aes ao servidor enquanto realiza a manipulao dos resultados, a grande vantagem disso tudo que o usurio pode continuar interagindo com a aplicao enquanto o servidor processa as informaes. (SMEETS, BONESS e BANKRAS, 2009) 2.2 FRAMEWORKS Um dos pontos principais da Engenharia de Software o reuso, pois atravs do uso desta tcnica adquirida maior qualidade e reduo do esforo no desenvolvimento (Gimenes & Huzita, 2005). Pelo fato da orientao a objetos fazer com que as classes possam ser reutilizadas, assim como os mtodos por meio de herana e polimorfismo (Lundberg & Mattsson 1996). Componentes de softwares fazem com que unidades reutilizveis sejam definidas para oferecer servios atravs de interfaces bem definidas (Gimenes & Huzita, 2005). Alm da reutilizao, a tecnologia de frameworks torna possvel que os produtos sejam gerados atravs de uma estrutura que utiliza os conceitos mais conhecidos da famlia de aplicaes (Pinto, 2000). Neste capitulo sero contextualizadas as principais definies de frameworks encontrados na literatura. Tambm ser abordado todo o processo de construo de um framework e a classificao em que so divididos, alm das vantagens e desvantagens da sua utilizao. 2.2.1 Definio A necessidade de desenvolver aplicaes cada vez mais robustas e a exigncia de produtos com qualidade e confiana, fez com que o processo de desenvolvimento de software passou a utilizar estruturas j desenvolvidas, os frameworks. O objetivo principal de um framework auxiliar em todo o processo de desenvolvimento de um software, fazendo com que as aplicaes sejam produzidas de forma mais rpida e gil. Na Figura 3, um exemplo tpico da arquitetura de um framework para aplicaes Web. (MOTA, 2010) 18
Figura 3 - Arquitetura de uma aplicao Web baseada em Frameworks Fonte: (MOTA, 2010) Segundo Buschmann et al. (1996), Preesmann (1995) e Pinto (2000): um framework definido como um software parcialmente completo projetado para ser instanciado. O framework define uma arquitetura para uma famlia de subsistemas e oferece os construtores bsicos para cri-los. Tambm so explicitados os lugares ou pontos de extenso (hot-spots) nos quais adaptaes do cdigo para um funcionamento especfico de certos mdulos devem ser feitas. Para Johnson (1991) e Gamma et al (1995), um framework um conjunto de objetos que colaboram com o objetivo de atender a um conjunto de responsabilidades para uma aplicao especfica ou um domnio de aplicao. J Segundo Mattsson (1996, 2000), um framework uma arquitetura desenvolvida com o objetivo de atingir a mxima reutilizao, representada como um conjunto de classes abstratas e concretas, com grande potencial de especializao. 2.2.2 Construo A construo de um framework feita a partir da observao de um problema ocorrido durante o desenvolvimento de uma aplicao, e que este problema se repete vrias vezes e a soluo utilizada para resolv-lo pode futuramente se tornar um framework, tornando produtivo o desenvolvimento quando se deparado com esta mesma situao. A construo de um framework envolve trs passos: anlise das funcionalidades comuns, definio dos hot-spots e projeto do framework. Segundo Fiorini (2001 apud Souza, 2004, p. 7), o primeiro passo realizar uma observao das aplicaes que j foram ou esto sendo desenvolvidas e que tiveram alguma situao em comum, a partir desta anlise verificar quais componentes so reusveis. Utilizando o conceito de programao orientada a objetos, criam-se classes abstratas para a utilizao em alguma aplicao que tiver o mesmo problema. (SOUZA, 2004). 19
Aps realizar a anlise, o prximo passo definir o hot-spots. Depois de saber quais pontos sero fixos, preciso identificar as situaes que variam em todo o contexto da aplicao, e que vo precisar de adaptaes para ser utilizada. (SOUZA, 2004). O ultimo passo para a construo do framework o projeto. Nesta fase, so amarradas as atividades de todos os passos realizados anteriormente, procurando aplicar padres de projeto para que o produto se torne reusvel e cumpra seu objetivo; nesta etapa tambm so feitas as correes de determinados problemas e remoo de componentes no utilizados, alm de modificar alguns componentes para terem novas funcionalidades. Estas observaes surgem a partir do uso do framework em vrios projetos. (SOUZA, 2004). Segundo Johnson (1992 apud Souza 2004, p , um framework deve ser uma soluo reusvel, estvel e possuir uma boa documentao. Caso essa documentao no esteja presente, corre-se o risco de o framework nunca ser usado. A documentao deve ser feita com o intuito de facilitar a aplicao do framework em outros projetos, sendo que alguns aspectos que a documentao deve possuir so: Propsito: Define para que serve e quais os problemas o framework soluciona; Utilizao: Descreve como construir uma aplicao utilizando os componentes j prontos; Detalhes: Define como os objetos participantes se relacionam. Depois de documentado o framework j est pronto para ser utilizado por desenvolvedores que se depararem com o mesmo problema. 2.2.3 Classificao Segundo Sauv (2004 apud Souza 2004), existem trs classificaes para frameworks: Middleware: comumente utilizado em sistemas distribudos, tambm prov a integrao entre sistemas. Suporte: Auxilia no desenvolvimento da infraestrutura da aplicao, no resolvem o problema por completo. So chamados de frameworks Horizontais, a Figura 4, demonstra como so esses tipos de frameworks, nota-se que existem uma pequena parte disponvel, e restante da aplicao deve ser implementada. 20
Figura 4 - Framework Horizontal Fonte: (UFCG, 2010) Aplicao: voltado para aplicaes, seu objetivo principal construir aplicaes para usurios finais. So chamados de frameworks Verticais, a Figura 5 representa a composio deste tipo de framework. Nota-se que grande parte da aplicao j est construda, e que apenas uma pequena parte tem que ser implementada, exemplos desses tipos de frameworks so: Editores de desenho estruturado, frameworks para jogos e monitorao de riscos financeiros.
Figura 5 - Framework Vertical Fonte: (UFCG, 2010)
A Figura 4 ilustra a arquitetura dos frameworks que sero comparados neste trabalho, como pode ser visto uma pequena parte est pronta para ser utilizado, o restante preciso ser desenvolvido. 21
2.2.4 Vantagens e Desvantagens da Utilizaes de Frameworks As vantagens da utilizao de um Framework, de acordo com SOUZA, (2004) so: Ganho de tempo no desenvolvimento do projeto, pois j existe uma estrutura semi pronta, e vrias funcionalidades j existem; Conforme mais pessoas vo utilizando, melhor fica o funcionamento do Framework, pelo fato de possveis problemas j serem sido descobertos e arrumados, alm de adicionado novas funcionalidades; Acaba sendo necessrio implementar o que realmente preciso, evitando a codificao de toda a aplicao, pois usado os componentes existentes; Como j existe uma estrutura pronta e testada, a probabilidade de erros no cdigo bem menor. Por outro lado, a utilizao de um Framework tem suas desvantagens, de acordo com SOUZA, (2004) so: Requer pessoas especializadas: isso acarreta que a equipe faa treinamentos para entendimento do produto, aumentando o prazo para trmino do projeto; A depurao dos programas mais complicada: Se no a disponibilidade de acesso ao cdigo-fonte, fica difcil resolver possveis erros; Mudana no foco do desenvolvimento: Os desenvolvedores passam a ter que entender ideias que no foram proposta pela sua equipe de desenvolvimento; Implementao em linguagem especifica: Como so implementados em uma linguagem, perde a portabilidade de poder utilizar outras linguagens em conjunto com o framework; 2.3 ESCOLHA DOS FRAMEWORKS Para a realizao do estudo comparativo, foram escolhidos os frameworks Vaadin e GWT (Google Web Toolkit), por possurem um estilo de programao muito parecido com a programao para Desktop, e utilizarem a linguagem Java como elemento principal para o desenvolvimento. Vaadin um framework de desenvolvimento de aplicaes Web, que permite aos desenvolvedores criar interfaces de alta qualidade utilizando a linguagem Java. Fornece uma biblioteca pronta para utilizar seus componentes, e tambm permite a criao de novos 22
componentes. O objetivo principal a facilidade de uso, reutilizao, extensibilidade, e atender a necessidade de aplicaes coorporativas de grandes empresas. (VAADIN, 2012) O GWT um conjunto de ferramentas para desenvolvimento Web em Java, usado para o desenvolvimento de aplicativos RIA (Rich Internet Application). O objetivo principal do GWT fazer com que o desenvolvimento se torne mais produtivo, simples, com qualidade, diminuindo a incidncia de eventuais erros. O GWT possui um conjunto de componentes visuais rico, o desenvolvedor passa a no se preocupar com Javascript para utilizar Ajax, pois o cdigo feito em Java transformado em Javascript pelo GWT. (MAGALHES, 2009) 2.4 FRAMEWORK VAADIN O mecanismo central do framework Vaadin a biblioteca Java projetada para o desenvolvimento e manuteno de interface grfica de alta qualidade. Tendo como ideia principal de programao desenvolver interface Web muito parecida com desktop, seu modelo de desenvolvimento se baseia no estilo de programao Swing, SWT e AWT. (VAADIN, 2012) O Vaadin trabalha com a ideia de modelo de programao ao lado do servidor, ou seja, o gerenciamento da interface do usurio feita no navegador, e a comunicao Ajax ocorre entre o navegador e o servidor. Como Vaadin trabalha apenas com a linguagem Java, o desenvolvedor no precisa se preocupar com HTML ou Javascript, facilitando a depurao no desenvolvimento da aplicao. (VAADIN, 2012)
Figura 6 - Arquitetura Geral do Vaadin Fonte: (VAADIN, 2012) A Figura 6, ilustra a arquitetura bsica da aplicao Web Vaadin. Exemplificando, a interface da aplicao no Vaadin feita no Servidor e enviada para o cliente que responsvel pela criao dos widget 4 informados, ou seja, se for preciso mostrar uma lista
4 Componente utilizado na interface grfica. 23
contendo informaes de uma tabela em um Combo Box, o Vaadin cria esta lista no servidor e envia ao cliente. (VAADIN, 2012) Como no lado do cliente executado Javascript, no h necessidade de o navegador conter pluguins para aplicaes feitas com o Vaadin. Outro fator importante, que o Vaadin conta com o apoio do GWT, por utiliza-lo internamente ao lado do cliente, de modo que o desenvolvedor no precisa se preocupar com o suporte ao navegador. (VAADIN, 2012) Atrs do modelo de desenvolvimento ao lado do servidor, Vaadin faz o melhor uso do conjunto de tecnologias AJAX 5 (Asynchronous Javascript e XML), tcnicas que tornam possvel a criao de Rich Internet Applications (RIA), que transformam a aplicao interativa como uma feita para desktop. (VAADIN, 2012) O Framework Vaadin faz uso internamente do GWT (Google Web Toolkit) como mecanismo de exibio ao lado do cliente. No GWT a aplicao construda em Java, e compilada em Javascript, liberando a necessidade de o desenvolvedor ter conhecimento nessa linguagem. (VAADIN, 2012) A diferena entre o funcionamento do GWT e Vaadin est na forma de comunicao entre o cliente e servidor. No GWT feita uma chamada AJAX para a comunicao entre o cliente e o servidor, criado classes especificas para gerenciar este modelo de comunicao. No Vaadin, tambm a comunicao AJAX com o cliente, s que a interface do usurio construda no prprio servidor, ou seja, no existem classes que separam a lgica de programao cliente e servidor. 2.4.1 Arquitetura do Vaadin Vaadin consiste em uma aplicao Web API, contm uma variedade de componentes de interface para o usurio, temas para controlar a aparncia, e um modelo de dados que permite que os seus componentes de interface sejam ligados direto com os dados. (VAADIN, 2012). Uma aplicao que utiliza Vaadin executada como um servlet em um servidor Web Java, atendendo as solicitaes HTTP. O adaptador de terminal recebe requisies dos clientes atravs do servidor Web Java Servlet 6 API, e interpreta a eventos do usurio para uma
6 A tecnologia Java Servlet fornece aos desenvolvedores Web um mecanismo simples e consistente para estender funcinalidades de um Servidor Web. Um servlet pode ser quase considerado um applet que executado no servidor. (ORACLE, 2010) 24
sesso particular. As sesses so controladas por Cookies 7 . Os eventos esto associados com os componentes de interface e entregues para a aplicao, que os trata como listeners 8 . Se ocorrer alterao de algum componente no lado do servidor, o terminal de adaptador comunica o navegador que houve uma modificao, gerando uma resposta, aps isso o cliente recebe a resposta e realiza a alterao na pgina do navegador. (VAADIN, 2012)
Figura 7 - Arquitetura Vaadin Fonte: (VAADIN, 2012)
O nvel mais alto da aplicao consiste da classe que herda com.vaadin.Application. Ela cria os componentes de interface, recebe os eventos, e faz as alteraes nos componentes. As partes principais da arquitetura e suas funes demonstradas na Figura 7 so: User Interface Components: Consiste nos componentes de interface com o usurio criado pela aplicao, na imagem representado pelo UI Component.
7 Cookies so uma forma de armazenamento de dados no lado do cliente. (ORACLE, 2010) 25
Client-side Engine: Gerencia a renderizao do navegador usando Google Web Toolkit (GWT). Ele comunica a interao do usurio com a interface, utilizando o adaptador de terminal (Terminal Adaptater) com a User Interface Definition Language (UILD), que um sistema de comunicao baseado na linguagem JSON. As Comunicaes so feitas com solicitaes assncronas HTTP ou HTTPS. Terminal Adapter: Os componentes na interface do usurio no se processam automaticamente, precisam de um Terminal Adapter. Essa camada permite aos usurios utilizarem as aplicaes vaadin em qualquer navegador Web. Quando o usurio realiza alguma ao na pgina Web, esse evento repassado para o Terminal Adapter como solicitaes assncronas AJAX. O Terminal Adapter devolve os eventos que o usurio realizou para o componente, aps isso atualizada a pgina com as modificaes ocorridas. Themes: A interface do usurio faz a separao entre a apresentao e lgica. Enquanto a lgica da interface do usurio tratada como cdigo Java, a apresentao definida como temas CSS. Vaadin fornece alguns temas padres. Pode ser definidas folhas de estilo, modelos HTML que definem layouts personalizados e outros recursos, como imagens. UIDL: O Terminal Adapter quando invocado utiliza a linguagem User Interface Definition Language (UIDL). A Comunicao UIDL feita utilizando JSON (Javascript Object Notation), que um formato de intercmbio de dados leve que especialmente eficaz para comunicao AJAX. Events: Toda interao do usurio com a interface, so primeiramente processados no lado do cliente com Javascript, sendo ento passado para o Servidor HTTP, Terminal Adapter e para o componente na camada de aplicao. Data Model: Utilizando o Data Model os componentes de interface podem ser ligados diretamente com uma fonte de dados, sem a necessidade de um cdigo de controle para atualizar os dados, por exemplo, pode-se vincular um componente Table diretamente com uma resposta SQL.
8 um processo separado que executado no servidor. Ele recebe as requisies do cliente e gerencia o trfego dessas solicitaes no servidor. (ORACLE, 2010) 26
2.4.2 Criao de um Projeto que Utilize Vaadin O apndice A demonstra como instalar e criar um projeto no Vaadin, ser exemplificada passo a passo a criao, foi utilizado para este exemplo a IDE Eclipse SDK. 2.4.3 Estrutura do Projeto Depois de criado o projeto, necessrio efetuar a configurao das bibliotecas a serem utilizadas no desenvolvimento. Assim, deve-se configurar as bibliotecas do Vaadin no diretrio WebContent/WEB-INF/lib. Para exemplificar a criao do projeto, foi criado um esqueleto da classe de exemplo no diretrio src, e tambm foi criado o arquivo web.xml j configurado no diretrio WebContent/WEB-INF/Web.xml. A Figura 8 exemplifica a estrutura do projeto na IDE Eclipse.
Figura 8 - Estrutura da Aplicao O cdigo da classe de exemplo da aplicao apresentado na figura 9.
Figura 9 - Classe Exemplo 27
A primeira observao que toda aplicao Vaadin estende da classe Application. E cada instancia desta classe criada uma sesso com o usurio que invocou, no contexto da aplicao de exemplo, quando o usurio chamar a pagina de Meu primeiro exemplo, ser chamado o mtodo init e executado o que estiver implementado nele. Quando invocado o mtodo init ser mostrado o contedo da janela principal, que nesse exemplo tem o nome de mainWindow, uma aplicao Vaadin pode ter varias janelas, mais sempre ser redirecionada para a janela principal. Aps criar a janela, foi criado o componente Label com o texto Bem Vindo ao Vaadin, e adicionado na janela principal, quando executada a aplicao ser mostrada uma pgina conforme a Figura 10.
Figura 10 - Aplicao sendo executada A Figura 11 o exemplo do arquivo web.xml, que define o Vaadin Framework servlet, a classe de aplicao, e o mapeamento do servlet.
Figura 11 - Web.xml Vaadin 28
O arquivo Web.xml um componente padro em Java EE que descreve as funcionalidades e caractersticas da aplicao Web para o servidor. Na figura 11, o cdigo da linha 14 responsvel pelo gerenciamento da implantao da aplicao, pois a classe da aplicao especificada informando seu nome para o servlet, o servlet ento ligado a uma URL em um caminho padro para servlets Java. Portanto, o arquivo Web.xml um descritor que informa para o servidor como ele deve gerenciar a aplicao Web, sendo obrigatrio em qualquer aplicao Vaadin 2.5 FRAMEWORK GWT (GOOGLE WEB TOOLKIT) O GWT um framework de cdigo aberto, com foco no desenvolvimento de aplicaes RIAs para desenvolvedores Java. Estas aplicaes so muito parecidas com as desenvolvidas em desktop, normalmente so escritas em Javascript. Mas o Javascript no nem um pouco parecido com a linguagem Java, portanto, seu modelo e pratica de desenvolvimento diferente. (SMEETS, BONESS e BANKRAS, 2009). Entretanto, o GWT faz com que seja desenvolvida aplicaes Javascript em Java. Isto realizado pelo compilador de Java para Javascript. Este compilador tem o trabalho de fazer com que todo o cdigo desenvolvido em Java seja traduzido para Javascript, com isso, o GWT consegue lidar com a quase todos os quirks 9 dos navegadores, permitindo que o desenvolvedor se concentre apenas com a linguagem Java, e no perdendo tempo codificando para diferentes tipos de navegadores. (SMEETS, BONESS e BANKRAS, 2009). Segundo (SMEETS, BONESS e BANKRAS, 2009), existem algumas consideraes gerais antes de iniciar o desenvolvimento com GWT, so: No indexado pelo mecanismo de busca: aplicaes em Ajax (consequentemente as aplicaes em GWT) no so bem indexadas por mecanismos de busca. Pelo fato do mecanismo de busca no aceitar Javascript, s conseguem enxergar a pgina bsica que faz a hospedagem da aplicao Ajax, no conseguem ter uma viso dinmica dos elementos que dependem do Javascript. No degradam de forma suave: Isso reflete o fato de quando os usurios das aplicaes desabilitam o Javascript, eles s conseguem visualizar a pgina
9 Quirks: o modo como os navegadores interpretam o CSS. (PEREIRA, 2005)
29
bsica, se tornando obrigatrio habilita-lo para que sua aplicao possa ser utilizada. Falta de transparncia na separao entre o cdigo e estilo/layout: isso, objetivamente, o fato dos estilos e aparncias estarem sendo utilizado no cdigo Java, ou seja, o GWT no serve para designers, pois estes preferem utilizar em suas aplicaes HTML puro, com locais de insero de contedos dinmico. 2.5.1 Arquitetura GWT Segundo (SMEETS, BONESS e BANKRAS, 2009), o GWT pode ser divido em trs partes principais, sendo que a ultima tem vrias subdivises: Compilador de Java para Javascript: Essa parte a mais importante do GWT, o mecanismo principal de sua existncia. Isso faz com que o GWT se torne uma ferramenta poderosa para desenvolvimento de aplicaes RIAs. O compilador faz com que todo cdigo desenvolvido em Java seja traduzido para Javascript. Biblioteca de emulao JRE: Trabalhar com Javascript totalmente diferente do processo de desenvolver em Java, portanto, para que o processo de compilao de Java para Javascript funcione, preciso emular os construtores e classes do ncleo Java, da maneira que isso tudo possa ser traduzido para um cdigo que consiga executar Javascript. Biblioteca de gerao UI: Essa parte do GWT dividida em vrias partes. Isso todo o cdigo base fornecido pelo GWT, incluindo os componentes UI, suporte RPC, e gerenciamento do histrico entre outros. Quanto aos itens, o primeirose refere ao elemento principal do GWT, que o compilador Javascript, a histria sobre o desenvolvimento do GWT, comeou quando a Google iniciou o desenvolvimento de aplicaes RIA, e acabou por ter alguns problemas ao decorrer do desenvolvimento. Acabaram por fazer uma anlise de qual seria a melhor maneira de desenvolver aplicaes RIAs e acabaram por decidir em fazer o GWT, sendo que a ideia principal seria que a aplicao fosse desenvolvida com a linguagem Java. O maior desafio foi desenvolver um compilador que conseguisse transformar Java em Javascript, e tambm que o desenvolvedor no se preocupasse com os diferentes navegadores. No final, acabaram 30
conseguindo desenvolver o GWT com todos esses requisitos fundamentais para sua utilizao. (SMEETS, BONESS e BANKRAS, 2009) O compilador um programa Java que pode ser iniciado rodando a classe com.google.gwt.dev.GWTCompiler. Uma das partes fundamentais do compilador, que ao contrario do compilador Java normal, ele s compilar o cdigo que realmente utilizado dentro do mdulo, evitando gerar para o cliente cdigo Javascript no utilizado. O problema disto que no permitido o carregamento das classes em tempo de execuo, por no serem compiladas para Javascript, por isso necessrio que o cdigo seja referenciado de alguma forma para que possa ser includo em tempo de execuo. (SMEETS, BONESS e BANKRAS, 2009) Para finalizar, a Figura 12 um exemplo do que gerado pelo compilador quando cdigo Java traduzido para Javascript.
Figura 12 - Sada gerada pelo compilador O principal fator a se notar que nesta sada os resultados da compilao so vrios arquivos Javascript, que so um para cada plataforma suportada. O exemplogwt.nocache.js tem a responsabilidade de carregar o arquivo correto para cada plataforma. A segunda parte se refere a biblioteca de emulao JRE, que dividida em duas partes, a primeira lidar com o suporte da linguagem Java para saber o que pode e o que no pode utilizar para a compilao para Javascript, j a segunda parte se refere as classes que so emuladas pelo GWT. 31
Sobre o suporte a linguagem, pode-se utilizar toda extenso Java para desenvolver aplicaes que sero compiladas para Javascript pelo GWT, mais existem algumas diferenas que so importantes no desenvolvimento da aplicao, a baixo a lista dessas observaes: Suporte a Long: O Javascript no tem representao de Long nas suas especificaes de linguagem, portanto no ter como passar um cdigo Long do cdigo Java para os mtodos Javascript Native Interface (JSNI). Tratamento de excees: funcionam como em todas aplicaes Java, mais existem duas excees que precisam ser informadas, primeiro, o mtodo getStackTrace no retorna nada de til quando est rodando como Javascript, segundo, as excees default, como Null Pointer Execept e OutOfMemoryError no ser incluso no cdigo, ou seja, o desenvolvedor ter de fazer uma verificao de Null por conta prpria. Thread nico: os interceptadores do Javascript so mono-thread, ento a aplicao tambm ser. Portanto, os mtodos que so relacionado a thread e palavras chaves (exemplo synchronized), no tero utilidade nenhuma, e ser ignorado pelo compilador GWT. Sem reflexo: No existe a possibilidade de carregar classes dinamicamente por reflexo, pelo fato do compilador GWT ter que saber sobre cada classe e mtodo desenvolvido na aplicao, para poder criar um arquivo Javascript para cada plataforma. Em relao s classes emuladas, pode-se utilizar quase toda a linguagem Java para desenvolver a aplicao, mais como Javascript trabalha de maneira diferente de Java, existem algumas observaes. (SMEETS, BONESS e BANKRAS, 2009) Para saber quais classes podem ser usadas, basta verificar se as classes utilizadas so emuladas pelo GWT, e mesmo para estas classes emuladas, s pode usar os mtodos que tambm so emulados pelo GWT. Os exemplos das classes que podem ser usadas so as dos pacotes Java.lang e Java.util, alm de algumas do subconjunto Java.io e Java.sql. (SMEETS, BONESS e BANKRAS, 2009) At agora foi mostrado as restries que o desenvolvedor enfrente utilizando GWT, mais a ltima parte referente a Biblioteca UI, possui vrios subconjuntos, como dito anteriormente, esses subconjuntos facilitam o trabalho, abaixo exemplos dos subconjuntos: Widgets e Layout: Grande parte no desenvolvimento de uma aplicao RIA na verdade a criao da interface. No nvel mais bsico, isso se reflete na 32
utilizao de widgets e criando a interface referente a cada um. Portanto, uma grande parte do GWT consiste de componentes e classes relacionadas a layout. Comunicao com Servidor: Quase todas as aplicaes GWT, precisam de algum tipo de back end para buscar e armazenar dados, e tambm processar alguma ao. Para isso, o GWT utiliza um mecanismo de RPC para comunicao com o servidor Java. Suporte a Testes: Uma das vantagens no desenvolvimento de uma aplicao GWT em relao a aplicaes normais do Ajax, que o cdigo escrito pode ser facilmente testado. Pode ser usado as melhores prticas em relao a testes unitrios, e tambm para alguns casos, o GWT fornece testes com o framework de testes JUnit. 2.5.2 Criao de um Projeto que Utilize GWT O apndice B demonstra como instalar e criar um projeto com GWT ser exemplificado passo a passo a criao, foi utilizado para este exemplo a IDE Eclipse SDK. 2.5.3 Estrutura do Projeto Uma aplicao desenvolvida em GWT consiste de um conjunto de mdulos, que um pacote GWT constitudo por cdigo Java, Javascript, arquivos HTML, imagens, definio de dados e o que preciso para um aplicativo Web. Quando criado a estrutura de diretrio GWT no eclipse, ela baseada na estrutura do mdulo GWT que ele implementa. (CHU-CARROL, 2012) Inicialmente, pode-se analisar a estrutura do projeto criado como exemplo da Figura 13, que se trata de uma aplicao onde o usurio manda uma mensagem para o servidor, e este responde com informao enviada pelo cliente. No Projeto, h um conjunto de bibliotecas GWT, um diretrio fonte com o nome de src e tambm um diretrio de destino com o nome de war. 33
Figura 13 - Estrutura Projeto GWT O diretrio fonte dividido em trs partes: a declarao do mdulo, o pacote de cdigo Java ao lado do cliente, e tambm o pacote Java ao lado do servidor. O pacote do lado do servidor identificado com o nome com.exemplo. projetoGWT.server, ilusoriamente simples, pelo fato do GWT gerar a parte interna no servidor. O cliente constitudo por trs arquivos. A CriandoProjetoGWT classe principal da aplicao, as outras duas classes chamada de GreetingService e GreetingServiceImpl fazem parte da configurao para a chamada de procedimento remoto GWT, essas duas classes definem as declaraes necessrias que o GWT precisa para permitir que seja desenvolvido aplicativos cliente/servidor AJAX sem precisar configurar explicitamente o XMLHttpRequests. A maneira que essas trs parte se juntam configurada na declarao do modulo, que neste exemplo est no pacote com.exemplo.projetoGWT com o nome de CriandoProjetoGWT.gwt.xml. A Figura 14 o exemplo do mdulo. 34
Figura 14 - Mdulo GWT O elemento rename faz a manipulao da URL do GWT, por exemplo o GWT informara o servidor que a URL terminara com o nome criandoprojetogwt. Os mdulos podem herdar propriedades de outros mdulos, sendo semelhante com herana em orientao a objetos. O aplicativo um submdulo de com.google.gwt.user.User, que um mdulo padro para interface de usurio. A grande parte dos componentes, o mecanismo de chamada de procedimento remotos e tambm a infraestrutura bsica dos servlets no servidor, herdada com est declarao. Parte do motivo que o GWT possui herana e tambm mdulos, fato do GWT poder criar herana com arquivos CSS que definem a aparncia dos componentes da aplicao, ou seja, pode-se alterar a aparncia do aplicativo herdando de um mdulo de estilo diferente. Toda aplicao GWT precisa de um ponto inicial que semelhante a uma funo main. Neste exemplo, a classe CriandoProjetoGwt. No mdulo precisa ser informado qual o ponto inicial da aplicao. Em um mdulo GWT, a parte de interface do usurio definida em um arquivo HTML, este arquivo no considerado cdigo fonte, por isso no colocado no diretrio src, e sim no war. um recurso esttico que ter informaes que sero utilizadas pelo cdigo. A Figura 15 o arquivo HTML deste exemplo. 35
Figura 15 - Arquivo HTML Como pode ser visto, um arquivo HTML padro, comeando com a declarao da tag HTML padro, e tambm do doctype, alm dos blocos de cabealho com os rtulos comuns. A tag <script> a parte mais importante do arquivo HTML, nela que referenciado o arquivo Javascript gerado pelo compilador, neste caso o arquivo chamado de criandoprojetogwt.nocache.js. Todo o cdigo Java gerado na classe inicial que pode ser visto da Figura 16, ser retornado dento da tag <body>, poderia tambm colocar algum componente com um id especifico e referencia-lo na classe EntryPoint Java. 36
Figura 16 - Classe EntryPoint
A classe de ponto inicial seria equivalente a uma funo main, definindo, como um programa principal em um programa no GUI. A funo main retratada no mtodo onModuleLoad, como o prprio nome reflete, o mtodo chamado quando o mdulo GWT invocado pelo cliente, neste mtodo que criado a interface grfica da aplicao, e tambm a configurao de eventos dos componentes. A primeira coisa a fazer no mtodo onModuleLoad criar os widgets da interface grfica. A maneira de se trabalha no parece nem um pouco com o desenvolvimento de aplicaes Web comuns, se identificando com programao estilo Desktop. O GWT oferece para o desenvolvedor um contexto GUI que o contedo da pgina HTML, chamado de rootpanel. Neste exemplo, foi acessado o 37
diretrio raiz do arquivo, invocando RootPanel.get(), passando o componente VerticalPanel populado com um label e um button. Se acontecer da pgina da aplicao conter elementos e estes estejam identificados por um id, ento basta utilizar a chamada com get(id). At agora foi mostrado toda a estrutura bsica para a criao da interface grfica em GWT, o que falta demonstrar como funciona a parte de cliente/servidor em GWT. O cdigo Ajax utilizado na comunicao cliente/servidor no escrito explicitamente em GWT, em vez disso feito uma chamada de procedimento remoto (RPC). (CHU- CARROL, 2012) O RPC se parece com uma chamada normal de mtodo, mais quando invocada traduzida pelo GWT em uma solicitao do cliente para o servidor, o valor do retorno do RPC a resposta do servidor para o cliente. Como em qualquer outra aplicao RPC, existe um lado cliente e outro servidor em GWT. (CHU-CARROL, 2012) Tradicionalmente, o RPC tenta se parecer com uma chamada ao uma funo local, ou seja, se fosse chamar uma funo fatorial, por exemplo, seria parecido como uma declarao tradicional de uma funo, o mesmo se repete para a sua chamada. (CHU-CARROL, 2012) Para a aplicao desenvolvida de exemplo, h uma chamada remota, onde o cliente envia uma mensagem para o servidor, e este retorna a mesma como resposta. Inicialmente criada uma interface sncrona para os mtodos do servio, conforme a Figura 17. De modo um pouco estranho, a interface escrita no pacote ao lado do cliente, pois o GWT sempre focado no cliente, e este ser o usurio da interface, de maneira que fica localizada no cliente.
Figura 17 - Chamada Remota A anotao RemoteServiceRelativePath, se refere ao caminho do servio em relao a URL raiz, ou seja, se o aplicativo estiver no endereo http://gwt.exemplo.com/CriandoProjetoGWT, ento o servio estar disponvel no endereo http://gwt.exemplo.com/CriandoProjetoGWT/greet; 38
Toda a interface de servio deve estender a interface GWT com.google.gwt.user.client.rpc.RemoteService, quando estendido, est sendo informado que a interface desenvolvida e para servios GWT, e assim sendo o GWT sabe que o cdigo Java criado deve ser traduzido para Javascript; Uma observao importante que qualquer parmetro utilizado em mtodo de servio deve estender de java.lang.Serializable ou tambm a variante especfica de GWT com.google.gwt.user.client.rpc.IsSerializable; Alm de criar uma interface sncrona, precisa ser criado uma assncrona. Para isto basta criar outra interface, que seria uma traduo direta da interface sncrona, os mtodos contidos nela devem estar exatamente com o mesmo nome e tipo de retorno, alm de adicionado um parmetro final, que um AsynCallback, a Figura 18 o exemplo da interface assncrona.
Figura 18 - Interface Assncrona A interface assncrona no tem ligao alguma com a sncrona, e tambm no precisa usar nenhuma anotao ou herdar alguma classe especial, ela usada apenas no cliente, os mecanismos de ligao entre as interfaces so feitas pelo GWT, o nico propsito desta fornecer ao cliente uma interface de chamada. No lado do servidor em GWT apenas implementado a interface sncrona feita no cliente, isto feito estendendo RemoteServiceServlet, a Figura 19 o exemplo da interface RPC no lado do servidor. 39
Figura 19 - Interface no Lado do Servidor A anotao @SuppressWarnings existe porque a serializao posteriores da mquina virtual Java usa identificadores para cada verso de classe, por exemplo, se existir alguma classe que implemente de java.lang.Serializable, e esta classe no tiver um identificador de verso, na execuo do programa o Java retornara um aviso, por isso, est anotao impede que o compilador retorne uma mensagem confusa de advertncia. Na parte ao lado do servidor apenas isto que deve ser implementado. 2.5.4 SmartGWT Ao longo dos ltimos anos bibliotecas de componentes foram surgindo e melhorando significativamente as aplicaes Web, SmartGWT uma biblioteca baseada em GWT(Google Web Toolkit) que fornece um conjunto amplo e avanado de componentes para interface de usurio, licenciado pelos termos comercias LGPL, SmartGWT tambm oferece recursos DataSources para utilizar com seus componentes. DataSource so a base da arquitetura SmartGWT. Um DataSource descreve seu modelo de dados de uma maneira muito semelhante a SQL. No DataSource definido os campos, seus tipos, validaes, mascara para os valores, ente outros. Alm da biblioteca de componente, o SmartGWT oferece tambm um conjunto de bibliotecas no lado do servidor que o SmartGWT Enterprise Edition (EE), que so varias ferramentas para construir uma aplicao completa em uma arquitetura Web moderna. O SmartGWT Enterprise Edition (EE) pode ser integrado com qualquer aplicao pr-existente. (SMARTCLIENT, 2008) 40
No desenvolvimento da aplicao foi utilizado a biblioteca de componentes SmartGWT. No estudo ser desenvolvido um comparativo entre o modo de desenvolvimento GWT utilizando a biblioteca de componentes SmartGWT.
41
3 MATERIAL E MTODOS As duas aplicaes foram desenvolvidas com a plataforma IDE Eclipse SDK na verso Helios Release 3. Foi utilizada a verso 6 do Java Development Kit (JDK), e como Servidor Web foi usado Apache Tomcat na sua verso 7. A criao dos diagramas de casos de uso, diagrama de atores, diagrama de sequncia, foram realizados com a ferramenta Astah Community 6.2.1. A elaborao do banco de dados das aplicaes foi feito com a Ferramenta Mysql Workbench 5.2. E o banco de dados utilizado foi MySql Server 5.0. Para o desenvolvimento da aplicao com GWT, foi utilizada a biblioteca SmartGWT 3.1, que possui vrios componentes para a construo de interface grficas. 3.1 DESCRIO DO PROJETO O projeto desenvolvido tem o objetivo de realizar uma anlise comparativa entre os dois frameworks. Consiste em uma aplicao que tem o intuito de controlar o histrico do desenvolvimento de uma criana. Este histrico ter todas as informaes que foram obtidas nas consultas realizadas pelo mdico. Alguns exemplos do que vai ser armazenado nas consultas so: peso, altura, presso arterial, batimentos cardacos. A aplicao tambm ter dois grficos para apresentar as informaes da evoluo da altura e peso da criana. 3.2 REQUISITOS FUNCIONAIS O sistema ter os seguintes requisitos funcionais: Realizar a manuteno do cadastro de usurios. Realizar a manuteno do cadastro de crianas. Registrar consultas. Gerar grficos para anlise do desenvolvimento das crianas. Este grfico ser um demonstrativo de como a criana est evoluindo, os pontos a serem analisados so: peso e a altura. 42
3.3 CASOS DE USO O diagrama de casos de uso da aplicao pode ser visto na Figura 20.
Figura 20 - Diagrama de Casos de Uso O diagrama de caso de uso do sistema tem dois usurios: Administrador que pode realizar qualquer operao no sistema, e o usurio Mdico que s pode gerenciar os cadastros das crianas que responsvel, e tambm as consultas realizadas por ele com as crianas no qual est vinculado. Para gerar o grfico de peso ou altura necessrio identificar qual criana vai ser analisada no grfico, por isso a existncia da ligao include, (NOGUEIRA, 2011) define include como: essa notao usada para representar sub-fluxos complexos e comuns a vrios casos de uso, sempre usados, isto , necessrios. 3.3.1 DESCRIO DOS CASOS DE USO Neste capitulo ser exibido s descries de cada caso de uso representado na Figura 20, sendo possvel ter uma melhor anlise do funcionamento da aplicao. Caso de uso: Manter Usurio Atores: Administrador Fluxo Principal: 1 O Administrador faz login no Webapp; 43
2 Acessa o menu de cadastro de usurios; 3 Caso pesquisar: 3.1 Acessa a aba de pesquisa; 3.2 Informa os parmetros da pesquisa; 3.3 Clica em pesquisar. 4 Caso incluir: 4.1 Preenche o formulrio de cadastro; 4.2 Clica em gravar. 5 Caso editar: 5.1 Pesquisa o usurio (item 3); 5.2 Clica no boto editar; 5.3 Altera os dados necessrios; 5.4 Clica em gravar. 6 Caso excluir: 6.1 Pesquisa o usurio (item 3); 6.2 Clica no boto excluir; Tratamento de excees: 4 Login j existente. 4.1 O sistema apresenta uma mensagem avisando que o login j est em uso; 4.2 O funcionrio informa outro login; 4.3 Volta-se ao fluxo normal. 5 Registro utilizado. 5.1 O sistema apresenta uma mensagem avisando que o registro no pode ser excludo pois est sendo utilizado em outra parte do sistema; 5.2 Encerra-se o fluxo. Quadro 1 - Manter Usurio Caso de uso: Manter Criana Atores: Administrador, Mdico Fluxo Principal: 1 O usurio faz login no Webapp; 2 Acessa o menu de cadastro de crianas; 3 Caso pesquisar: 3.1 Acessa a aba de pesquisa; 44
3.2 Informa os parmetros da pesquisa; 3.3 Clica em pesquisar. 4 Caso incluir: 4.1 Pesquisa o mdico responsvel e a me da criana; 4.2 Preenche o restante das informaes; 4.3 Clica em gravar. 5 Caso editar: 5.1 Pesquisa a criana (item 3); 5.2 Clica no boto editar; 5.3 Altera os dados necessrios; 5.4 Clica em gravar. 6 Caso excluir: 6.1 Pesquisa a criana (item 3); 6.2 Clica no boto excluir; Tratamento de excees: 4 Me no cadastrada. 4.1 O usurio registra a me da criana; 4.2 Volta-se ao fluxo normal. 6 Registro utilizado. 6.1 O sistema apresenta uma mensagem avisando que o registro no pode ser excludo, pois est sendo utilizado em outra parte do sistema; 6.2 Encerra-se o fluxo. Quadro 2 - Manter Criana Caso de uso: Manter Consulta Atores: Administrador, Mdico Fluxo Principal: 1 O usurio faz login no Webapp; 2 Acessa o menu de cadastro de consulta; 3 Caso pesquisar: 3.1 Acessa a aba de pesquisa; 3.2 Informa os parmetros da pesquisa; 3.3 Clica em pesquisar. 4 Caso incluir: 45
4.1 Pesquisa a criana que vai ser consultada; 4.2 Preenche o restante das informaes; 4.3 Clica em gravar. 5 Caso editar: 5.1 Pesquisa a consulta (item 3); 5.2 Clica no boto editar; 5.3 Altera os dados necessrios; 5.4 Clica em gravar. 6 Caso excluir: 6.1 Pesquisa a consulta (item 3); 6.2 Clica no boto excluir; Tratamento de excees: 5 Criana no cadastrada. 5.1 O usurio registra criana; 5.2 Volta-se ao fluxo normal.
Quadro 3 - Manter Consulta Caso de uso: Gerar Grfico Peso Atores: Administrador, Mdico Pr-condies: Criana identificada Ps-condies: Grfico gerado Fluxo Principal: 1 O usurio faz login no Webapp; 2 Acessa a aba para gerar grfico peso; 3 Seleciona a criana a ser analisada; 4 Clica no boto para gerar o grfico; 5 aberta uma subpgina com o grfico gerado; Quadro 4 - Gerar Grfico Peso Caso de uso: Gerar Grfico Altura Atores: Administrador, Mdico Pr-condies: Criana identificada 46
Ps-condies: Grfico gerado Fluxo Principal: 6 O usurio faz login no Webapp; 7 Acessa a aba para gerar grfico Altura; 8 Seleciona a criana a ser analisada; 9 Clica no boto para gerar o grfico; 10 aberta uma subpgina com o grfico gerado; Quadro 5 - Gerar Grfico Altura 3.4 DIAGRAMA DE SEQUNCIA Aps analisar a definio dos atores do sistema, os requisitos funcionais e o digrama de casos de uso da Figura 20, possvel se ter uma ideia de como o sistema vai funcionar. O diagrama de sequncia deste captulo vai dividir em trs cenrios a funcionalidade manter consulta. UFCG, (2010), define o digrama de sequncia como: Consiste em um diagrama que tem o objetivo de mostrar como as mensagens entre os objetos so trocadas no decorrer do tempo para a realizao de uma operao. Os trs cenrios a serem demonstrados no caso de uso manter consulta so: Registrar Consulta: Ilustra os passos a serem executados para realizar o cadastro de uma consulta;
Figura 21 - Digrama de Sequncia Cadastrar Consulta 47
Editar Consulta: Demonstra como o usurio realiza a edio de uma consulta;
Figura 22 - Diagrama de Sequncia Editar Consulta Excluir Consulta: Detalha os passos a serem seguidos para excluir uma consulta;
Figura 23 - Diagrama de Sequncia Excluir Consulta 3.5 DIAGRAMA DE CLASSES O diagrama de classes tem o objetivo de demonstrar a estrutura da aplicao, por meio de suas classes e relaes. A Figura 24 o exemplo do diagrama de classe da aplicao 48
Figura 24 - Diagrama de Classes 3.6 DIAGRAMA DE CONTEDO (RVORE DE DADOS) A Figura 25 retrata o diagrama de contedo do sistema na viso do usurio administrador, que tem o objetivo de demonstrar todas as informaes que podem ser acessadas na aplicao. 49
Figura 25 - Diagrama de Contedo 3.7 NSU O NSU (Navigation Semantic Unit) pode ser entendido como um conjunto de informaes e estrutura de navegao que auxiliam no entendimento de todo o processo de navegao da aplicao pelos usurios do sistema, no exemplo da figura 26 existem dois usurios no sistema, cada um com determinado nvel de acesso, o usurio administrador pode acessar todas as informaes na rea administrativa da aplicao, j o usurio Mdico no pode ter acesso manuteno usurio, a figura tambm demonstra como est estrutura de acesso das paginas da aplicao, informando atravs das setas o relacionamento entre o acesso. 50
Figura 26 - NSU da aplicao 3.8 WIREFRAME O Wireframe um desenho bsico que ilustra como ser o design da aplicao quando desenvolvida, tem o intuito de demonstrar apenas o essencial. Segundo PINHEIRO, (2011) Os wireframes tm como funo simular visualmente a estrutura organizacional das informaes de uma interface, sem a preocupao de apresentar uma interface grfica final. A Figura 27 retrata o Wireframe da aplicao desenvolvida na viso do usurio administrador: 51
Figura 27 - Wireframe Aplicao 3.9 ESTRUTURA DA APLICAO As duas aplicaes desenvolvidas tem sua estrutura muito parecidas conforme Figura 28, apresentam praticamente s mesmas classes e estrutura de pacotes, a grande diferena se encontra na maneira como o GWT trabalha. No GWT criado um pacote client onde contm toda a estrutura de cdigo referente parte de visualizao, exemplos como: formulrios, tabelas, validaes e entre outros, e o pacote server que contm todas as classes e mtodos de persistncia da aplicao, necessrio criar classes especificas para comunicao do cliente com o servidor. 52
Figura 28 - Estrutura Aplicao GWT ao lado esquerdo, ao lado direito estrutura da aplicao no Vaadin No Vaadin no preciso criar classes para a comunicao e ter essa diviso lgica entre cliente e servidor, pois sua programao se baseia ao lado do servidor, ou seja, toda a interface do Vaadin construda no servidor e enviada para o cliente.
53
4 RESULTADOS E DISCUSSES Neste captulo sero analisados os principais fatores no desenvolvimento da aplicao em cada um dos frameworks avaliados. Quando escolhido um framework para desenvolver alguma aplicao so levados em considerao vrios aspectos, alguns so produtividade e a qualidade que estes frameworks levam ao desenvolvedor no decorrer do processo de desenvolvimento, por isso, se torna essencial uma anlise desses pontos antes de se iniciar um projeto. 4.1 FATORES ANLISADOS PARA O COMPARATIVO Os fatores analisados para realizar a anlise comparativa entre os frameworks foram separados em dois aspectos: parte prtica e parte terica. Na parte prtica os pontos levados foram os que causaram maior trabalho e estudo dos frameworks durante o desenvolvimento da aplicao, que so: Desenvolvimento de Formulrios; Desenvolvimento de Tabelas; Validao de dados; Criao de grficos para a anlise de desenvolvimento da criana; Diferenas entre o modo de desenvolvimento GWT e Vaadin; Em relao parte terica foram levados em considerao os seguintes requisitos: Licena dos Frameworks; Documentao e Atualizaes; Quantidade de componentes disponveis para utilizao; 4.2 DESENVOLVIMENTO DO FORMULRIO O exemplo a seguir demonstra como foi desenvolvido o formulrio de cadastro de criana utilizado o Framework Vaadin e a biblioteca SmartGWT. 54
4.2.1 Vaadin O Vaadin oferece uma maneira muito simples e produtiva para a criao. No Vaadin os campos do formulrio podem ser criados a parir dos atributos de uma classe, necessrio encapsular o objeto da classe em um Data Model e atribu-lo para o formulrio, a vantagem disso que o desenvolvedor no precisa criar todos os campos do formulrio, necessrio apenas vincular o objeto da classe no qual quer criar o formulrio no adaptador BeanItem (Data Model), conforme a Figura 29. Outra vantagem que o prprio formulrio gerencia os campos, no sendo necessrio ter o controle de cada um deles.
Figura 29 - BeanItem Classe Crianca A Figura 30 demonstra como foi desenvolvido o formulrio de cadastro da classe criana. Alguns aspectos interessantes na criao foram possibilidade de posicionar os campos no formulrio conforme o desejado, atribuir espaamento entre eles, incluir uma classe responsvel por validados os dados de cada campo e tambm escolher quais campos sero exibidos no formulrio.
Figura 30 - Formulrio de cadastro Criana A Figura 31 ilustra como ficou o formulrio de cadastro de crianas da aplicao utilizando o Framework Vaadin. 55
Figura 31 - Formulrio Vaadin 4.2.2 SmartGWT Com a biblioteca SmartGWT a maneira de desenvolver bem diferente comparando com Vaadin, preciso utilizar mais cdigo para a criao do formulrio. SmartGWT no oferece uma opo para poder vincular a classe com um Data Model e liga-lo com o formulrio, necessrio criar todos os campos, existe tambm uma opo para criar todos os campos e vincula-lo com um DataSource e liga-lo com o formulrio, mas neste exemplo no foi utilizado esse mtodo de desenvolvimento, foram criados todos os campos desejveis e adicionados direto no formulrio, a diferena que agora no mais o formulrio que gerencia os campos da aplicao, preciso validar diretamente o campo. A Figura 32 ilustra como foi criado uma parte do formulrio com SmartGWT. 56
Figura 32 - Formulrio SmartGWT Como pode ser analisado, com SmartGWT utilizado muito mais cdigo, a Figura 32 representa apenas uma parte do formulrio criado, faltaram a criao de alguns campos e detalhes da criao do formulrio, outra opo que Vaadin oferece em seus ShowCases o componente de layout para ajustar os campos no formulrio de maneira produtiva, o SmartGWT no oferece nenhum componente produtivo para este tipo de problema. A biblioteca SmartGWT oferece alguns componentes interessantes para seus campos, que o caso de poder colocar cones ao lado dos campos, no formulrio desenvolvido foi utilizado um cone de pesquisa para selecionar o mdico responsvel pela criana, a Figura 33 mostra como ficou o formulrio com a biblioteca SmartGWT. 57
Figura 33 - Formulrio SmartGWT 4.3 DESENVOLVIMENTO DE TABELA Neste exemplo demonstrado como foi implementado a parte de pesquisa da tela de consulta. 4.3.1 Vaadin A maneira de se trabalhar com o componente do tipo tabela utilizando o Framework Vaadin se assemelha com o modo como feito o formulrio do exemplo anterior. Os dados contidos na tabela so gerenciados por um Data Model, ou seja, a tabela ligada diretamente com o Data Model. No exemplo da Figura 34 foi criado um container BeanItemContainer (Data Model) da classe Consulta, este container contm todos os atributos da classe, que so identificados pelo seus nomes. O container sabe os tipos de cada atributo atravs dos mtodos getters e setters da classe, tornando obrigatria a classe ser publica para conseguir enxergar o tipo dos atributos. 58
Figura 34 - BeanItemContainer Vaadin Uma das vantagens de utilizar a classe BeanItemContainer para gerenciar os campos que ele aceita receber uma lista com os valores da consulta pesquisada, tornando sua utilizao muito produtiva. Outro fator importante que no componente da tabela aceita que os valores de seus campos sejam formatados atravs de seu tipo, conforme Figura 35.
Figura 35 - Formatando Campo Data Vaadin A Figura 36 ilustra como foi desenvolvida a tabela com o framework Vaadin. Uma observao importante a possibilidade de escolher quais campos sero exibidos, informando a descries de suas respectivas colunas. 59
Figura 36 - Tabela de Consulta A Figura 37 retrata como ficou a tabela desenvolvida com o framework Vaadin:
Figura 37 - Exemplo Tabela Vaadin 4.3.2 SmartGWT A maneira de criar tabela com a biblioteca SmartGWT muito diferente comparando com o Framework Vaadin. Com SmartGWT no existe uma opo para criar um container com as propriedade de uma classe e liga-lo com a tabela. No SmartGWT obrigatrio criar campo a campo com suas caractersticas, gerando maior esforo e menos produtividade na criao da tabela. 60
Existem varias maneiras de desenvolver tabelas com SmartGWT, o modo usado foi utilizando a classe ListGridRecord que um objeto contendo valores para cada ListGridField que adicionado na tabela, a Figura 38 ilustra a classe ListGridRecord utilizada.
Figura 38 - Classe ListGridRecord O objeto ListGridField o que vai ser adicionado como coluna na tabela, obrigatoriamente tem que ser identificado com o mesmo nome de propriedade do objeto da classe ListGridRecord para ser identificado e exibido os valores na tabela, a Figura 39 retrata como foi criada a tabela de consulta com SmartGWT.
Figura 39 - Tabela de Consulta SmartGWT Um mecanismo interessante que a biblioteca SmartGWT oferece para os componentes grid em seus ShowCases o de filtro automtico das informaes contidas na tabela, no qual 61
no foi utilizado, pois a pesquisa era realizada diretamente no banco de dados no nas informaes que tinha na tabela. A Figura 40 ilustra como ficou a tabela desenvolvida com SmartGWT.
Figura 40 - Tabela SmartGWT 4.4 VALIDAO DE DADOS Neste exemplo ser mostrado como foi desenvolvido a parte de validao dos dados no cadastro de usurio. 4.4.1 Vaadin O Framework Vaadin disponibiliza uma classe para customizar e validar todos os campos do formulrio. A Classe se chama DefaultFieldFactory, atravs da propriedade do campo na qual pertence o formulrio adicionado a validao desejada e customizado conforme o necessrio, por exemplo, possvel criar campos TextField, ComboBox, DateFiel, PasswordField, entre outros. A classe ligada ao formulrio conforme a Figura 41.
Figura 41 - Validao Usurio A classe UsuarioValidacoes da Figura 41 estende a classe DefaultFieldFactory. As validaes e customizaes dos campos realizado na classe 62
UsuarioValidacoes, a Figura 42 retrata a customizao e validao de alguns campos do formulrio.
Figura 42 - Validando e Customizando Campos Vaadin O framework Vaadin disponibiliza vrios tipos de validao, alguns exemplos so: campo obrigatrio, validao no tamanho do campo, mscara e permitir apenas nmero inteiro, entre outros. Um dos benefcios poder colocar mensagem para as validaes tornando intuitivo para o usurio, a Figura 43 exemplo do formulrio de cadastro de Usurio sendo validado. 63
Figura 43 - Validao Cadastro de Usurio 4.4.2 SmartGWT Com a biblioteca SmartGWT a maneira de realizar a customizao e validao das informaes diferente. Existem varias maneiras de validar itens com a biblioteca, isso depende de como foi criado o formulrio, no caso deste exemplo a validao foi colocada a cada campo criado e adicionado customizao desejada, conforme o exemplo da Figura 44, a biblioteca oferece uma maneira muito produtiva para validar alguns tipos de campo, um exemplo permitir apenas o usurio a digitar nmeros em campos numricos, no permitindo outro tipo de informao. 64
Figura 44 - Validao SmartGWT Um ponto negativo da biblioteca so os componentes utilizados para validar dados, por exemplo, com o Framework Vaadin possvel colocar mensagens intuitivas e retornar mensagens ao lado do campo validado conforme a Figura 43, a biblioteca SmartGWT no possui este tipo de validao, a sua maneira de validar retornando apenas um cone ao lado do campo, conforme Figura 45. 65
Figura 45 - Validando Formulrio SmartGWT 4.5 CRIAO DE GRFICO Neste exemplo ser abordado como foi desenvolvido o grfico de desenvolvimento da altura da criana. 4.5.1 Vaadin O Framework Vaadin disponibiliza uma biblioteca muito produtiva para o desenvolvimento de grfico. A biblioteca chamada de DChart e est disponvel para a verso 6.8 em diante, est biblioteca baseada no plugin jqPlot. O plugin jqPlot licenciado pela GPL e MIT, este plugin disponibiliza vrios tipo de grfico com layout extremamente intuitivo, alm de ser de fcil entendimento para o desenvolvimento. No exemplo desenvolvido com o Framework Vaadin, foi criado um grfico de linhas, a biblioteca oferece vrios recursos e modelos interessantes para a criao de grficos, basta analisar e escolher qual se encaixa melhor para o uso. O interessante da biblioteca os recursos que ela oferece, um deles o efeito visual no tracejado informando em qual valor aquele ponto se encaixa, e tambm uma linha no grfico que demonstra a mdia de desenvolvimento no geral, facilitando a anlise do mdico, demonstrando como a criana est evoluindo perante determinado perodo comparando com a mdia, conforme Figura 46. 66
Figura 46 - Grfico Altura Vaadin Outro ponto interessante na biblioteca o fato de seus recursos de efeito da Figura 56 ser de fcil entendimento ao desenvolvedor, alm de permitir que os nmeros e datas sejam formatados conforme o desejado, a Figura 47 ilustra como foram colocados os efeitos e formatados os valores do grfico.
Figura 47 - Exemplo Grfico Vaadin 4.5.2 SmartGWT A biblioteca SmartGWT tambm oferece recursos para o desenvolvimento de grficos. Comparando com o framework Vaadin oferece menos recursos visuais para se trabalhar, por exemplo, a biblioteca SmartGWT no possui nenhum recurso de efeito para melhor 67
visualizao, e tambm menos diversidade em seus ShowCases, mais seus componentes so amigveis para o usurio, e fcil implementao para o desenvolvedor, em poucas linhas de cdigo possvel se desenvolver um grfico com a biblioteca, a Figura 48 demonstra como foi criado o grfico com SmartGWT.
Figura 48 Exemplo de Cdigo SmartGWT O exemplo de como ficou o grfico na aplicao Web pode ser visto na Figura 49.
Figura 49 - Grfico Altura SmartGWT 4.6 DIFERENAS ENTRE VAADIN E GWT Vaadin e GWT tm uma arquitetura de funcionamento diferente, a programao no Vaadin voltada para o servidor, por exemplo, quando criado uma tela com o Framework, est tela montada no servidor e enviada para o cliente que exibe a mesma, existe um mecanismo no Vaadin para que a interao entre cliente e servidor seja em AJAX, tornando a interao assncrona e intuitiva para o usurio. Esta maneira de programao do Vaadin torna o framework muito produtivo comparando com GWT, pelo fato de no se preocupar com a criao de classes para a comunicao cliente e servidor, pois com Vaadin tudo feito no servidor. A classe que estende de Application o que da inicio a aplicao com o framework Vaadin, aps criar 68
esta classe j possvel iniciar o desenvolvimento de toda a aplicao no mtodo init, sem se preocupar com outra linguagem alm de Java, tornado o desenvolvimento muito parecido com Desktop, a Figura 50 o exemplo da classe Application da aplicao no Vaadin.
Figura 50 - Classe Application Vaadin O GWT tem uma arquitetura voltada para o cliente, toda a estrutura de cdigo desenvolvida no cliente e compilada em Javascript, o GWT abstrai o possvel a programao no lado do servidor. Para a comunicao entre cliente e servidor, o GWT utiliza RPC, que traduzindo significa chamada de procedimento remoto, ou seja, o cliente faz uma requisio para um servio situado em outro endereo. A maneira que o GWT trabalha com RPC vista do seguinte modo: Primeiramente declarada a interface sncrona no cliente com os mtodos que devem ser implementados no servidor, a interface GreetingService da Figura 51 o exemplo na aplicao;
Figura 51 - Interface Sncrona 69
A interface RemoteService utilizada para identificar quais so os servios GWT. Com isso o GWT sabe que o cdigo Java criado deve ser traduzido para Javascript; A Classe GreetingServiceImpl a implementao da interface GreetingService que est situada no cliente. Nela contm a implementao de todos o servios declarados na interface GreetingService. A Figura 52 o exemplo de uma parte da classe GreetingServiceImpl implementada no Servidor.
Figura 52 - Classe GreetingServiceImpl A classe RemoteServiceServlet da Figura 52 um HttpServlet portanto contm todos os mtodos doGet e doPost, todo servio implementado em GWT deve ser uma subClasse de RemoteServiceServlet; Alm de criar uma interface sncrona, precisa ser criado uma assncrona, que serve como um mecanismo de chamada na requisio dos servios. Para isto basta criar outra interface, que seria uma traduo direta da interface sncrona, os mtodos contidos nela devem estar exatamente com o mesmo nome e tipo de retorno, alm de adicionado um parmetro final, que um AsynCallback. Est interface assncrona serve para que a aplicao no fique congelada a espera da reposta quando um servio for invocado, desta maneira o cliente pode executar outras tarefas na aplicao, a Figura 53 o exemplo da interface assncrona da aplicao;
70
Figura 53 - Interface Assncrona Como pode ser visto desenvolver com GWT muito mais trabalhoso. Com Vaadin no necessrio declarar interfaces e implementar classes para a comunicao cliente e servidor, pois sua arquitetura de programao voltada para o servidor, basta iniciar o desenvolvimento da aplicao no mtodo init da classe que estende de Application, tornando o desenvolvimento da aplicao muito mais produtivo comparando com GWT. 4.7 LICENA DOS FRAMEWORKS Uma das consideraes que so levadas adiante e podem decidir para a escolha de um framework, a questo de seu licenciamento. Alm disso, importante analisar se sua licena gratuita oferece recursos necessrios para desenvolver uma aplicao de grande porte. Tanto Vaadin como GWT so gratuitos e licenciados pela Apache 2.0. No Vaadin existem alguns componentes de terceiros que so gratuitos e podem ser utilizados com o framework. O GWT apresenta vrias extenses para se utilizar, uma delas a biblioteca SmartGWT, na qual foi utilizado seus componentes durante o desenvolvimento da aplicao. A Biblioteca SmartGWT possui licenas pagas, e uma gratuita a LGPL Edition, na qual apresenta um conjunto completo de componentes, todas as licenas possuem a mesma quantidade de componentes no lado do cliente, o que muda so os recursos a serem usados no lado do servidor, no qual no houve necessidade de uso. 71
Como dito acima, os frameworks utilizados na aplicao possuem licena gratuita, na qual oferecem recursos necessrios para se desenvolver uma aplicao, sem se preocupar em comprar alguma extenso ou mesmo a licena. 4.8 DOCUMENTAO E ATUALIZAES Outro fator levado em extrema considerao para a boa escolha de um framework se ele possui atualizaes constantes e uma boa documentao para se trabalhar. Pois se no possui mais investimento para atualizaes, a partir do momento que o mercado passar a oferecer solues modernas e novas tcnicas, o framework utilizado na aplicao no vai oferecer esses novos recursos. Outra questo se o framework possui uma boa documentao para se trabalhar, pois quando tiver alguma duvida ou problema no decorrer do processo de desenvolvimento necessrio se ter algum material, ou mesmo, uma documentao para apresentar exemplos com recursos no uso do framework. Neste quesito, os frameworks Vaadin e GWT apresentam atualizaes constantes, e uma tima documentao, no site do Vaadin possvel baixar o livro com toda sua documentao, e exemplos de como funciona sua arquitetura e seus componentes. A nica desvantagem do Vaadin em relao ao GWT o fato de apresentar pouco material em portugus. A Biblioteca SmartGWT tambm possui atualizaes constantes, alm de apresentar uma comunidade ativa e uma boa documentao. 4.9 COMPONENTES DISPONIVEIS Um dos fatores importantes para a escolha de um determinado framework se o mesmo possui uma vasta quantidade de componentes para o uso, ou seja, se sua biblioteca consegue resolver todos os problemas encontrados no decorrer do processo de desenvolvimento da aplicao. Outra questo se esses componentes so customizados de uma maneira produtiva ao desenvolvedor. O framework Vaadin apresenta diversos componentes, a grande vantagem do seu uso que os componentes so customizados de uma maneira agradvel, apresentam uma arquitetura de se trabalhar produtiva. Com o framework GWT, foi utilizado a biblioteca SmartGWT para desenvolver toda a parte grfica da aplicao, pois utilizar GWT puro no traz vantagem alguma, tornando o 72
desenvolvimento muito trabalhoso. A Biblioteca SmartGWT tambm possui uma diversidade de componentes para se trabalhar. A diferena que seus componentes no so produtivos comparando com os do framework Vaadin, e so menos agradveis para o usurio final comparando com Vaadin.
73
5 CONSIDERAES FINAIS O trabalho desenvolvido foi baseado no estudo de dois frameworks para desenvolvimento Web. Foram desenvolvidas duas aplicaes, na qual apresentam as mesmas funcionalidades e com aparncia muito semelhante, os frameworks utilizados foram Vaadin e GWT com a biblioteca SmartGWT. 5.1 CONCLUSO Com o desenvolvimento dessas duas aplicaes foi possvel realizar uma anlise comparativa entre os dois frameworks. Nesta anlise, foram demonstradas as partes mais importantes enfrentadas no decorrer do processo de desenvolvimento, apontando quais as vantagens e desvantagens de cada um. Atravs da anlise dos fatores, chega-se concluso de que o framework Vaadin melhor em vrios aspectos comparando com GWT e a extenso SmartGWT. No desenvolvimento de formulrios, tabelas e validao de dados, possui uma arquitetura de programao muito mais produtiva, com Vaadin permitido criar tabelas e formulrios atravs de um Data Model que ligado com a classe criando todos os campos automaticamente. Com SmartGWT preciso criar todos os campos tornando o processo de desenvolvimento muito trabalhoso, utilizando muito mais classes e cdigo para criar uma simples formulrio ou uma simples tabela. Outra desvantagem do GWT o fato de apresentar uma arquitetura robusta, ou seja, se precisar fazer uma pequena tarefa com o framework, se torna muito trabalhoso e pouco produtivo comparando com Vaadin. Com GWT preciso criar classes e interfaces para a comunicao cliente e servidor, j com Vaadin isso no necessrio. 5.2 TRABALHOS FUTUROS/CONTINUAO DO TRABALHO O presente trabalho demonstrou como se trabalhar com um framework para desenvolvimento web que foca apenas na linguagem Java, para trabalhos no futuro abriu as consideraes para pesquisar mais frameworks que trabalham dessa maneira, outra questo 74
que o GWT possui diversas extenses para se utilizar, um ponto importante seria realizar um comparativo entre estas extenses. Outra questo adicionar mais funcionalidades para aplicao desenvolvida, por exemplo, a me da criana ter acesso ao sistema e verificar como foram as consultas de seu filho.
75
6 REFERNCIAS BIBLIOGRFICAS BALZER, C. E.; BATALHA, G.; FERRASA, A. ESTUDO COMPARATIVO ENTRE FRAMEWORKS PARADESENVOLVIMENTO DE RIAs. ESTUDO COMPARATIVO ENTRE FRAMEWORKS PARADESENVOLVIMENTO DE RIAs, 2010. CAELUM. Desenvolvimento gil para a. In: CAELUM Desenvolvimento gil para a., 2011. p. 85-86. CSAR EDENIR BALZER, G. B. A. F. ESTUDO COMPARATIVO ENTRE FRAMEWORKS PARADESENVOLVIMENTO DE RIAs. ESTUDO COMPARATIVO ENTRE FRAMEWORKS PARADESENVOLVIMENTO DE RIAs, 2010. CHU-CARROL, M. C. Cdigo na Nuvem Programao do Google App Engine. [S.l.]: Cincia Moderna, 2012. GONALVES, D. B.; VAHL, J. C. J. Web 2.0 Frameworks de desenvolvimento. Web 2.0 Frameworks de desenvolvimento, 2010. MAGALHES, . Globalcode. Globalcode, 07 jul. 2009. Disponivel em: <http://www.globalcode.com.br/noticias/EntrevistaGWT>. Acesso em: 12 dez. 2012. MELLO, M. PUCPR. PUCPR, 2010. Disponivel em: <http://www.las.pucpr.br/mcfmello/BD/BD-Aula02-MER.pdf>. Acesso em: 18 fev. 2013. MOTA, L. C. frameworkdemoiselle. frameworkdemoiselle, 05 maio 2010. Disponivel em: <http://www.frameworkdemoiselle.gov.br/menu/framework/sobre/>. Acesso em: 12 dez. 2012. NOGUEIRA, A. Linha de Cdigo. Linha de Cdigo, 2011. Disponivel em: <http://www.linhadecodigo.com.br/artigo/987/uml-unified-modeling-language-esteriotipo- include-esteriotipo-extend-esteriotipo-realize.aspx>. Acesso em: 17 fev. 2013. ORACLE. Oracle. Oracle, 2010. Disponivel em: <http://www.oracle.com/technetwork/java/index-jsp-135475.html>. Acesso em: 06 dez. 2012. PEREIRA, H. C. Revolucao. Revolucao, 31 ago. 2005. Disponivel em: <http://revolucao.etc.br/archives/o-que-e-quirks-mode/>. Acesso em: 12 dez. 2012. PINHEIRO, G. UOL. UOL, 18 mar. 2011. Disponivel em: <http://webinsider.uol.com.br/2011/03/18/cinco-ferramentas-para-a-producao-de- wireframes/>. Acesso em: 19 fev. 2013. PRADA, R. tecmundo. tecmundo, 2008. Disponivel em: <http://www.tecmundo.com.br/hardware/210-o-que-e-plugin-.htm>. Acesso em: 01 mar. 2013. 76
SMARTCLIENT. SmartClient. SmartClient, 2008. Disponivel em: <http://www.smartclient.com/technology/>. Acesso em: 20 fev. 2013. SMEETS, B.; BONESS, U.; BANKRAS, R. Programando Google Web Toolkit Do Iniciante ao Profissional. [S.l.]: ALTA BOOKS, 2009. SOUZA, M. V. B. D. Estudo Comparativo entre Frameworks Java. In: SOUZA, M. V. B. D. Estudo Comparativo entre Frameworks Java. [S.l.]: [s.n.], 2004. p. 6-11. TERRA. Terra. Tera, 2007. Disponivel em: <http://www.terra.com.br/informatica/ajuda/seguranca/tipos_script.htm>. Acesso em: 01 fev. 2013. UFCG. http://www.dsc.ufcg.edu.br. http: //www.dsc.ufcg.edu.br, 2010. Disponivel em: <http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/uml/diagramas/interacao/sequencia.ht m>. Acesso em: 18 fev. 2013. ULLMAN, C. Site da wrox. Disponivel em: <http://www.wrox.com/WileyCDA/Section/What-is-Ajax-.id-303217.html>. Acesso em: 01 dez. 2012. VAADIN. Book of Vaadin: 4th Edition. [S.l.]: [s.n.], 2012.
77
APNDICES
78
APNDICE A Para instalar o framework Vaadin no eclipse, acesse o menu Help/Install new software coloque a URL http://vaadin.com/eclipse, conforme Figura 54.
Figura 54 - Instalando Vaadin Aps isso selecione o pluguin do Vaadin e finalize a instalao, conforme Figura 55.
Figura 55 - Selecionando o pluguin Para criar um projeto no Vaadin preciso: Primeiramente, selecione o menu File, new Project. Aps ir a new Project, pesquise a pasta Vaadin e selecione Vaadin Project.
Figura 56 - Criando um Projeto Vaadin 79
Na parte de criar o projeto Vaadin, preciso definir as configuraes bsicas do projeto Web. No Quadro 6, explicao do que serve cada campo da Figura 57.
Figura 57 - Configurao Projeto Valor Descrio Project Name Informa o nome desejado para o Projeto Use Default Define o diretrio padro para o Projeto, normalmente se deixa com o valor pr-estabelecido. Target runTime Define qual servidor de aplicao ser utilizado no projeto. Configuration Define a configurao a utilizar, normalmente deve-se usar a configurao padro do servidor de aplicao. Deployment Configuration Define o ambiente no qual o aplicativo ser implantado Vaadin Version Selecione a verso do vaadin a utilizar, pode ser realizado o download da ultima verso Quadro 6 - Descrio dos Valores na Criao de um Projeto Vaadin A prxima etapa configurar o Web Module, que as configuraes relacionada estrutura do projeto Web. Normalmente, deve-se aceitar as configuraes padres estabelecidas, no Quadro 7 uma breve descrio de cada valor da Figura 58. 80
Figura 58 - Web Module Valor Descrio Context Root Identifica qual URL a aplicao vai acessar quando executada, por padro o nome da URL o mesmo que o nome do projeto. Content Diretory Diretrio que contm todo o contedo a ser includo no servlet e servido pelo servidor Web Generate Web.xml deployment descriptor Informa se deseja que seja criado o arquivo Web.xml, descritor necessrio para executar o servlet Quadro 7 - Descrio dos Valores Web Module A ultima etapa so as configuraes especficas da aplicao, essas configuraes podem ser mudadas no decorrer do desenvolvimento do projeto, exceto a configurao de portlet. O Quadro 8 descreve os valores da Figura 59. 81
Figura 59 - Configurao Especfica Valor Descrio Create Project Template Define se quer ou no que crie a aplicao com um exemplo. Application Name Nome para ser exibido no navegador quando a aplicao for executada, por padro selecionado o mesmo nome do projeto. Base Package name O nome do pacote em que a classe de exemplo ser criada. Application class name Nome da classe de exemplo a ser criada Portlet Quando essa opo for selecionada, o assistente criar os arquivos necessrios para executar o aplicativo em um Portlet. Quadro 8 - Configurao Especfica Quando terminado todas essas configuraes, clique em finish e ser criada toda a estrutura do projeto, e tambm um pequeno exemplo de uma aplicao.
82
APNDICE B
Para instalar o framework GWT no eclipse, verifique qual a verso do eclipse est sendo utilizado, no caso desse exemplo a IDE Eclipse SDK na verso Helios Release 3. Acesse o menu Help/Install new software coloque a URL http://dl.google.com/eclipse/plugin/3.6, conforme Figura 60.
Figura 60 - Instalando GWT Aps isso selecione o pluguin do GWT e finalize a instalao, conforme Figura 61.
Figura 61 - Selecionando pluguin GWT Para criar um projeto com GWT realize os seguintes passos: Para criar um novo projeto, primeiramente, acesse o menu File >> new; Pesquise a pasta Google, e clique em Web Application Project. 83
Figura 62 - Criando um Projeto GWT A prxima etapa a configurao da aplicao, a Figura 63 o exemplo da criao do projeto, no Quadro 9 descreve os valores da Figura 63; 84
Figura 63 - Configura a Aplicao GWT Valor Descrio Project Name Nome do Projeto Package Pacote onde estar a classe raiz da aplicao Location Localizao do Projeto Google SDKs Define qual GWT ser utilizado e qual engine dever ser usado Sample Code Ser criado uma aplicao de exemplo Quadro 9 - Configurando a aplicao GWT Aps isso, clique em finish e ser criada uma aplicao de exemplo, para executa-la basta clicar com o boto direito ao lado do projeto e acessar run >> Web application, a Figura 64 o exemplo da aplicao. 85