SISTEMA DE GESTÃO DE PRODUÇÃO DE EVENTOS Rodrigo das Neves Wagner Luiz Gustavo Galves Mählmann Resumo: O presente artigo trata de um projeto de desenvolvimento de uma aplicação para uma produtora de eventos, que será elaborado em linguagem Java e que deve funcionar nos ambientes Web e Mobile, unindo essas duas plataformas. Seu intuito é o futuro desenvolvimento desse sistema de gestão de produção de eventos e, dentro da aplicação, será utilizado o módulo de preview de imagens como cenário para implantação da portabilidade de plataforma. Assim, a tecnologia Android será utilizada na criação de um aplicativo mobile que empregue o sistema a ser desenvolvido no projeto em questão. Palavras-chave: Java, Android, Mobile. Abstract: This article states about a development project of an application for an events producer enterprise, which will be created in Java language and that should work in Web and Mobile environments, combining these two platforms. The intention is the further development of this management of events production system and, within the application, the images preview module will be used as a background for platform portability implantation. So the Android technology will be used in creating a mobile application that employs the system that will be developed in this project. Key-words: Java, Android, Mobile. 1 Introdução Desenvolvimento de sistemas para plataformas distintas gera um grande esforço para a construção, atualmente não se tem grande aproveitamento de mão-de-obra dentre os projetos. Normalmente as empresas montam equipes distintas para o desenvolvimento dos sistemas e acabam elaborando dois ou mais projetos para chegar à solução proposta. Isto gera um desperdício de esforços, exige que mais pessoas tenham o domínio do negócio na hora da construção, gera retrabalhos consideráveis para equipe de desenvolvimento. Diante do cenário atual a proposta deste artigo é mostrar algumas ferramentas e expor o andamento do projeto que visa construir uma aplicação que seja reutilizada com o máximo de aproveitamento nos ambientes que atualmente estão em evidencia que são: Web e Mobile. A tecnologia Java será utilizada para a construção do Sistema de Gestão de Produção de Eventos que servirá como estudo prático da solução do trabalho. Além da tecnologia Java também será desenvolvido um aplicativo na plataforma Android que apresentará um módulo deste sistema que visa o publico dos dispositivos mobile. Acadêmico da disciplina de Trabalho de Conclusão de Curso I do Curso de Sistemas de Informação da Universidade Luterana do Brasil. Docente do Curso de Sistemas de Informação e da Universidade Luterana do Brasil e orientadora deste trabalho.
2 Objetivo O objetivo deste projeto é verificar a possibilidade de criação de aplicações executadas nos ambientes Web e Mobile e desenvolver um sistema de gestão de eventos na plataforma Web (JEE). Ele consiste em construir uma aplicação, criando um módulo de preview de imagens através da utilização de um framework que possibilite a reutilização em aplicativos móveis. Neste módulo do preview, o cliente terá acesso às imagens do sistema, onde poderá fazer seu aceite online. Dessa forma, o sistema irá automatizar e aperfeiçoar os processos, aumentando a agilidade no atendimento. 3 Desenvolvimento Para a melhor compreensão e explanação do processo de criação do sistema de gerenciamento de eventos abrangido no escopo deste trabalho, serão demonstrados abaixo conceitos-chave inerentes à arquitetura do sistema. Dessa maneira, devido à complexidade e, ao mesmo tempo, à atualidade do assunto abordado serão utilizados como referenciais documentações dos sites oficiais dos frameworks que serão detalhados, sites de desenvolvimento, fóruns de discussões e livros sobre algumas tecnologias Java. JEE 6 O Java EE (Enterprise Edition) é uma plataforma amplamente disseminada entre os desenvolvedores, que contém um conjunto de tecnologias coordenadas as quais reduzem significativamente o custo e a complexidade do desenvolvimento, implantação e gerenciamento de aplicativos de várias camadas centradas no servidor. O Java EE é construído sobre a plataforma Java SE e oferece um conjunto de APIs para desenvolvimento e execução de aplicativos portáteis, robustos, escaláveis, confiáveis e seguros no servidor. [NET12] Na especificação da JEE 6 contamos com o Java Persistence API (JPA 2.0), que é uma estrutura que permite aos desenvolvedores gerenciar os dados utilizando o mapeamento objeto-relacional (ORM) em aplicativos construídos na plataforma Java. Além da JPA, o JEE 6 acrescenta o CDI, que também é conhecido como Web Beans. A tecnologia JEE 6 oferece um serviço chamado de anotações que simplifica a implementação da aplicação web. A plataforma possui um conjunto dessas anotações que, por sua vez, facilitam a definição e o uso dos serviços web, o mapeamento das classes para XML, o mapeamento do banco de dados para as classes Java, dentre outras tarefas. O JavaServer Faces (JSF 2.0) está contido no pacote JEE 6, possuindo uma estrutura de interface de usuário que facilita muito o desenvolvimento de aplicações web. CDI A injeção de dependências e contexto, conhecida como CDI, define um conjunto de serviços para o ambiente JEE, que faz aplicações muito mais simples de serem desenvolvidas. As classes gerenciadas pelo CDI são chamadas beans. Dessa forma, o CDI é a parte integrante do JEE 6 que fornece uma arquitetura dos componentes Java EE, tais como servlets, beans corporativos e JavaBeans. Assim, ele é o
responsável pela existência desses componentes dentro do ciclo de vida de um aplicativo com seus respectivos escopos bem definidos. Os serviços do CDI permitem que os componentes do JEE, como o JavaServer Faces (JSF) e os Managed Beans, sejam injetados e interajam de uma forma mais flexível no sistema, pois ele permite que os beans corporativos atuem como beans gerenciados em uma aplicação JSF. O CDI provê o suporte transacional para camada web, o que facilita o acesso de recursos transacionais nessas aplicações. Ele também facilita a construção de uma aplicação JEE que acessa um banco de dados com persistência e que é fornecido pelo Java Persistence API. O framework em questão é também um padrão de injeção de dependências baseado em anotações. Ele é extremamente sofisticado neste sentido e facilita muito a testabilidade da sua aplicação fora do container, além de contar com extensões portáveis disponíveis para uso. No CDI, temos a possibilidade de injetar classes ou interfaces em outras classes Java. JSF JavaServer Faces (JSF) é um framework que possui uma estrutura de interface de usuário (UI ) para aplicativos Java Web. O JSF adota o modelo de desenvolvimento MVC (Model - View - Controller), o qual é atualmente o modelo de desenvolvimento considerado como padrão pela Engenharia de Software, uma vez que trabalha com três camadas físicas bem definidas, isto é, atua separando as camadas de controle, de lógica de negócio e de interface do usuário, permitindo desenvolver, testar e editar separadamente cada parte da aplicação. [JSF12] Atualmente, o JSF é considerado por muitos profissionais da área uma das melhores ferramentas de desenvolvimento de aplicações web, pois ela facilita significativamente a tarefa de escrever e construir os sistemas web. Em adição a isto, ele simplifica a construção de interfaces de usuário a partir de um conjunto de componentes reutilizáveis, torna mais acessível a migração dos dados da interface do usuário para os dados da aplicação, ajuda no gerenciamento do estado da interface do usuário através das solicitações do servidor e oferece um modelo simples de conectar os eventos gerados pela camada cliente ao código da aplicação. O JSF também permite a construção e personalização de componentes de interface de usuários de uma forma muito simples e reutilizável. PrimeFaces PrimeFaces é um conjunto de componentes leve de código aberto para JavaServer Faces 2.0 com mais de cem conjuntos de componentes JSF. É uma das bibliotecas de interface do usuário mais populares no universo Java e amplamente utilizado por empresas de software do mundo, empresas de marcas de renome, bancos, instituições financeiras, seguradoras, universidades e diversas outras organizações de grande porte. [PRIME12] É um framework que disponibiliza considerável documentação por meio de um guia de usuário com mais de 400 páginas sobre a ferramenta, além de contar com uma vasta comunidade, que proporciona um grande material disponível em fóruns de desenvolvimento e debate. Além disso, ele também oferece um kit de interface do usuário para o desenvolvimento de aplicações web móvel. PrimaFace Mobile
PrimeFaces Mobile é um framework de interfaces que serve para criar aplicações JavaServer Faces destinadas para dispositivos móveis. Dentre suas principais características, destacam-se: roda em cima do jquery Mobile; possui extensões do PrimeFaces; e funciona em diversas plataformas, tais como iphone, Android, Palm, Blackberry, Windows Mobile, entre outras. [PRIME12] jquery Mobile jquery Mobile é um framework para desenvolvimento web, otimizado para interação touch. Destinado à criação de aplicações web para smartphones e tablets. Seu desenvolvimento visa fornecer mecanismos capazes de criar sistemas unificados de interface de usuário, baseados em HTML5 e CSS3 e capazes de serem funcionais em todas as plataformas móveis, tendo como base de construção as bibliotecas jquery e jquery UI. A plataforma jquery Mobile fornece diversos eventos personalizados, permitindo que aplicações web realize ações especificas quando são utilizados por navegadores e dispositivos móveis. Sua abordagem procura atingir a compatibilidade com o maior numera de plataformas móveis possíveis. Hibernate O Hibernate é um framework de mapeamento objeto/relacional para Java. Ele transforma os dados tabulares de um banco de dados em um grafo de objetos definido pelo desenvolvedor. Usando o Hibernate, o desenvolvedor evita escrever muito do código de acesso ao banco de dados e do SQL que ele escreveria caso não utilizasse a ferramenta, acelerando a velocidade do seu desenvolvimento em níveis consideráveis. [HIBE12] Android É um sistema operacional criado pela Google e desenvolvido para dispositivos móveis (smartphone e tablet). Utiliza uma versão modificada do kernel do Linux, o que o torna um sistema muito estável e seguro. Suas aplicações são desenvolvidas na linguagem Java. Além do mais, possui uma grande comunidade, que proporciona um vasto conteúdo em discussões e fóruns de desenvolvimento, possuindo também sua documentação no site oficial. [ANDRO12] Android é um dos sistemas operacionais para smartphone que apresenta o maior crescimento nos últimos tempos. Ele possui um ótimo suporte para os desenvolvedores, pois a Google disponibiliza seu SDK - Software Development Kit -, isto é, ela oferece o kit completo de desenvolvimento do sistema: suas bibliotecas, seus depuradores e seus emuladores. Uma característica relevante do kit SDK do Android é a de que ele pode ser facilmente integrado com algumas IDE s, como o Eclipse. Eclipse O Eclipse é uma ferramenta de desenvolvimento que possui um conjunto de funcionalidades embutidas, que prove um modo mais fácil, pratico e iterativos de construir e manipular seu projeto. È um ambiente muito popular no desenvolvimento de aplicações Java. No Eclipse temos ferramentas como um editor de texto com facilitadores que agilizam a
escrita do código, também conta com compilador, editor gráfico para ajudar na criação das interfaces. Através do uso dessa ferramenta popular e gratuita, junto com o uso de plugins destinados ao desenvolvimento web, o estudante terá em mãos uma poderosa IDE para desenvolver os seus sistemas. [ECL12] 3 Metodologia Para elaboração da solução proposta no trabalho de conclusão de curso estão sendo utilizados sites de desenvolvimento, fóruns de discussões, especificações disponibilizados pelos sites oficiais dos frameworks trabalhados, alguns livros das tecnologias Java sugeridos nas pesquisas. MVC O MVC (Model-view-controller) é um padrão de arquitetura de software. Com a grande complexidade das aplicações tornou-se fundamental adotar uma metodologia que nos forneça uma estrutura organizada. Por este motivo é fundamental a separação entre os dados (Model) e o layout (View). Desta forma, alterações feitas no layout não afetam a manipulação de dados, e estes poderão ser reorganizados sem alterar o layout. O framework MVC inclui os seguintes componentes: Modelo - Objetos da camada modelo são as partes da aplicação que implementam a lógica de domínio de dados do aplicativo, esta camada contempla as regras de negocio da aplicação e a manipulação dos dados. View - A camada view são os componentes de interface do usuário (UI). Ela fica responsável pelas entradas e saídas das informações. Control - A camada Control refere-se aos controladores que são os componentes que lidam com a interação do usuário, o trabalho com o modelo e, finalmente, selecionar a fim de tornar essa exibe interface do usuário. Na figura 1, ilustra a comunicação das camadas do MVC. Figura 1: Comunicação das camadas do modelo MVC.
Em uma aplicação MVC, a camada de visão só exibe informações, o controlador manipula e responde à entrada do usuário e interação. Por exemplo, o controlador manipula seqüência de consulta de valores, e passa esses valores para o modelo, que por sua vez pode usar estes valores para consultar o banco de dados. O padrão MVC ajuda a criar aplicações que separam os diferentes aspectos da aplicação (entrada lógica, a lógica de negócio e lógica UI), enquanto fornece um acoplamento entre esses elementos. O padrão especifica onde cada tipo de lógica deve estar localizado na aplicação. A lógica da interface do usuário pertence a vista. Lógica de entrada pertence ao controlador. A lógica do negócio pertence ao modelo. Essa separação ajuda a gerenciar a complexidade, quando você cria um aplicativo, porque ele permite que você se concentrar em um aspecto da aplicação de cada vez. Por exemplo, você pode se concentrar na visão sem depender da lógica de negócios. O acoplamento entre as três camadas principais de uma aplicação MVC também promove o desenvolvimento paralelo. Por exemplo, um desenvolvedor pode trabalhar na camada de visualização (View), um segundo desenvolvedor pode trabalhar na lógica do controlador (Controler), e um desenvolvedor terceiro pode se concentrar na lógica de negócio no modelo (Model). 4 Conclusão Atualmente estamos tendo um grande crescimento no uso e na procura por dispositivos móveis, cada vez mais as pessoas querem ficar mais conectadas as tecnologias, acompanhando tudo de uma forma mais prática e rápida, também há um crescimento considerável nas empresas no desenvolvimento de aplicações mobile. Os dispositivos móveis estão chegando ao mercado com um valor bem acessível, o que favorece o crescimento deste mercado. Então é de grande relevância que o desenvolvimento de sistemas consiga unir e facilitar a construção das aplicações nestes ambientes de forma mais reutilizável possível, pois isto traz um grande beneficio em todas as partes envolvidas, construindo aplicações que suportem diversos ambientes com o mínimo de esforço no seu desenvolvimento. Acompanhar as tendências do mercado, se preocupando em agilizar a construção de aplicações que já pensem no suporte de mais de um ambiente, e principalmente algo que vem tomando conta do mercado de uma forma muito rápida. 6 Referencia Bibliográfica [PRIME12] PrimeFaces. On-line. Capturado em setembro de 2012. Disponível na Internet em: http://www.primefaces.org. [ANDRO12] Android. On-line. Capturado em setembro de 2012. Disponível na Internet em: http://www.android.com/. [MVC12] MVC. On-line. Capturado em agosto de 2012. Disponível na Internet em: http://www.oracle.com/technetwork/java/mvc-140477.html. [JSF12] JSF. On-line. Capturado em agosto de 2012. Disponível na Internet em: http://java.sun.com/javaee/javaserverfaces/. [HIBE12] Hibernate. On-line. Capturado em agosto de 2012. Disponível na Internet em: http://www.hibernate.org/7.htm. [ECL12] ECLIPSE. On-line. Capturado em agosto de 2012. Disponível por: http://www.eclipse.org/.
[NET12] JEE. On-line. Capturado em setembro de 2012. Disponivel por: http://netbeans.org/kb/trails/java-ee_pt_br.html. BASHAM, Bryan, Kathy Sierra & Bert Bates. Use A Cabeça! Servlets & JSP. Editora O'Reilly. MANN, Kito D. JavaServer Faces in Action. Editora Manning Publications.