DESENVOLVIMENTO WEB UTILIZANDO JAVA ENTERPRISE EDITION (JAVA EE) Marcelo Augusto Lobo da Paz1 , Jaime William Dias1 1 Universidade Paranaense (Unipar) Paranavaı́ – PR – Brasil [email protected], [email protected] Resumo. Este artigo aborda as tecnologias utilizadas na produção de softwares para a WEB, tem como objetivo apresentar uma visão do desenvolvimento ágil e produtivo utilizando a tecnologia Java na plataforma Java 2 Platform Enterprise Edition (Java EE). Para tal foram utilizados os métodos de pesquisas em livros, artigos, sites da internet e e-books, tendo como finalidade expressar de uma forma bem clara e objetiva do mesmo. Com o resultado do trabalho foi possı́vel observar que a utilização da plataforma Java 2 Platform Enterprise Edition (Java EE) em conjunto a suas especificações proporciona um desenvolvimento robusto de forma ágil, sem se preocupar com grande parte de código de infraestrutura, que demandaria muito trabalho, garantindo um maior gerencimanto da aplicação. 1. Introdução O Java EE (Java Enterprise Edition) consiste de uma série de especificações bem detalhadas, dando uma receita de como deve ser implementado um software que faz cada um desses serviços de infraestrutra. Veremos no decorrer desse artigo vários desses serviços e como utilizá-los, focando no ambiente de desenvolvimento web através do Java EE. Veremos também conceitos muito importantes, para depois conceituar termos fundamentais como servidor de aplicação e container [Caelum 2015] O Java EE são várias especificações que quando implementadas, que auxiliam o desenvolvimento da uma aplicação, além de não se preocupar com código grande, sendo ele um grande PDF, uma especificação, mostrando quais fazem parte deste. Para que possamos usar algum software, terı́amos que baixar uma implementação dessas descrições. Exemplo o Glassfish, desenvolvida pela Sun/Oracle, é um servidor open source e gratuito, porém não é o lı́der de mercado apesar de ganhar força nos últimos tempos [Caelum 2015]. O objetivo desse artigo é mostrar que a plataforma Java EE, é uma maneira de desenvolver aplicações Java de grande porte, com suporte a escalabilidade, flexibilidade e segurança. Simplificar e facilitar a codificação de aplicativos por parte dos desenvolvedores. Para isso foi desenvolvido uma aplicação Web, utilizando a plataforma Java EE e suas especificações, por exemplo JSF (JavaServer Faces) é um framework web baseado em Java que tem como objetivo simplificar o desenvolvimento de interfaces (telas) de sistemas para a web, através de um modelo de componentes reutilizáveis. 2. Metodologia Para o desenvolvimento do trabalho foram utilizados os métodos de pesquisas em livros, artigos, sites da internet e e-books, tendo como finalidade expressar de uma forma bem clara e objetiva todos os requisitos. Com a aquisição do conhecimento adquirido foi desenvolvido uma aplicação WEB utilizando a plataforma Java EE onde foi obtido resultados positivos na sua implementação. 3. Desenvolvimento 3.1. A plataforma Java EE A plataforma Java EE (Java Enterprise Edition) é uma plataforma criada para servidores com aplicações web, desenvolvida na linguagem de programação Java. Essa tecnologia consiste em um sistema de multicamadas que dá suporte a componentes de apresentação (JSF, Servlet), auxilia na utilização de componentes de regra de negócio e também componentes de persistência no banco de dados como o EJB (Enterprise Java Beans), suporta também a conexão com o banco de dados, e possibilita maior flexibilidade da arquitetura do projeto de forma bem mais simples, isso feito através do gerenciamento da camada de controle da aplicação. A arquitetura de um software consiste na definição de seus componentes, as propriedades externamente visı́veis destes elementos e os relacionamentos entre eles, enfatizando a separação dos interesses [Bass et al. 2003]. O Java EE domina atualmente o mercado, a figura 1 foi tirado de uma pesquisa independente do site zeroturnaround.com publicada em junho de 2016, mostra que a plataforma Java EE em suas versões chega a cinquenta e oito por cento de utilização pelos desenvolvedores. Figura 1. A figura mostra o percentual de utilização da plataforma Java EE em suas versões, pesquisa publicada em junho de 2016 (Fonte: zeroturnaround.com [2016]). 3.2. Como o Java EE pode ajudar As aplicações Web de hoje em dia já possuem regras de negócio bastante complicadas. Codificar essas muitas regras já representam um grande trabalho. Além dessas regras, conhecidas como requisitos funcionais de uma aplicação, existem outros requisitos que precisam ser atingidos através da nossa infraestrutura: persistência em banco de dados, transação, acesso remoto, web services, gerenciamento de threads, gerenciamento de conexões HTTP, cache de objetos, gerenciamento da sessão web, balanceamento de carga, entre outros. São chamados de requisitos não-funcionais. O Java EE consiste de uma série de especificações bem detalhadas, dando uma receita de como deve ser implementado um software que faz cada um desses serviços de infraestrutra[Caelum 2015]. 3.3. Vantagens do Java EE A ideia é que você possa criar uma aplicação que utilize esses serviços de infraestrutura. Como esses eles são bem complicados, você não perderá tempo implementando essa parte do sistema. Existem implementações tanto open source quanto pagas, ambas de boa qualidade. Algum dia, você pode querer trocar essa implementação atual por uma que é mais rápida em determinados pontos, que use menos memória, etc. Fazendo essa mudança de implementação você não precisará alterar seu software, já que o Java EE é uma especificação muito bem determinada. O que muda é a implementação da especificação: você tem essa liberdade, não está preso a um código e a especificação garante que sua aplicação funcionará com a implementação de outro fabricante [Caelum 2015]. 3.4. Algumas especificações do Java EE As APIs a seguir são as principais dentre as disponibilizadas pelo Java Enterprise: • JavaServer Pages (JSP), Java Servlets, Java Server Faces (JSF) (trabalhar para a Web, onde é focado este curso) • Enterprise Javabeans Components (EJB) e Java Persistence API (JPA). (objetos distribuı́dos, clusters, acesso remoto a objetos etc) • Java API for XML Web Services (JAX-WS), Java API for XML Binding (JAXB) (trabalhar com arquivos xml e webservices) • Java Autenthication and Authorization Service (JAAS) (API padrão do Java para segurança) • Java Transaction API (JTA) (controle de transação no contêiner) • Java Message Service (JMS) (troca de mensagens assı́ncronas) • Java Naming and Directory Interface (JNDI) (espaço de nomes e objetos) • Java Management Extensions (JMX) (administração da sua aplicação e estatı́sticas sobre a mesma) JSP e Servlets são sem dúvida as especificações essenciais que todo desenvolvedor Java vai precisar para desenvolver com a Web. Mesmo usando frameworks e bibliotecas que facilitam o trabalho para a Web, conhecer bem essas especificações é certamente um diferencial, e fará com que você entenda motivações e dificuldades, auxiliando na tomada de decisões arquiteturais e de design. 3.5. Servidor de Aplicação Servidor de aplicação é um software que fornece um ambiente para a execução das aplicações, de forma padronizada para acesso a recursos Java EE. Alguns dos servidores de aplicação mais conhecidos do mercado: • RedHat, JBoss Application Server; • Sun, GlassFish. • Apache, Apache Geronimo; • Oracle/BEA, WebLogic Application Server; • IBM, IBM Websphere Application Server; • Sun, Sun Java System Application Server (baseado no GlassFish); • SAP, SAP Application Server; 3.6. Servlet Container Um Servlet Container é um servidor que suporta essas funcionalidades, mas não necessariamente o Java EE completo. É indicado a quem não precisa de tudo do Java EE e está interessado apenas na parte web (boa parte das aplicações de médio porte se encaixa nessa categoria) [Caelum 2015]. O Java EE possui várias especificações, entre elas, algumas especı́ficas para lidar com o desenvolvimento de uma aplicação Web: • JSP - Java Server Page é uma tecnologia baseada em Java que simplifica o processo de desenvolvimento de sites da web dinâmicos.Com JSP, os designers da web e programadores podem rapidamente incorporar elementos dinâmicos em páginas da web, utilizando Java embutido e algumas tags de marcação simples.Estas tag(s) fornecem ao designer de HTML um meio de acessar dados e lógica de negócio armazenados em objetos Java sem ter que dominar as complexidades do desenvolvimento de aplicações [Pittella 2013]. • Servlets - Servlets são classes Java, desenvolvidas de acordo com uma estrutura bem definida que quando instaladas e configuradas em um Servidor que implemente um Servlet Container, podem tratar requisições recebidas de clientes Web, como por exemplo os Browsers. • JSTL - é o acrônimo de JavaServer Pages Standard Template Library, o qual podemos usar para recuperar dados de forma transparente usando como componente básico da JEE o qual é muito usado na programação pura [Eduardo 2015]. • JSF - Java Server Faces é um framework para desenvolvimento de aplicações web com Java que implementa o padrão Model View Controller (MVC), baseado na configuração de um controlador para o fluxo de informações entre as camadas de visão e web [Oracle 2015]. 4. Considerações Finais O desenvolvimento de aplicações WEB tem evoluı́do muito nos últimos anos, sempre utilizando novas tecnologias, buscando sempre trabalhar com uma arquitetura consistente e segura o bastante para adequar-se ao escopo do projeto e os requisitos do software que será desenvolvido, buscando sempre um produto computacional de qualidade. Nesse artigo pode-se ver que o desenvolvimento utilizando a plataforma Java Enterprise Edition (Java EE) é extremamente eficaz no que diz respeito a desenvolvimento com agilidade, flexibilidade e segurança, possibilitando simpliciar e facilitar a codificação de aplicações WEB. Assim, dentre as contribuições desse trabalho, foi desenvolvido uma aplicação WEB utilizando todos os recursos aprendido da plataforma Java EE onde foi obtido grande êxito. Como o desenvolvimento de aplicações WEB tem evoluı́do muito, hoje já existe frameworks bem mais robustas e de grande crescimento no mercado de desenvolvimento como por exemplo: Spring framework que tem tido muita aceitação, podendo deixar para trás a plataforma Java EE. Referências Bass, L., Clements, P., and Kazman, R. (2003). Software Architecture in Practice. Addison Wesley. Caelum (2015). apostila-java. Disponı́vel em: https://www.caelum.com.br/apostila-javaweb/, acessado em: 08/08/2016. Eduardo, C. (2015). Introdução - jstl - java. Disponı́vel em: http://www.devmedia.com.br/introducao-jstl-java/23582, acessado em 18/05/2016. Gonçalves, A. (2011). Introdução à Plataforma Java EE 6 com o Glassfish. Editora Ciência Moderna LTDA, Rio de Janeiro RJ. Netbeans.org (2013). Tutorial de e-commerce do netbeans: Introdução. Disponı́vel em: https://netbeans.org/kb/docs/javaee/javaee-intro.html, acessado em 18/05/2016. Oracle (2015). Javaserver faces technology overview. Disponı́vel em: http://www.oracle.com/technetwork/java/javaee/overview-140548.html, acessado em 12/07/2015. Pittella, F. (2013). O que é jsp? Disponı́vel em: http://javafree.uol.com.br/artigo/1409/Oque-e-JSP.html acessado em 05/08/2016.